about_Language_Keywords

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.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 ステートメント リストは、パイプラインからオブジェクトを受け取る前に、1 回実行されます。

構文:

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

スクリプトがループを終了します。

構文:

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

付随する Try ステートメント リストでエラーが発生した場合に実行するステートメント リストを指定します。エラー タイプには、角かっこが必要です。角かっこの 2 つ目のペアは、エラー タイプがオプションであることを示します。

構文:

          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 はステートメント リストを少なくとも 1 回実行します。

構文:

          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 ステートメント リストは、すべてのオブジェクトがパイプラインから受け取られた後、1 回実行されます。

構文:

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

Windows PowerShell は、スクリプトまたは Windows PowerShell インスタンスを終了します。

'powershell.exe –File <スクリプトへのパス>' を実行した場合、%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 
      ------

入力オブジェクトごとにステートメント リストを 1 回実行する関数を指定します。これは、Process ブロックのみが含まれている関数と同じ効果があります。

構文:

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

Try と Catch に関連付けられているステートメントの後に実行されるステートメント リストを定義します。Finally ステートメント リストは、CTRL + C キーを押してスクリプトを終了する場合や、スクリプトの Exit キーワードを使用する場合でも、実行されます。

構文:

          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 キーワードを使用して、1 つまたは複数の名前付きパラメーターを指定できます。関数のステートメント リスト内に、DynamicParam、Begin、Process、End の各ステートメント リストを含めることができます。

構文:

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

また、関数名の後、ステートメント リストの外部に、1 つまたは複数のパラメーターを定義することもできます。

構文:

          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 ステートメント リストは、パイプラインから入力を受け取るとき、パイプラインからの要素ごとに 1 回実行されます。パイプラインにオブジェクトがない場合、Process ステートメント リストは実行されません。このコマンドがパイプラインの最初のコマンドである場合、Process ステートメント リストは 1 回実行されます。

構文:

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

エラーが発生した場合に実行されるステートメント リストを定義します。エラー タイプには、角かっこが必要です。角かっこの 2 つ目のペアは、エラー タイプがオプションであることを示します。

構文:

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

ステートメントの実行中にエラーをチェックするステートメント リストを定義します。エラーが発生した場合、Windows PowerShell は Catch ステートメントまたは Finally ステートメントの実行を続けます。エラー タイプには、角かっこが必要です。角かっこの 2 つ目のペアは、エラー タイプがオプションであることを示します。

構文:

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

ステートメント リストが少なくとも 1 回実行されるループ構造として Do ステートメントで使用されます。

構文:

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

ステートメント リストが少なくとも 1 回実行されるループ構造として Do ステートメントで使用されます。

構文:

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

スクリプト ベースの Windows PowerShell ワークフロー、つまり Windows PowerShell 言語で記述されたワークフローを作成します。

Windows PowerShell ワークフローは、Windows PowerShell および Windows Workflow Foundation でサポートされている Windows PowerShell コマンドのタイプです。ワークフローは、複数のコンピューターに影響する、複雑で実行時間の長いタスク向けに設計されています。ネットワーク停止などで中断された場合にはワークフローを回復できるため、状態やデータを失うことなくワークフローを中断および再開できます。

ワークフローは、Windows Workflow Foundation のネイティブ言語である XAML で記述することも、Windows PowerShell 言語で記述することもできます。

スクリプト ベースのワークフローの構文は、関数の構文に似ています。ただし、ワークフローの実行の単位は、コマンドではなくアクティビティです。スクリプト ベースのワークフローで使用されるコマンドレット (およびその他のコマンド) は、アクティビティに暗黙的に変換されます。

言語要素の中には、スクリプトおよび関数では許可されていても、ワークフローでは許可されないものがあります。同様に、ワークフローには、"永続化ポイント" (チェックポイント)、自己中断、並列処理など、スクリプトや関数にない要素を含めることができます。さらに、Workflow キーワードを使用すると Windows PowerShell によって追加される共通パラメーター セットがすべてのワークフローで保持されます。

構文:

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

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

ワークフローの詳細については、「about_Workflows」および TechNet ライブラリの「Windows PowerShell ワークフローについて」(https://go.microsoft.com/fwlink/?LinkID=252592) を参照してください。

関連項目

about_Escape_Characters

about_Special_Characters

about_Wildcards