Invoke-AsWorkflow
Windows PowerShell ワークフローとしてコマンドまたは式を実行します。
構文
Command (既定)
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Expression
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 パラメーターを使用して、ワークフローで実行するコマンドを指定します。
Parameter の Invoke-AsWorkflow パラメーターを使用して、Scope コマンドレットの Get-ExecutionPolicy パラメーターを値として指定 Process。このコマンドでは、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) を返します。
パラメーター
-CommandName
指定したコマンドレットまたは高度な関数をワークフローとして実行します。
コマンドレットまたは関数名 (Update-Help、Set-ExecutionPolicy、Set-NetFirewallRuleなど) を入力します。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
Command
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Expression
このコマンドレットがワークフローとして実行する式を指定します。
"ipconfig /all"など、式を文字列として入力します。
式にスペースまたは特殊文字が含まれている場合は、式を引用符で囲みます。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
Expression
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-InputObject
パイプライン入力を許可するために使用されます。
パラメーターのプロパティ
| 型: | Object |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Parameter
CommandName パラメーターで指定されたコマンドのパラメーターとパラメーター値を指定します。
各キーがパラメーター名で、その値がパラメーター値であるハッシュ テーブル (@{ExecutionPolicy="AllSigned"}など) を入力します。
ハッシュ テーブルの詳細については、about_Hash_Tablesを参照してください。
パラメーターのプロパティ
| 型: | Hashtable |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
Command
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
Object
任意のオブジェクトをこのコマンドレットにパイプできます。
出力
None
このコマンドはそれ自体の出力を返しませんが、実行するワークフローは出力を返す可能性があります。