Invoke-AsWorkflow

以 Windows PowerShell 工作流程的形式執行命令或表達式。

Syntax

Invoke-AsWorkflow
      [-CommandName <String>]
      [-Parameter <Hashtable>]
      [-InputObject <Object>]
      [<CommonParameters>]
Invoke-AsWorkflow
      [-Expression <String>]
      [-InputObject <Object>]
      [<CommonParameters>]

Description

工作流程會 Invoke-AsWorkflow 以工作流程中的內嵌腳本形式執行任何命令或表達式。 這些工作流程會使用標準工作流程語意、具有所有工作流程通用參數,以及工作流程的所有優點,包括停止、繼續和復原的能力。

工作流程是專為長時間執行的命令所設計,可收集重要數據,但可用來執行任何命令。 如需詳細資訊,請參閱 about_Workflows

您也可以將工作流程一般參數新增至此命令。 如需工作流程一般參數的詳細資訊,請參閱 about_WorkflowCommonParameters

此工作流程是在 Windows PowerShell 3.0 中引進的。

範例

範例 1:以工作流程身分執行 Cmdlet

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 數百部計算機上以工作流程的形式執行 Cmdlet。

此命令會 使用 CommandName 參數來指定在工作流程中執行的 Cmdlet。 它會使用 PSComputerName 工作流程通用參數來指定命令執行所在的電腦。 PSComputerName 參數的值Get-Content從 Servers.txt 檔案取得計算機名稱清單的命令。 參數值會以括弧括住,以指示 Windows PowerShell 在使用 值之前執行 Get-Command 命令。

如同所有遠端命令,如果命令在本機計算機上執行,(如果 PSComputerName 參數的值包含本機電腦),您必須使用 [以系統管理員身分執行] 選項啟動 Windows PowerShell。

範例 2:使用參數執行 Cmdlet

$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5

第一個命令會 Import-Csv 使用 Cmdlet,從Servers.csv檔案中的內容建立物件。 此命令會 Header 使用 參數來建立 ServerName 包含目標計算機名稱的數據行屬性,也稱為「遠端節點」。命令會將結果儲存在變數中 $s

第二個Get-ExecutionPolicy命令會Invoke-AsWorkflow使用工作流程,在Servers.csv檔案的計算機上執行命令。 命令會使用的 Invoke-AsWorkflow CommandName 參數來指定要在工作流程中執行的命令。 它會使用 Parameter 的 參數,Scope指定具有 Process 值的 Cmdlet 參數Get-ExecutionPolicyInvoke-AsWorkflow。此命令也會使用PSConnectionRetryCount工作流程通用參數,將命令限制為每個電腦上的五次嘗試,以及PSComputerName工作流程通用參數來指定遠端節點的名稱(目標計算機)。 參數的值 PSComputerName 是一個運算式,可取得 ServerName 變數中 $s 每個物件的屬性。

這些命令會在數百部計算機上以工作流程的形式執行 Get-ExecutionPolicy 命令。 此命令會使用 Scope Cmdlet 的參數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 工作流程通用參數來指定遠端節點的名稱(目標計算機)。

此命令也會使用 AsJobJobName 工作流程一般參數,在具有 「Ipconfig」 作業名稱的每部電腦上,以背景工作的形式執行工作流程。

此命令會傳 ContainerParentJob 回物件 (System.Management.Automation.ContainerParentJob) ,其中包含每部電腦上的工作流程作業。

參數

-CommandName

以工作流程的形式執行指定的 Cmdlet 或進階函式。 輸入 Cmdlet 或函式名稱,例如 Update-HelpSet-ExecutionPolicySet-NetFirewallRule

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

-Expression

指定此 Cmdlet 以工作流程形式執行的運算式。 輸入表示式作為字串,例如 "ipconfig /all"。 如果表達式包含空格或特殊字元,請以引號括住表達式。

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

-InputObject

用來允許管線輸入。

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

-Parameter

指定 參數中所 CommandName 指定命令的參數和參數值。 輸入哈希表,其中每個索引鍵都是參數名稱,而其值是參數值,例如 @{ExecutionPolicy="AllSigned"}

如需哈希表的相關信息,請參閱 about_Hash_Tables

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

輸入

Object

您可以使用管線將任何物件傳送至此 Cmdlet。

輸出

None

此命令不會傳回自己的輸出,但它執行的工作流程可能會傳回輸出。