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 パラメーターの値は、Servers.txt ファイルからコンピューター名の一覧を取得するGet-Content
コマンドです。
パラメーター値はかっこで囲み、Windows PowerShell で値を使用する前に Get-Command
コマンドを実行するように指示します。
すべてのリモート コマンドと同様に、コマンドをローカル コンピューターで実行する場合 (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
ワークフローを使用して、Servers.csv ファイル内のコンピューターで Get-ExecutionPolicy
コマンドを実行します。 このコマンドは、Invoke-AsWorkflow
の CommandName パラメーターを使用して、ワークフローで実行するコマンドを指定します。 Invoke-AsWorkflow
の Parameter
パラメーターを使用して、Get-ExecutionPolicy
コマンドレットの Scope
パラメーターを値 Process で指定します。また、このコマンドでは、PSConnectionRetryCount
ワークフロー共通パラメーターを使用して、各コンピューターでのコマンドの試行回数を 5 回に制限し、PSComputerName
ワークフロー共通パラメーターを使用してリモート ノード (ターゲット コンピューター) の名前を指定します。 PSComputerName
パラメーターの値は、$s
変数内のすべてのオブジェクトのServerName
プロパティを取得する式です。
これらのコマンドは、何百ものコンピューターでワークフローとして Get-ExecutionPolicy
コマンドを実行します。
このコマンドは、Get-ExecutionPolicy
コマンドレットの Scope
パラメーターと値が 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
) を返します。
パラメーター
-CommandName
指定されたコマンドレットまたは高度な関数をワークフローとして実行します。
コマンドレットまたは関数名 ( Update-Help
、 Set-ExecutionPolicy
、 Set-NetFirewallRule
など) を入力します。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Expression
このコマンドレットがワークフローとして実行する式を指定します。
"ipconfig /all"
などの文字列として式を入力します。
式にスペースや特殊文字が含まれている場合は、式を二重引用符で囲みます。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
パイプライン入力を許可するために使用されます。
型: | Object |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Parameter
CommandName
パラメーターで指定されたコマンドのパラメーターとパラメーター値を指定します。
各キーがパラメーター名であり、その値がパラメーター値 ( @{ExecutionPolicy="AllSigned"}
など) であるハッシュ テーブルを入力します。
ハッシュ テーブルの詳細については、 about_Hash_Tablesを参照してください。
型: | Hashtable |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
任意のオブジェクトをこのコマンドレットにパイプできます。
出力
None
このコマンドはそれ自体の出力を返しませんが、実行するワークフローは出力を返す可能性があります。
関連リンク
PowerShell