脚本

脚本是保存到文件的代码段,可以重复执行。

PowerShell脚本的后缀名是.ps1

运行脚本

假如已有一段脚本script.ps1,可以将其当作一般程序执行。

.\script.ps1

脚本的好处在于重复使用。

PowerShell可以使用相对目录和绝对目录,但是不能直接使用文件名。

如果想要直接使用脚本名称调用脚本,需要设置环境变量Path,将脚本所在目录加入。

直接使用名称的脚本名称不能是数字开头。

为脚本传递参数

在脚本文件中,可以使用和定义函数相似的方式定义参数。

脚本文件 008.02.ps1

param([int]$a,[int]$b)
$a+$b

使用脚本

.\008.01.ps1 -a 100 -b 200

使用时,就好像脚本是一个函数。

管道脚本

也可以将脚本当作管道函数。

脚本文件 008.02.ps1

param(
    [Parameter(ValueFromPipeline=$true)]
    $InputObject
)
process
{
    $InputObject
}

使用时,就好像脚本文件是一个管道函数

dir | ./008.02.ps1

脚本中的变量作用域

脚本中可以访问全局变量,改变其状态,但是进行的赋值操作不能影响到外部。

脚本中的变量是副本,赋值无效。

脚本中定义的变量,函数仅在脚本内部有效。

改变脚本的作用域

使用. 脚本路径的语法,可以更改脚本运行时的作用域。其中的变量、函数会在全局作用域运行。

脚本中的变量定义、修改以及函数会保留在全局作用域,就如同直接执行其中的命令一样。

script.ps1

$s = "hello"
function MyFunc()
{
    "MyFunc"
}

使用脚本

. .\script.ps1
$s
MyFunc

可以看到,保留了脚本中定义的变量和函数。

配置文件

配置文件时PowerShell启动时默认执行的一段脚本文件。

使用$profile变量可以查看路径。

如果文件不存在,可以自行创建。

在配置文件中可以设置别名,导入模块等初始化操作。