about_Language_Keywords

应用到: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

主题

about_Language_Keywords

简短说明

介绍 Windows PowerShell® 脚本语言中的关键字。

详细说明

Windows PowerShell 具有以下语言关键字。有关详细信息,请参阅该表之后的关键字和信息的 about 主题。

        Keyword            Reference
        -------            ---------
        Begin              about_Functions, about_Functions_Advanced
        Break              about_Break, about_Trap
        Catch              about_Try_Catch_Finally
        Continue           about_Continue, about_Trap
        Data               about_Data_Sections
        Do                 about_Do, about_While 
        DynamicParam       about_Functions_Advanced_Parameters
        Else               about_If 
        Elseif             about_If 
        End                about_Functions, about_Functions_Advanced_Methods
        Exit               Described in this topic.
        Filter             about_Functions
        Finally            about_Try_Catch_Finally
        For                about_For
        ForEach            about_ForEach
        From               Reserved for future use.
        Function           about_Functions, about_Functions_Advanced
        If                 about_If
        In                 about_ForEach
        InlineScript       about_InlineScript
        Parallel           about_Parallel, about_ForEach-Parallel
        Param              about_Functions
        Process            about_Functions, about_Functions_Advanced
        Return             about_Return
        Sequence           about_Sequence
        Switch             about_Switch
        Throw              about_Throw, about_Functions_Advanced_Methods
        Trap               about_Trap, about_Break, about_Try_Catch_Finally
        Try                about_Try_Catch_Finally
        Until              about_Do
        While              about_While, about_Do
        Workflow           about_Workflows

语言关键字

      Begin 
      -----

指定函数正文的一部分,以及 DynamicParam、Process 和 End 关键字。Begin 语句列表在从管道中接收任何对象前运行一次。

语法:

          function <name> { 
              DynamicParam {<statement list>}
              begin {<statement list>}
              process {<statement list>}
              end {<statement list>}
          }
      Break
      -----

导致脚本退出循环。

语法:

          while (<condition>) {
              <statements>
                   ...
              break 
                   ...
              <statements> 
          }
      Catch
      -----

指定语句列表要在附带的 Try 语句列表出错时运行。错误类型需要括号。第二对括号指示错误类型是可选的。

语法:

          try {<statement list>}
          catch [[<error type>]] {<statement list>}
      Continue
      --------

导致脚本停止运行循环并返回到条件。如果满足条件,脚本将再次开始循环。

语法:

          while (<condition>) {
              <statements>
                  ...
              continue 
                  ...
              <statements> 
          }
      Data   
      ----

在脚本中,定义将数据与脚本逻辑隔离的部分。还可以包含 If 语句和一些有限的命令。

语法:

      data <variable> [-supportedCommand <cmdlet-name>] {<permitted content>}
      Do   
      --

与 While 或 Until 关键字作为循环构造一起使用。和使用 While 的循环不同,Windows PowerShell 运行语句列表至少一次。

语法:

          do {<statement list>} while (<condition>)

          do {<statement list>} until (<condition>)
      DynamicParam
      ------------

指定函数正文的一部分,以及 Begin、Process 和 End 关键字。动态参数在运行时添加。

语法:

          function <name> { 
              DynamicParam {<statement list>}
              begin {<statement list>}
              process {<statement list>}
              end {<statement list>}
          }
      Else
      ----

与 If 关键字一起使用以指定默认语句列表。

语法:

          if (<condition>) {<statement list>}
          else {<statement list>}
      Elseif
      ------

与 If 和 Else 关键字一起使用以指定其他条件。Else 关键字是可选的。

语法:

          if (<condition>) {<statement list>}
          elseif (<condition>) {<statement list>}
          else {<statement list>}
      End
      ---

指定函数正文的一部分,以及 DynamicParam、Begin 和 End 关键字。End 语句列表在从管道中接收所有对象后运行一次。

语法:

          function <name> { 
              DynamicParam {<statement list>}
              begin {<statement list>}
              process {<statement list>}
              end {<statement list>}
          }
      Exit
      ----

导致 Windows PowerShell 退出脚本或 Windows PowerShell 实例。

