about_Workflows

適用対象: Windows PowerShell 3.0

トピック

about_Workflows

概要

Windows PowerShell® ワークフロー機能について簡単に紹介します。

詳細説明

Windows PowerShell ワークフローは、Windows PowerShell で ワークフローの作成と実行を可能にすることで、Windows PowerShell に Windows Workflow Foundation の利点をもたらします。

Windows PowerShell ワークフローは Windows PowerShell 3.0 で導入されました。

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

ワークフローについて

ワークフローは、関連アクティビティの順序付けられたシーケンスで構成されるコマンドです。通常これらは、多くの場合は異機種混在環境にある数百台のコンピューターに対して、一定時間データを収集し、変更を加えます。

ワークフローは、Windows Workflow Foundation で使用される言語である XAML、または Windows PowerShell 言語で記述できます。ワークフローは通常、モジュール内にパッケージ化され、ヘルプ トピックを含みます。

ワークフローは再起動を経ても維持され、一般的な障害から自動的に復旧できるため、IT 環境で非常に重要です。ワークフローを実行しているセッションとコンピューターからの切断および再接続はワークフロー処理を中断することなく行うことが可能で、ワークフローの中断と再開はデータを失わずに透過的に行うことができます。ワークフロー内の各アクティビティは参照用に記録され、監査されます。ワークフローはジョブとして実行可能で、Windows PowerShell のスケジュール ジョブ機能を使用してスケジュールできます。

ワークフロー内の状態とデータはワークフローの開始時と終了時およびユーザーが指定した時点で保存、つまり「永続化」されます。ワークフローの永続化ポイントは、データベースのスナップショットやプログラムのチェックポイントのように機能し、中断や障害の影響からワークフローを保護します。ワークフローで回復できない障害が発生した場合は、広範なワークフローを最初から再実行するのではなく、永続化されたデータを使用し、最後の永続性ポイントから再開できます。

要件と構成

Windows PowerShell ワークフロー構成は次の要素で構成されます。

クライアント コンピューター。ワークフローを実行します。

クライアント コンピューターまたはリモート コンピューター上のワークフロー セッション (PSSession)。

管理対象ノード。ワークフロー アクティビティの影響を受ける対象のコンピュータ。

注記:

ワークフロー セッションは必須ではありませんが、推奨されます。Pssession は、Windows PowerShell の堅牢な回復および切断されたセッション機能を利用して、切断されたワークフロー セッションを回復できます。

クライアント コンピューターと、ワークフロー セッションが実行されているコンピューターを管理対象ノードにすることができるので、すべての役割を実現している 1 台のコンピューターでワークフローを実行できます。

クライアント コンピューターと、ワークフロー セッションを実行するコンピューターは Windows PowerShell 3.0 を実行している必要があります。Windows Server オペレーティング システムの Server Core インストール オプションを含む、すべての条件を満たすシステムをサポートします。

コマンドレットが含まれるワークフローを実行するには、管理対象ノードに Windows PowerShell 2.0 またはそれ以降が必要です。ワークフローにコマンドレットが含まれない場合は、管理対象ノードに Windows PowerShell は不要です。Windows PowerShell のないコンピューターで、Windows Management Instrumentation (WMI) および Common Information Model (CIM) のコマンドが含まれているワークフローを実行できます。

