Invoke-AsWorkflow
以 Windows PowerShell 工作流程的形式執行命令或表達式。
語法
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-ExecutionPolicy
Invoke-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
工作流程通用參數來指定遠端節點的名稱(目標計算機)。
此命令也會使用 AsJob
和 JobName
工作流程一般參數,在具有 「Ipconfig」 作業名稱的每部電腦上,以背景工作的形式執行工作流程。
此命令會傳 ContainerParentJob
回物件 (System.Management.Automation.ContainerParentJob
) ,其中包含每部電腦上的工作流程作業。
參數
-CommandName
以工作流程的形式執行指定的 Cmdlet 或進階函式。
輸入 Cmdlet 或函式名稱,例如 Update-Help
、 Set-ExecutionPolicy
或 Set-NetFirewallRule
。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Expression
指定此 Cmdlet 以工作流程形式執行的運算式。
輸入表示式作為字串,例如 "ipconfig /all"
。
如果表達式包含空格或特殊字元,請以引號括住表達式。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
用來允許管線輸入。
類型: | Object |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Parameter
指定 參數中所 CommandName
指定命令的參數和參數值。
輸入哈希表,其中每個索引鍵都是參數名稱,而其值是參數值,例如 @{ExecutionPolicy="AllSigned"}
。
如需哈希表的相關信息,請參閱 about_Hash_Tables。
類型: | Hashtable |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將任何物件傳送至此 Cmdlet。
輸出
None
此命令不會傳回自己的輸出,但它執行的工作流程可能會傳回輸出。