Delen via


Invoke-AsWorkflow

Voert een opdracht of expressie uit als een Windows PowerShell-werkstroom.

Syntax

Command (Standaard)

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

Expression

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_Workflowsvoor 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 cmdlet Get-ExecutionPolicy 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. Hierbij wordt de algemene parameter PSComputerName werkstroom 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 opdracht Get-Command 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 maakt gebruik van de cmdlet Import-Csv om een object te maken op basis van de inhoud in het Servers.csv-bestand. De opdracht gebruikt de parameter Header 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 maakt gebruik van de Invoke-AsWorkflow werkstroom om een Get-ExecutionPolicy opdracht uit te voeren op de computers in het Servers.csv bestand. De opdracht gebruikt de parameter CommandName van Invoke-AsWorkflow om de opdracht op te geven die in de werkstroom moet worden uitgevoerd. Hierbij wordt de Parameter parameter van Invoke-AsWorkflow gebruikt om 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 parameter PSComputerName is een expressie die de eigenschap ServerName 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 een waarde van 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 werkstroomtaak op de computers die in het DomainControllers.txt bestand worden vermeld.

De opdracht gebruikt de parameter Expression om de expressie op te geven die moet worden uitgevoerd. Hierbij wordt de algemene parameter PSComputerName werkstroom gebruikt om de namen van de externe knooppunten (doelcomputers) op te geven.

De opdracht maakt ook gebruik van de algemene parameters van de AsJob en JobName werkstroom om de werkstroom als achtergrondtaak op elke computer uit te voeren 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-ExecutionPolicyof Set-NetFirewallRule.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

Command
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

Expression
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-InputObject

Wordt gebruikt om pijplijninvoer toe te staan.

Parametereigenschappen

Type:Object
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:True
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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 bijbehorende waarde de parameterwaarde is, zoals @{ExecutionPolicy="AllSigned"}.

Zie about_Hash_Tablesvoor meer informatie over hashtabellen.

Parametereigenschappen

Type:Hashtable
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

Command
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

CommonParameters

Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.

Invoerwaarden

Object

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.