about_Workflows

簡単な説明

PowerShell ワークフロー機能の簡単な概要について説明します。

詳細な説明

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

PowerShell ワークフローは PowerShell 3.0 で導入され、モジュールは PowerShell 5.1 まで利用できます。 PowerShell ワークフローの詳細については、「ワークフロー ガイド」および「Windows PowerShell ワークフローの作成」を参照してください

ワークフローについて

ワークフローは、関連するアクティビティの順序付けられたシーケンスで構成されるコマンドです。 通常、これらは長時間実行され、何百ものコンピューターからデータを収集し、多くの場合、異種環境で変更を加えます。

ワークフローは、XAML、Windows Workflow Foundation で使用される言語、または PowerShell 言語で記述できます。 ワークフローは通常、モジュールにパッケージ化され、ヘルプ トピックが含まれます。 詳細については、「XAML の概要 (WPF)」を参照してください。

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

ワークフロー内の状態とデータは、ワークフローの先頭と末尾、および指定した時点で保存または保持されます。 ワークフロー永続化ポイントは、データベース スナップショットやプログラム チェックポイントと同様に機能し、中断や障害の影響からワークフローを保護します。 ワークフローが障害から復旧できない場合は、最初から広範なワークフローを再実行するのではなく、永続化されたデータを使用し、最後の永続化ポイントから再開できます。

ワークフローの要件と構成

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

  • ワークフローを実行するクライアント コンピューター。
  • クライアント コンピューターまたはリモート コンピューター上のワークフロー セッション PSSession
  • マネージド ノード。ワークフロー アクティビティの影響を受けるターゲット コンピューター。

ワークフロー セッションは必須ではありませんが、推奨されます。 PSSessions では、PowerShell の堅牢な回復機能と切断セッション機能を利用して、切断されたワークフロー セッションを復旧できます。 詳細については、about_Remote_Disconnected_Sessionsを参照してください

クライアント コンピューターとワークフロー セッションを実行するコンピューターは管理ノードにできるため、すべての役割を果たす 1 台のコンピューターでワークフローを実行できます。

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

コマンドレットを含むワークフローを実行するには、マネージド ノードに Windows PowerShell 2.0 以降が必要です。 ワークフローにコマンドレットが含まれていない限り、マネージド ノードには PowerShell は必要ありません。 PowerShell を持たないコンピューターで、Windows Management Instrumentation (WMI) コマンドと Common Information Model (CIM) コマンドを含むワークフローを実行できます。

ワークフローを取得する方法

通常、ワークフローはモジュールにパッケージ化されます。 ワークフローを含むモジュールをインポートするには、モジュール内の任意のコマンドを使用するか、コマンドレットを Import-Module 使用します。 モジュールは、モジュール内のコマンドを最初に使用すると自動的にインポートされます。

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

Get-Command -CommandType Workflow

ワークフローを実行する方法

ワークフローを実行するには、次の手順に従います。

  1. マネージド ノードがローカル コンピューターの場合、この手順は必要ありません。 それ以外の場合は、クライアント コンピューターで、[管理者として実行] オプションを使用して PowerShell を起動します。

    Start-Process PowerShell -Verb RunAs
    
  2. ワークフロー セッションを実行するコンピューターと、コマンドレットを含むワークフローの影響を受けるマネージド ノードで PowerShell リモート処理を有効にします。

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

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

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

    Enable-PSRemoting -Force
    

    リモート処理を有効にするには、[スクリプト実行グループ ポリシーを有効にする] 設定を使用します。 詳細については、「about_Group_Policy_設定とabout_Execution_Policies」を参照してください

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

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

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

    別の方法として、コマンドレットを使用します New-PSSession 。 ConfigurationName パラメーターを使用して、Microsoft.PowerShell.Workflow セッション構成を指定します。

    ローカル コンピューターで次の手順を実行します。

    $ws = New-PSWorkflowSession
    

    リモート コンピューターの場合:

    $ws = New-PSWorkflowSession -ComputerName Server01 `
    -Credential Domain01\Admin01
    

    ワークフロー セッション コンピューターの管理に登録している場合は、コマンドレットをNew-PSWorkflowExecutionOption使用して、ワークフロー セッション構成のカスタム オプション設定を作成できます。 また、コマンドレットを Set-PSSessionConfiguration 使用してセッション構成を変更します。

    $sto = New-PSWorkflowExecutionOption -MaxConnectedSessions 150
    Invoke-Command -ComputerName Server01 `
    {Set-PSSessionConfiguration Microsoft.PowerShell.Workflow `
    -SessionTypeOption $Using:sto}
    $ws = New-PSWorkflowSession -ComputerName Server01 `
    -Credential Domain01\Admin01
    
  4. ワークフロー セッションでワークフローを実行します。 マネージド ノード、ターゲット コンピューターの名前を指定するには、PSComputerName ワークフロー共通パラメーターを使用します。

    次の例では、という名前 Test-Workflowのワークフローを実行します。

    マネージド ノードは、ワークフロー セッションをホストするコンピューターです。

    Invoke-Command -Session $ws {Test-Workflow}
    

    マネージド ノードがリモート コンピューターである場所。

    Invoke-Command -Session $ws{
    Test-Workflow -PSComputerName Server01, Server02 }
    

    次の例では、 Test-Workflow 数百のコンピューターで実行します。 このコマンドレットは Get-Content 、テキスト ファイルからコンピューター名を取得し、ローカル コンピューターの $Servers 変数に保存します。

    Invoke-Command では、スコープ修飾子を $Using 使用して、ローカル セッションで変数を定義 $Servers します。 スコープ修飾子の$Using詳細については、「about_Remote_Variables」を参照してください

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

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

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

たとえば、次のワークフローはパラメーターを定義しません。 ただし、ワークフローを実行すると、CommonParameters と WorkflowCommonParameters の両方が含まれます

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

ワークフロー共通パラメーターには、ワークフローの実行に不可欠ないくつかのパラメーターが含まれています。 たとえば、 PSComputerName 共通パラメーターは、ワークフローが影響を受けるマネージド ノードを指定します。

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02
}

PSPersist ワークフロー共通パラメーターは、ワークフロー データが永続化されるタイミングを決定します。 これにより、永続化ポイントを定義しないワークフローにアクティビティ間の永続化ポイントを追加できます。

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True
}

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

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPort 443
}

ワークフロー セッション PS-prefixed の接続を定義するリモート処理パラメーターと、マネージド ノードへの接続を定義するワークフロー共通パラメーターを区別するように注意してください。

$ws = New-PSSession -ComputerName Server01 -ConfigurationName Microsoft.PowerShell.Workflow

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSConfigurationName Microsoft.PowerShell.Workflow
}

一部のワークフロー共通パラメーターは、異なるリモート ノードに対して異なるワークフロー共通パラメーター値を指定できる PSParameterCollection パラメーターなど、ワークフローに固有です。 ワークフローの共通パラメーターの一覧と説明については、「about_WorkflowCommonParameters」を参照してください

関連項目