Invoke-AsWorkflow
Spustí příkaz nebo výraz jako pracovní postup Windows PowerShellu.
Syntaxe
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Invoke-AsWorkflow
[-Expression <String>]
[-InputObject <Object>]
[<CommonParameters>]
Description
Pracovní postup Invoke-AsWorkflow
spouští libovolný příkaz nebo výraz jako vložený skript v pracovním postupu.
Tyto pracovní postupy používají standardní sémantiku pracovního postupu, mají všechny společné parametry pracovního postupu a mají všechny výhody pracovních postupů, včetně možnosti zastavit, obnovit a obnovit.
Pracovní postupy jsou navržené pro dlouhotrvající příkazy, které shromažďují důležitá data, ale dají se použít ke spuštění libovolného příkazu. Další informace najdete v tématu about_Workflows.
Do tohoto příkazu můžete také přidat běžné parametry pracovního postupu. Další informace o běžných parametrech pracovního postupu najdete v tématu about_WorkflowCommonParameters
Tento pracovní postup je zaveden v prostředí Windows PowerShell 3.0.
Příklady
Příklad 1: Spuštění rutiny jako pracovního postupu
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
Tento příkaz spustí rutinu Get-ExecutionPolicy
jako pracovní postup ve stovkách počítačů.
Příkaz používá parametr CommandName k určení rutiny, která se spouští v pracovním postupu.
Používá PSComputerName společný parametr pracovního postupu k určení počítačů, na kterých se příkaz spouští.
Hodnota parametru PSComputerName je příkaz Get-Content
, který získá seznam názvů počítačů ze souboru Servers.txt.
Hodnota parametru je uzavřena v závorkách, aby před použitím hodnoty nasměrovala prostředí Windows PowerShell ke spuštění příkazu Get-Command
.
Stejně jako u všech vzdálených příkazů platí, že pokud příkaz běží na místním počítači (pokud hodnota parametru PSComputerName obsahuje místní počítač), musíte spustit Windows PowerShell s možností Spustit jako správce.
Příklad 2: Spuštění rutiny s parametry
$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5
První příkaz používá rutinu Import-Csv
k vytvoření objektu z obsahu v souboru Servers.csv. Příkaz pomocí parametru Header
vytvoří vlastnost ServerName
pro sloupec, který obsahuje názvy cílových počítačů, označované také jako "vzdálené uzly". Příkaz uloží výsledek do proměnné $s
.
Druhý příkaz používá pracovní postup Invoke-AsWorkflow
ke spuštění příkazu Get-ExecutionPolicy
na počítačích v souboru Servers.csv. Příkaz používá CommandName parametr Invoke-AsWorkflow
k určení příkazu, který se má spustit v pracovním postupu. Používá Parameter
parametr Invoke-AsWorkflow
k určení parametru Scope
rutiny Get-ExecutionPolicy
s hodnotou Process. Příkaz také používá společný parametr pracovního postupu PSConnectionRetryCount
k omezení příkazu na pět pokusů na každém počítači a společný parametr pracovního postupu PSComputerName
k určení názvů vzdálených uzlů (cílových počítačů). Hodnota parametru PSComputerName
je výraz, který získá ServerName
vlastnost každého objektu v proměnné $s
.
Tyto příkazy spouští příkaz Get-ExecutionPolicy
jako pracovní postup ve stovkách počítačů.
Příkaz používá parametr Scope
rutiny Get-ExecutionPolicy
s hodnotou Process k získání zásad provádění v aktuální relaci.
Příklad 3: Spuštění výrazu jako pracovního postupu
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
Tento příkaz používá pracovní postup Invoke-AsWorkflow
ke spuštění příkazu Ipconfig jako úlohy pracovního postupu na počítačích uvedených v souboru DomainControllers.txt.
Příkaz používá parametr Expression
k určení výrazu, který se má spustit.
Používá společný parametr pracovního postupu PSComputerName
k určení názvů vzdálených uzlů (cílových počítačů).
Příkaz také používá společné parametry AsJob
a JobName
pracovního postupu ke spuštění pracovního postupu jako úlohy na pozadí na každém počítači s názvem úlohy Ipconfig.
Příkaz vrátí objekt ContainerParentJob
(System.Management.Automation.ContainerParentJob
), který obsahuje úlohy pracovního postupu v každém počítači.
Parametry
-CommandName
Spustí zadanou rutinu nebo pokročilou funkci jako pracovní postup.
Zadejte název rutiny nebo funkce, například Update-Help
, Set-ExecutionPolicy
nebo Set-NetFirewallRule
.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Expression
Určuje výraz, který tato rutina spouští jako pracovní postup.
Zadejte výraz jako řetězec, například "ipconfig /all"
.
Pokud výraz obsahuje mezery nebo speciální znaky, uzavřete výraz do uvozovek.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-InputObject
Slouží k povolení vstupu kanálu.
Typ: | Object |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Parameter
Určuje parametry a hodnoty parametrů příkazu zadaného v parametru CommandName
.
Zadejte tabulku hash, ve které je každý klíč název parametru a jeho hodnota je hodnota parametru, například @{ExecutionPolicy="AllSigned"}
.
Informace o tabulkách hash najdete v tématu about_Hash_Tables.
Typ: | Hashtable |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Do parametru InputObject
můžete převést libovolný objekt.
Výstupy
None
Tento příkaz negeneruje žádný výstup. Spustí ale pracovní postup, který může vygenerovat výstup.