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-AsWorkflowParameter使用して、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) を返します。

パラメーター

-CommandName

指定されたコマンドレットまたは高度な関数をワークフローとして実行します。 コマンドレットまたは関数の名前を入力します (例: Update-HelpSet-ExecutionPolicySet-NetFirewallRule)。

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Expression

このコマンドレットがワークフローとして実行する式を指定します。 次のように "ipconfig /all"、式を文字列として入力します。 式にスペースや特殊文字が含まれている場合は、式を二重引用符で囲みます。

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-InputObject

パイプライン入力を許可するために使用されます。

Type:Object
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Parameter

パラメーターに指定されたコマンドのパラメーターとパラメーター値を CommandName 指定します。 各キーがパラメーター名であり、その値がパラメーター値であるハッシュ テーブルを入力します。例:@{ExecutionPolicy="AllSigned"}

ハッシュ テーブルの詳細については、「 about_Hash_Tables」を参照してください。

Type:Hashtable
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

入力

Object

任意のオブジェクトをパラメーターに InputObject パイプできます。

出力

None

このコマンドは出力を生成しません。 ただし、実行するワークフローによって出力が生成される場合があります。