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




目录