当你运行“powershell.exe – File <path to a script>”时,你只能使用 exit 语句将 %ERRORLEVEL% 变量设置为零以外的值。在以下示例中,用户通过键入“exit 4”将错误级别变量值设置为 4。

          C:\Users\bruce\documents\test>type test.ps1
          1
          2
          3
          exit 4

          C:\Users\bruce\documents\test>powershell -file ./test.ps1
          1
          2
          3

          C:\Users\bruce\documents\test>echo %ERRORLEVEL%
          4

当你使用带有 File 参数的 powershell.exe 时,.ps1(脚本)文件本身应包含用于处理在脚本运行时发生的任何错误或异常的说明。你应仅将 exit 语句用于指示脚本的执行后状态。

语法:

          exit
          exit <exit code>
      Filter 
      ------

指定语句列表将在其中针对每个输入对象运行一次的函数。它与仅包含 Process 块的函数效果相同。

语法:

          filter <name> {<statement list>}
      Finally
      -------

定义在与 Try 和 Catch 相关联的语句后运行的语句列表。即使你按 CTRL+C 离开脚本或在脚本中使用 Exit 关键字,Finally 语句列表仍将运行。

语法:

          try {<statement list>}
          catch [<error type] {<statement list>}
          finally {<statement list>}
      For   
      ---

使用条件定义循环。

语法:

          for (<initialize>; <condition>; <iterate>) {<statement list>}
      ForEach
      -------

使用集合的每个成员定义循环。

语法:

          ForEach (<item> in <collection>){<statement list>}
      From
      -----

保留以供将来使用。

      Function
      --------

创建可重用代码的已命名语句列表。你可以命名函数所属的作用域。并且,你可以使用 Param 关键字来指定一个或多个命名的参数。在函数语句列表中,你可以包含 DynamicParam、Begin、Process 和 End 语句列表。

语法:

          function [<scope:>]<name> { 
              param ([type]<$pname1> [, [type]<$pname2>])
              DynamicParam {<statement list>}
              begin {<statement list>}
              process {<statement list>}
              end {<statement list>}
          }

你还可以选择在函数名称后的语句列表之外定义一个或多个参数。

语法:

          function [<scope:>]<name> [([type]<$pname1>, [[type]<$pname2>])] { 
              DynamicParam {<statement list>}
              begin {<statement list>}
              process {<statement list>}
              end {<statement list>}
          }
      If
      --

定义条件。

语法:

          if (<condition>) {<statement list>}
      In
      --

在 ForEach 语句中使用,以创建使用集合中每个成员的循环。

语法:

          ForEach (<item> in <collection>){<statement list>}
      InlineScript
      ------------

在共享 Windows PowerShell 会话中运行工作流命令。此关键字仅在 Windows PowerShell 工作流中有效。

语法:

          workflow <verb>-<noun>
          { 
              InlineScript
              {
                  <Command/Expression>
                  ...
              }
          }

InlineScript 关键字指示 InlineScript 活动,该活动在共享标准(非工作流)会话中运行命令。你可以使用 InlineScript 关键字来运行本来在工作流中无效的命令,并运行可共享数据的命令。默认情况下,InlineScript 脚本块中的命令在单独的进程中运行。

