次の方法で共有


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-AsWorkflowCommandName パラメーターを使用して、ワークフローで実行するコマンドを指定します。 Invoke-AsWorkflowParameter パラメーターを使用して、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 ワークフロー共通パラメーターを使用して、リモート ノード (ターゲット コンピューター) の名前を指定します。

また、このコマンドでは、 AsJobJobName ワークフローの共通パラメーターを使用して、"Ipconfig" ジョブ名を持つ各コンピューターでワークフローをバックグラウンド ジョブとして実行します。

このコマンドは、各コンピューター上のワークフロー ジョブを含む ContainerParentJob オブジェクト (System.Management.Automation.ContainerParentJob) を返します。

パラメーター

-CommandName

指定されたコマンドレットまたは高度な関数をワークフローとして実行します。 コマンドレットまたは関数名 ( Update-HelpSet-ExecutionPolicySet-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

入力

Object

任意のオブジェクトをこのコマンドレットにパイプできます。

出力

None

このコマンドはそれ自体の出力を返しませんが、実行するワークフローは出力を返す可能性があります。