システム要件と構成の詳細については、TechNet ライブラリの「Windows PowerShell ワークフローの概要」(https://go.microsoft.com/fwlink/?LinkID=252592) を参照してください。

ワークフローの取得方法

ワークフローは、通常、モジュールにパッケージ化されています。ワークフローが含まれるモジュールをインポートするには、モジュール内のいずれかのコマンドを使用するか、または Import-Module コマンドレットを使用します。モジュール内のいずれかのコマンドを初めて使用する際に、モジュールは自動的にインポートされます。

コンピューターにインストールされているモジュール内のワークフローを検索するには、Get-Command コマンドレットの CommandType パラメーターを使用します。

      PS C:\> Get-Command -CommandType Workflow

ワークフローの実行方法

ワークフローを実行するには、次の手順を使用します。

1. クライアント コンピューターで、[管理者として実行] オプションを使用して Windows PowerShell を起動します。

            PS C:\> Start-Process PowerShell -Verb RunAs

管理対象ノードがローカル コンピューターの場合は、この手順は必要ありません。

2. ワークフロー セッションが実行されるコンピューターとコマンドレットが含まれるワークフローによって影響を受ける管理対象のノードで、Windows PowerShell リモート処理を有効にします。

この手順は、参加している各コンピューターで 1 回だけ実行する必要があります。

この手順は、コマンドレットが含まれているワークフローを実行するときのみ必要です。クライアント コンピューター (ワークフロー セッションがクライアント コンピューターで実行されない場合) または Windows PowerShell 3.0 を実行している管理対象ノードでは、リモート処理を有効にする必要はありません。

リモート処理を有効にするには、Enable-PSRemoting コマンドレットを使用します。

            PS C:\> Enable-PSRemoting -Force

「スクリプト実行を有効にする」グループ ポリシー設定を使用してリモート処理を有効にすることもできます。詳細については、「about_Group_Policy_Settings」(https://go.microsoft.com/fwlink/?LinkID=251696) および「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。

3. ワークフロー セッションを作成します。New-PSWorkflowSession または New-PSSession コマンドレットを使用します。

New-PSWorkflowSession コマンドレットは、対象のコンピュータで、組み込みの Microsoft.PowerShell.Workflow セッション構成を使用するセッションを開始します。このセッション構成には、ワークフロー向けに設計されたスクリプト、型ファイルと書式設定ファイル、およびオプションが含まれています。

ローカル コンピューターでは:

            PS C:\> $ws = New-PSWorkflowSession

リモート コンピューターでは:

            PS C:\> $ws = New-PSWorkflowSession -ComputerName Server01 `
                    -Credential Domain01\Admin01

または、New-PSSession コマンドレットを使用します。ConfigurationName パラメーターを使用して、Microsoft.PowerShell.Workflow セッション構成を指定します。このコマンドは、New-PSWorkflowSession コマンドレットを使用するのと同等です。

ワークフロー セッションのコンピューター上の Administrators グループのメンバーである場合は、New-PSWorkflowExecutionOption をコマンドレットを使用して、ワークフロー セッション構成のカスタム オプションの設定を作成し、Set-PSSessionConfiguration コマンドレットを使用して、セッション構成を変更することもできます。

            PS C:\> $sto = New-PSWorkflowExecutionOption -MaxConnectedSessions 150
            PS C:\> Invoke-Command -ComputerName Server01 `
                     {Set-PSSessionConfiguration Microsoft.PowerShell.Workflow `
                      -SessionTypeOption $Using:sto}
            PS C:\> $ws = New-PSWorkflowSession -ComputerName Server01 `
                    -Credential Domain01\Admin01          

4. ワークフロー セッションでワークフローを実行します。管理対象ノード (対象となるコンピュータ) の名前を指定するには、PSComputerName ワークフロー共通パラメーターを使用します。

次のコマンドは Test-Workflow ワークフローを実行します。

ここで、管理ノードは次の対象をホストするコンピューターです。

ワークフロー セッション:

            PS C:\> Invoke-Command -Session $ws {Test-Workflow}

ここで、管理対象ノードは、リモート コンピューターです。

            PS C:\> Invoke-Command -Session $ws{
                       Test-Workflow -PSComputerName Server01, Server02 }

次のコマンドは、数百台のコンピューターで Test-Workflow ワークフローを実行します。最初のコマンドは、テキスト ファイルからコンピューター名を取得し、ローカル コンピューター上の $Servers 変数に保存します。

2 番目のコマンドは、Using スコープ修飾子を使用して、$Servers 変数がローカルのセッションで定義されていることを示します。

            PS C:\> $Servers = Get-Content Servers.txt
            PS C:\> Invoke-Command -Session $ws {Test-Workflow -PSComputerName $Using:Servers }

Using スコープ修飾子の詳細については、「about_Remote_Variables」(https://go.microsoft.com/fwlink/?LinkID=252653) を参照してください。

ワークフロー共通パラメーターの使用方法

ワークフロー共通パラメーターは、Windows PowerShell がすべてのワークフローに自動的に追加するパラメーターのセットです。ワークフローが CmdletBinding 属性を使用しない場合でも、Windows PowerShell はすべてのワークフローにコマンドレット共通パラメーターを追加します。

たとえば、次の非常に単純なワークフローはパラメーターを定義しません。ただし、ワークフローを実行すると、CommonParameters と WorkflowCommonParameters の両方を持ちます。

      PS C:\> workflow Test-Workflow {Get-Process}
      PS C:\> Get-Command Test-Workflow -Syntax
      Test-Workflow [<WorkflowCommonParameters>] [<CommonParameters>]

ワークフロー共通パラメーターには、ワークフローを実行するために不可欠ないくつかのパラメーターが含まれます。たとえば、PSComputerName 共通パラメーターは、ワークフローが影響を与える管理対象ノードを指定します。

      PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02}

PSPersist ワークフロー共通パラメーターは、いつワークフロー データが永続化されるかを決定します。永続化ポイントを定義していないワークフローに、活動の間の永続化ポイントを追加することができます。

     PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True}

その他のワークフロー共通パラメーターを使用して、管理対象ノードへのリモート接続の特性を指定できます。それらの名前と機能は、Invoke-Command などのリモート処理コマンドレットのパラメーターとよく似ています。

      PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02 -PSPort 443}

ワークフロー セッション用の接続を定義するリモート処理のパラメーターと、管理対象ノードへの接続を定義する PS プレフィックスが付いたワークフロー共通パラメーターとを区別するよう注意してください。

      PS C:\> $ws = New-PSSession -ComputerName Server01 `
              -ConfigurationName Microsoft.PowerShell.Workflow
      PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02 `
              -PSConfigurationName Microsoft.PowerShell.Workflow}

いくつかのワークフロー共通パラメーターはワークフローに固有です。たとえば、PSParameterCollection パラメーターを使用すると、さまざまなリモート ノードに対して、さまざまなワークフロー共通パラメーター値を指定できます。

ワークフロー共通パラメーターの一覧と説明については、「about_WorkflowCommonParameters」(https://go.microsoft.com/fwlink/?LinkID=222527) を参照してください。

関連項目

Invoke-AsWorkflow

New-PSSessionExecutionOption

New-PSWorkflowSession

about_WorkflowCommonParameters

"Windows PowerShell ワークフローの概要"

(https://go.microsoft.com/fwlink/?LinkID=252592)

"Windows PowerShell ワークフローの作成"

(https://go.microsoft.com/fwlink/?LinkID=246399)