有关详细信息,请参阅 about_InlineScript 和“在工作流中运行 Windows PowerShell”(https://technet.microsoft.com/library/jj574197.aspx)。

      Param
      -----

定义函数中的参数。

语法:

          function [<scope:>]<name> {
              param ([type]<$pname1>[, [[type]<$pname2>]])
              <statement list>
          }
      Parallel
      --------

按未定义的顺序同时运行工作流命令。此关键字仅在 Windows PowerShell 工作流中有效。

Parallel 关键字指示 Parallel 脚本块。Parallel 脚本块中的命令可按任意顺序同时运行。此功能显著提升了工作流的性能。

语法:

          workflow <verb>-<noun>
          { 
              Parallel
              {
                  <Activity>
                  <Activity>
                  …            
              }
          }

ForEach 关键字的 Parallel 参数可并行处理集合中的项。脚本块中的活动在每个项上按顺序运行,但是脚本块可同时在多个项上运行,并且以未定义的顺序处理这些项。

语法:

          workflow <verb>-<noun>
          { 
              ForEach -Parallel (<item> in <collection>)
              {
                  <Activity>
                  <Activity>
                  ...
              }
          }

有关详细信息,请参阅 about_Parallel、about_ForEach-Parallel

      Process
      -------

指定函数正文的一部分,以及 DynamicParam、Begin 和 End 关键字。当 Process 语句列表接收管道中的输入时,Process 语句列表将针对管道中的每个元素运行一次。如果管道不提供对象,则 Process 语句列表不会运行。如果该命令是管道中的第一个命令,则 Process 语句列表将运行一次。

语法:

          function <name> { 
              DynamicParam {<statement list>}
              begin {<statement list>}
              process {<statement list>}
              end {<statement list>}
          }
      Return 
      ------

导致 Windows PowerShell 离开当前作用域(例如脚本或函数),并编写输出的可选表达式。

语法:

          return [<expression>]
      Sequence
      --------

在 Parallel 脚本块中按顺序运行工作流命令。此关键字仅在 Windows PowerShell 工作流中有效。

语法:

          workflow <verb>-<noun>
          { 
              Parallel
              {
                  Sequence
                  {
                      <Activity>
                  }
              }
          }

Sequence 关键字在 Parallel 脚本块内创建序列块。Sequence 脚本块中的命令按顺序和已定义的顺序运行。

有关详细信息,请参阅 about_Sequence

      Switch
      ------

指定要对管道或文件中的项执行的各种操作。你可以使用以下语法模型之一。

语法 1:

          switch [-regex|-wildcard|-exact][-casesensitive] ( pipeline )
    
          { 
              <string>|<number>|<variable>|{ <expression> } {<statement list>}
              <string>|<number>|<variable>|{ <expression> } {<statement list>}
                    ...
              default {<statement list>}
          }

语法 2:

          switch [-regex|-wildcard|-exact][-casesensitive] -file filename
          { 
              <string>|<number>|<variable>|{ <expression> } {<statement list>}
              <string>|<number>|<variable>|{ <expression> } {<statement list>}
                    ...
              default {<statement list>}
          }
      Throw
      -----

引发某个对象作为错误。

语法:

          throw [<object>]
      Trap 
      ----

定义要在遇到错误时运行的语句列表。错误类型需要括号。第二对括号指示错误类型是可选的。

语法:

          trap [[<error type>]] {<statement list>}
      Try
      ---

定义要在语句运行时检查其中是否有错误的语句列表。如果出现错误,Windows PowerShell 将继续在 Catch 或 Finally 语句中运行。错误类型需要括号。第二对括号指示错误类型是可选的。

语法:

          try {<statement list>}
          catch [[<error type]] {<statement list>}
          finally {<statement list>}
      Until
      -----

在 Do 语句中作为循环构造使用,其中至少运行一次该语句列表。

语法:

          do {<statement list>} until (<condition>)
      While
      -----

在 Do 语句中作为循环构造使用,其中至少运行一次该语句列表。

语法:

          do {<statement list>} while (<condition>)
      Workflow
      --------

创建基于脚本的 Windows PowerShell 工作流,即使用 Windows PowerShell 语言编写的工作流。

Windows PowerShell 工作流是 Windows PowerShell 命令类型,该类型受 Windows PowerShell 和 Windows Workflow Foundation 支持。工作流设计用于复杂、长时间运行且影响多台计算机的任务。如果工作流中断(例如由于网络故障),可以恢复它,并且你可以暂停和恢复它们而不会丢失状态或数据。

可以采用 XAML(Windows Workflow Foundatio 的本机语言)或 Windows PowerShell 语言编写工作流。

基于脚本的工作流的语法类似于函数的语法。但是,工作流中的执行单位是活动,而不是命令。在基于脚本的工作流中使用的 Cmdlet(和其他命令)隐式转换为活动。

脚本和函数中允许使用的某些语言元素在工作流不允许使用。同样,工作流可以包含在脚本和函数中找不到的元素,例如“暂留点”(检查点)、自暂停和并行处理。此外,所有工作流都具有一组在你使用 Workflow 关键字时由 Windows PowerShell 添加的常用参数。

语法:

          workflow <Verb-Noun> { 
              param ([type]<$pname1> [, [type]<$pname2>])
              <statement list>
          }

          workflow <verb-noun> 
          {
              [CmdletBinding(<Attributes>)]
               Param
               (
                   [Parameter(<Arguments>)]                   
                   $Param1
               )
              <statement list>
          }

有关详细信息,请参阅 TechNet 库中的 about_Workflows 和“Windows PowerShell 工作流入门”(https://go.microsoft.com/fwlink/?LinkID=252592)。

另请参阅

about_Escape_Characters

about_Special_Characters

about_Wildcards