共用方式為


Invoke-AsWorkflow

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

語法

Command (預設值)

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

Expression

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 變數中。

第二個命令會使用 Invoke-AsWorkflow 工作流程,在 Servers.csv 檔案的計算機上執行 Get-ExecutionPolicy 命令。 此命令會使用 Invoke-AsWorkflow 參數來指定要在工作流程中執行的命令。 它會使用 ParameterInvoke-AsWorkflow 參數,以 Scope值來指定 Get-ExecutionPolicy Cmdlet 的 參數。此命令也會使用 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

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

Command
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Expression

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

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

Expression
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-InputObject

用來允許管線輸入。

參數屬性

類型:Object
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Parameter

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

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

參數屬性

類型:Hashtable
預設值:None
支援萬用字元:False
不要顯示:False

參數集

Command
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters

輸入

Object

您可以使用管線將任何物件傳送至 InputObject 參數。

輸出

None

此命令不會產生任何輸出。 不過,它會執行可能會產生輸出的工作流程。