about_Language_Keywords

適用於: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

主題

about_Language_Keywords

簡短描述

描述 Windows PowerShell® 指令碼語言中的關鍵字。

詳細描述

Windows PowerShell 有下列語言關鍵字。如需詳細資訊,請參閱關鍵字的相關主題和本表格後的資訊。

        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 關鍵字使用,做為迴圈建構。Windows PowerShell 會執行此陳述式清單至少一次,不像使用 While 的迴圈。

語法:

          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 – 檔案<指令碼路徑>」,您只能將 %ERRORLEVEL% 變數設定為零以外的值,方法是使用 exit 陳述式。在下列範例中,使用者輸入 '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 Foundation 的原生語言,或是使用 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 Library 中的 about_Workflows 和<開始使用 Windows PowerShell 工作流程>(https://go.microsoft.com/fwlink/?LinkID=252592)。

另請參閱

about_Escape_Characters

about_Special_Characters

about_Wildcards