Invoke-AsWorkflow
コマンドまたは式を Windows PowerShell ワークフローとして実行します。
構文
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Invoke-AsWorkflow
[-Expression <String>]
[-InputObject <Object>]
[<CommonParameters>]
説明
ワークフローは、任意の Invoke-AsWorkflow コマンドまたは式をワークフロー内のインライン スクリプトとして実行します。
これらのワークフローは、標準のワークフロー セマンティクスを使用し、すべてのワークフロー共通パラメーターを持ち、ワークフローのすべての利点 (停止、再開、復旧する機能など) を備えています。
ワークフローは、重要なデータを収集する実行時間の長いコマンドを対象にしていますが、任意のコマンドの実行に使用することができます。 詳細については、「 about_Workflows」を参照してください。
このコマンドにワークフロー共通パラメーターを追加することもできます。 ワークフローの共通パラメーターの詳細については、about_WorkflowCommonParametersを参照してください。
このワークフローは、Windows PowerShell 3.0 で導入されました。
例
例 1: ワークフローとしてコマンドレットを実行する
Invoke-AsWorkflow -PSComputerName (Get-Content Servers.txt) -CommandName Get-ExecutionPolicy
PSComputerName PSSourceJobInstanceId Value
-------------- --------------------- -----
Server01 77b1cdf8-8226-4662-9067-cd2fa5c3b711 AllSigned
Server02 a33542d7-3cdd-4339-ab99-0e7cd8e59462 Unrestricted
Server03 279bac28-066a-4646-9497-8fcdcfe9757e AllSigned
localhost 0d858009-2cc4-47a4-a2e0-da17dc2883d0 RemoteSigned
このコマンドは、 Get-ExecutionPolicy 数百台のコンピューターでワークフローとしてコマンドレットを実行します。
このコマンドでは、CommandName パラメーターを使用して、ワークフローで実行するコマンドレットを指定します。
PSComputerName ワークフロー共通パラメーターを使用して、コマンドを実行するコンピューターを指定します。
PSComputerName パラメーターの値は、Get-ContentServers.txt ファイルからコンピューター名の一覧を取得するコマンドです。
パラメーター値はかっこで囲み、値を使用する前にコマンドを実行Get-CommandするようにWindows PowerShellを指示します。
すべてのリモート コマンドと同様に、コマンドをローカル コンピューターで実行する場合 (PSComputerName パラメーターの値にローカル コンピューターが含まれている場合)、[管理者として実行] オプションで Windows PowerShell を起動する必要があります。
例 2: パラメーターを使用してコマンドレットを実行する
$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5
最初のコマンドでは、コマンドレットを Import-Csv 使用して、Servers.csv ファイル内のコンテンツからオブジェクトを作成します。 このコマンドは、パラメーターを Header 使用して、ターゲット コンピューターの名前 ("リモート ノード" とも呼ばれます) を含む列のプロパティを作成 ServerName します。このコマンドは、結果を変数に $s 保存します。
2 番目のコマンドは、ワークフローを Invoke-AsWorkflow 使用して、 Get-ExecutionPolicy Servers.csv ファイル内のコンピューターでコマンドを実行します。 コマンドは 、CommandName パラメーターを Invoke-AsWorkflow 使用して、ワークフローで実行するコマンドを指定します。 このパラメーターInvoke-AsWorkflowをParameter使用して、Process の値をScopeGet-ExecutionPolicy持つコマンドレットのパラメーターを指定します。また、このコマンドでは、ワークフロー共通パラメーターをPSConnectionRetryCount使用して、各コンピューターでコマンドを 5 回試行し、PSComputerNameワークフロー共通パラメーターを使用してリモート ノード (ターゲット コンピューター) の名前を指定します。 パラメーターの PSComputerName 値は、変数内のすべてのオブジェクトのプロパティを ServerName 取得する $s 式です。
これらのコマンドは、 Get-ExecutionPolicy 数百台のコンピューターでワークフローとしてコマンドを実行します。
このコマンドは、 Scope 現在のセッションで実行ポリシーを Get-ExecutionPolicy 取得するために、 Process の値を持つコマンドレットのパラメーターを使用します。
例 3: 式をワークフローとして実行する
Invoke-AsWorkflow -Expression "ipconfig /all" -PSComputerName (Get-Content DomainControllers.txt) -AsJob -JobName IPConfig
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 IpConfig PSWorkflowJob Completed True Server01, Server01... Invoke-AsWorkflow
このコマンドは、ワークフローを Invoke-AsWorkflow 使用して、DomainControllers.txt ファイルに一覧表示されているコンピューターで Ipconfig コマンドをワークフロー ジョブとして実行します。
コマンドは、パラメーターを Expression 使用して実行する式を指定します。
ワークフロー共通パラメーターを PSComputerName 使用して、リモート ノード (ターゲット コンピューター) の名前を指定します。
また、このコマンドでは、ワークフロー共通 AsJob パラメーターと JobName ワークフロー共通パラメーターを使用して、"Ipconfig" ジョブ名を持つ各コンピューターでワークフローをバックグラウンド ジョブとして実行します。
このコマンドは、各コンピューター上の ContainerParentJob ワークフロー ジョブを含むオブジェクト (System.Management.Automation.ContainerParentJob) を返します。
パラメーター
指定されたコマンドレットまたは高度な関数をワークフローとして実行します。
コマンドレットまたは関数の名前を入力します (例: Update-Help、 Set-ExecutionPolicy、 Set-NetFirewallRule)。
| Type: | String |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
このコマンドレットがワークフローとして実行する式を指定します。
次のように "ipconfig /all"、式を文字列として入力します。
式にスペースや特殊文字が含まれている場合は、式を二重引用符で囲みます。
| Type: | String |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
パイプライン入力を許可するために使用されます。
| Type: | Object |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
パラメーターに指定されたコマンドのパラメーターとパラメーター値を CommandName 指定します。
各キーがパラメーター名であり、その値がパラメーター値であるハッシュ テーブルを入力します。例:@{ExecutionPolicy="AllSigned"}
ハッシュ テーブルの詳細については、「 about_Hash_Tables」を参照してください。
| Type: | Hashtable |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
入力
任意のオブジェクトをパラメーターに InputObject パイプできます。
出力
None
このコマンドは出力を生成しません。 ただし、実行するワークフローによって出力が生成される場合があります。