about_Script_Blocks
应用到: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0
主题
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