主题 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