主题
about_Script_Blocks
简短说明
定义什么是脚本块,并说明在 Windows PowerShell 编程语言中如何使用脚本块。
详细说明
在 Windows PowerShell 编程语言中,脚本块是语句或表达式的集合,可以作为一个单元使用。
脚本块可以接受参数并返回值。
从语法上来讲,脚本块是大括号中的语句列表,如以下语法所示:
{<statement list>}
脚本块会以单个对象或数组的形式返回脚本块中所有命令的输出。
与函数相似,脚本块可以包括参数。使用 Param 关键字可以分配命名参数,如以下语法所示:
{
param ([type]$parameter1 [,[type]$parameter2])
<statement list>
}
与函数不同,在脚本块中,不能在大括号之外指定参数。
与函数相似,脚本块可以包括 DynamicParam、Begin、Process 和 End 关键字。有关详细信息,
请参阅 about_Functions 和 about_Functions_Advanced。
使用脚本块
脚本块是 Microsoft .NET Framework 类型
(System.Management.Automation.ScriptBlock) 的实例。命令可以具有脚本块参数值。例
如,Invoke-Command cmdlet 的 ScriptBlock 参数的取值是脚本块,如下面的示例中所示:
C:\PS> invoke-command -scriptblock { get-process }
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
999 28 39100 45020 262 15.88 1844 communicator
721 28 32696 36536 222 20.84 4028 explorer
. . .
作为值使用的脚本块可能比较复杂,如下面的示例中所示:
C:\PS> invoke-command -scriptblock { param ($uu = "Parameter");
"$uu assigned."}
Parameter assigned.
上一示例中的脚本块使用 Param 关键字来创建一个具有默认值的参数。下面的示例
使用 Invoke-Command cmdlet 的 Args 参数为该参数赋予不同的值:
C:\PS> invoke-command -scriptblock {param ($uu = "Parameter");
"$uu assigned."} -args "Other value"
Other value assigned.
可以将脚本块赋给变量,如下面的示例所示:
C:\PS> $a = {param ($uu = "Parameter"); "$uu assigned."}
可以将变量用于 cmdlet(例如 Invoke-Command),如下面的示例所示:
C:\PS> invoke-command -scriptblock $a -args "Other value"
Other value assigned.
可以使用调用运算符 (&) 运行赋给变量的脚本块,如下面的示例所示:
C:\PS> &$a
Parameter assigned.
还可为脚本块提供参数,如下面的示例所示:
C:\PS> &$a "Other value"
Other value assigned.
如果要将脚本块创建的值赋给变量,请使用调用运算符直接运行脚本块,如下面的示例所示:
C:\PS> $a = &{param ($uu = "Parameter"); "$uu assigned."}
C:\PS> $a
Parameter assigned.
有关调用运算符的详细信息,请参阅 about_Operators。
另请参阅
about_Functions
about_Functions_Advanced
about_Operators