Invoke-AsWorkflow
Voert een opdracht of expressie uit als een Windows PowerShell-werkstroom.
Syntaxis
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Invoke-AsWorkflow
[-Expression <String>]
[-InputObject <Object>]
[<CommonParameters>]
Description
De Invoke-AsWorkflow
werkstroom voert een opdracht of expressie uit als een inlinescript in een werkstroom.
Deze werkstromen maken gebruik van de standaardwerkstroomsemantiek, hebben alle gemeenschappelijke parameters voor werkstromen en hebben alle voordelen van werkstromen, waaronder de mogelijkheid om te stoppen, hervatten en herstellen.
Werkstromen zijn ontworpen voor langlopende opdrachten die kritieke gegevens verzamelen, maar kunnen worden gebruikt om elke opdracht uit te voeren. Zie about_Workflows voor meer informatie.
U kunt ook algemene parameters voor werkstromen toevoegen aan deze opdracht. Zie about_WorkflowCommonParameters voor meer informatie over algemene parameters voor werkstromen
Deze werkstroom wordt geïntroduceerd in Windows PowerShell 3.0.
Voorbeelden
Voorbeeld 1: Een cmdlet uitvoeren als een werkstroom
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
Met deze opdracht wordt de Get-ExecutionPolicy
cmdlet uitgevoerd als een werkstroom op honderden computers.
De opdracht gebruikt de parameter CommandName om de cmdlet op te geven die in de werkstroom wordt uitgevoerd.
De werkstroomparameter PSComputerName wordt gebruikt om de computers op te geven waarop de opdracht wordt uitgevoerd.
De waarde van de parameter PSComputerName is een Get-Content
opdracht waarmee een lijst met computernamen uit het Servers.txt bestand wordt opgehaald.
De parameterwaarde staat tussen haakjes om Windows PowerShell om te leiden om de Get-Command
opdracht uit te voeren voordat u de waarde gebruikt.
Net als bij alle externe opdrachten, als de opdracht wordt uitgevoerd op de lokale computer (als de waarde van de parameter PSComputerName de lokale computer bevat), moet u Windows PowerShell starten met de optie Uitvoeren als administrator.
Voorbeeld 2: Een cmdlet uitvoeren met parameters
$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5
De eerste opdracht gebruikt de Import-Csv
cmdlet om een object te maken op basis van de inhoud in het Servers.csv-bestand. De opdracht gebruikt de Header
parameter om een ServerName
eigenschap te maken voor de kolom die de namen van de doelcomputers bevat, ook wel 'externe knooppunten' genoemd. Met de opdracht wordt het resultaat opgeslagen in de $s
variabele.
De tweede opdracht gebruikt de Invoke-AsWorkflow
werkstroom om een Get-ExecutionPolicy
opdracht uit te voeren op de computers in het bestand Servers.csv. De opdracht gebruikt de parameter CommandName om Invoke-AsWorkflow
de opdracht op te geven die moet worden uitgevoerd in de werkstroom. Hierbij wordt de Parameter
parameter gebruikt om Invoke-AsWorkflow
de Scope
parameter van de Get-ExecutionPolicy
cmdlet op te geven met de waarde Process. De opdracht gebruikt ook de algemene parameter van de PSConnectionRetryCount
werkstroom om de opdracht te beperken tot vijf pogingen op elke computer en de algemene parameter van de PSComputerName
werkstroom om de namen van de externe knooppunten (doelcomputers) op te geven. De waarde van de PSComputerName
parameter is een expressie die de ServerName
eigenschap van elk object in de $s
variabele ophaalt.
Met deze opdrachten wordt een Get-ExecutionPolicy
opdracht uitgevoerd als een werkstroom op honderden computers.
De opdracht gebruikt de Scope
parameter van de Get-ExecutionPolicy
cmdlet met de waarde Process om het uitvoeringsbeleid op te halen in de huidige sessie.
Voorbeeld 3: Een expressie uitvoeren als een werkstroom
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
Met deze opdracht wordt de Invoke-AsWorkflow
werkstroom gebruikt om een Ipconfig-opdracht uit te voeren als een werkstroomtaak op de computers die worden vermeld in het DomainControllers.txt-bestand.
De opdracht gebruikt de Expression
parameter om de expressie op te geven die moet worden uitgevoerd.
Hierbij wordt de algemene parameter van de PSComputerName
werkstroom gebruikt om de namen van de externe knooppunten (doelcomputers) op te geven.
De opdracht maakt ook gebruik van de AsJob
algemene parameters en JobName
werkstroom om de werkstroom uit te voeren als achtergrondtaak op elke computer met de taaknaam Ipconfig.
De opdracht retourneert een ContainerParentJob
object (System.Management.Automation.ContainerParentJob
) dat de werkstroomtaken op elke computer bevat.
Parameters
-CommandName
Hiermee wordt de opgegeven cmdlet of geavanceerde functie uitgevoerd als een werkstroom.
Voer de naam van de cmdlet of functie in, zoals Update-Help
, Set-ExecutionPolicy
of Set-NetFirewallRule
.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Expression
Hiermee geeft u de expressie op die door deze cmdlet wordt uitgevoerd als een werkstroom.
Voer de expressie in als een tekenreeks, zoals "ipconfig /all"
.
Als de expressie spaties of speciale tekens bevat, plaatst u de expressie tussen aanhalingstekens.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-InputObject
Wordt gebruikt om pijplijninvoer toe te staan.
Type: | Object |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-Parameter
Hiermee geeft u de parameters en parameterwaarden van de opdracht die is opgegeven in de CommandName
parameter.
Voer een hashtabel in waarin elke sleutel een parameternaam is en de waarde ervan de parameterwaarde is, zoals @{ExecutionPolicy="AllSigned"}
.
Zie about_Hash_Tables voor meer informatie over hashtabellen.
Type: | Hashtable |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt elk object doorsluisen naar deze cmdlet.
Uitvoerwaarden
None
Met deze opdracht wordt geen eigen uitvoer geretourneerd, maar de werkstroom die wordt uitgevoerd, retourneert mogelijk uitvoer.