Invoke-AsWorkflow
Führt einen Befehl oder Ausdruck als Windows PowerShell-Workflow aus.
Syntax
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Invoke-AsWorkflow
[-Expression <String>]
[-InputObject <Object>]
[<CommonParameters>]
Beschreibung
Der Invoke-AsWorkflow
Workflow führt einen beliebigen Befehl oder Ausdruck als Inlineskript in einem Workflow aus.
Diese Workflows nutzen die standardmäßige Workflowsemantik, verfügen über alle allgemeinen Workflowparameter und bieten sämtliche Vorteile von Workflows, einschließlich der Möglichkeit, einen Workflow zu beenden, fortzusetzen und wiederherzustellen.
Workflows sind für Befehle mit langer Ausführungsdauer konzipiert, die wichtige Daten sammeln, können aber zur Ausführung jedes Befehls verwendet werden. Weitere Informationen finden Sie unter about_Workflows.
Sie können diesem Befehl auch allgemeine Workflowparameter hinzufügen. Weitere Informationen zu allgemeinen Workflowparametern finden Sie unter about_WorkflowCommonParameters
Dieser Workflow wird in Windows PowerShell 3.0 eingeführt.
Beispiele
Beispiel 1: Ausführen eines Cmdlets als Workflow
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
Mit diesem Befehl wird das Get-ExecutionPolicy
Cmdlet als Workflow auf Hunderten von Computern ausgeführt.
Der Befehl verwendet den CommandName-Parameter , um das Cmdlet anzugeben, das im Workflow ausgeführt wird.
Er verwendet den allgemeinen PSComputerName-Workflowparameter , um die Computer anzugeben, auf denen der Befehl ausgeführt wird.
Der Wert des PSComputerName-Parameters ist ein Get-Content
Befehl, der eine Liste der Computernamen aus der Servers.txt Datei abruft.
Der Parameterwert wird in Klammern eingeschlossen, um Windows PowerShell so zu leiten, dass der Get-Command
Befehl ausgeführt wird, bevor der Wert verwendet wird.
Wie bei allen Remotebefehlen müssen Sie Windows PowerShell mit der Option „Als Administrator ausführen“ starten, wenn der Befehl auf dem lokalen Computer ausgeführt wird (wenn der Wert des PSComputerName-Parameters den lokalen Computer enthält).
Beispiel 2: Ausführen eines Cmdlets mit Parametern
$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5
Der erste Befehl verwendet das Import-Csv
Cmdlet, um ein Objekt aus dem Inhalt in der Servers.csv Datei zu erstellen. Der Befehl verwendet den Header
Parameter, um eine ServerName
Eigenschaft für die Spalte zu erstellen, die die Namen der Zielcomputer enthält, auch als "Remoteknoten" bezeichnet. Der Befehl speichert das Ergebnis in der $s
Variablen.
Der zweite Befehl verwendet den Invoke-AsWorkflow
Workflow, um einen Get-ExecutionPolicy
Befehl auf den Computern in der datei Servers.csv auszuführen. Der Befehl verwendet den CommandName-Parameter , Invoke-AsWorkflow
um den Befehl anzugeben, der im Workflow ausgeführt werden soll. Der Parameter wird Invoke-AsWorkflow
verwendetParameter
, um den Scope
Parameter des Get-ExecutionPolicy
Cmdlets mit dem Wert "Process" anzugeben. Der Befehl verwendet außerdem den PSConnectionRetryCount
allgemeinen Workflowparameter, um den Befehl auf fünf Versuche auf jeden Computer und den PSComputerName
allgemeinen Workflowparameter zu beschränken, um die Namen der Remoteknoten (Zielcomputer) anzugeben. Der Wert des PSComputerName
Parameters ist ein Ausdruck, der die ServerName
Eigenschaft jedes Objekts in der $s
Variablen abruft.
Diese Befehle führen einen Get-ExecutionPolicy
Befehl als Workflow auf Hunderten von Computern aus.
Der Befehl verwendet den Scope
Parameter des Get-ExecutionPolicy
Cmdlets mit dem Wert " Process ", um die Ausführungsrichtlinie in der aktuellen Sitzung abzurufen.
Beispiel 3: Ausführen eines Ausdrucks als Workflow
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
Dieser Befehl verwendet den Invoke-AsWorkflow
Workflow, um einen Ipconfig-Befehl als Workflowauftrag auf den Computern auszuführen, die in der datei DomainControllers.txt aufgeführt sind.
Der Befehl verwendet den Expression
Parameter, um den auszuführenden Ausdruck anzugeben.
Er verwendet den PSComputerName
allgemeinen Workflowparameter, um die Namen der Remoteknoten (Zielcomputer) anzugeben.
Der Befehl verwendet außerdem die AsJob
allgemeinen Parameter und JobName
Workflows, um den Workflow als Hintergrundauftrag auf jedem Computer mit dem Auftragsnamen "Ipconfig" auszuführen.
Der Befehl gibt ein ContainerParentJob
Objekt (System.Management.Automation.ContainerParentJob
) zurück, das die Workflowaufträge auf jedem Computer enthält.
Parameter
-CommandName
Führt das angegebene Cmdlet oder die angegebene erweiterte Funktion als Workflow aus.
Geben Sie den Cmdlet- oder Funktionsnamen ein, zUpdate-Help
. B. , oder Set-ExecutionPolicy
Set-NetFirewallRule
.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Expression
Gibt den Ausdruck an, den dieses Cmdlet als Workflow ausführt.
Geben Sie den Ausdruck als Zeichenfolge ein, z "ipconfig /all"
. B. .
Wenn der Ausdruck Leerzeichen oder Sonderzeichen enthält, müssen Sie ihn in Anführungszeichen einschließen.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-InputObject
Wird verwendet, um Pipelineeingaben zu ermöglichen.
Typ: | Object |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Parameter
Gibt die Parameter und Parameterwerte des Befehls an, der CommandName
im Parameter angegeben ist.
Geben Sie eine Hashtabelle ein, in der jeder Schlüssel ein Parametername ist und sein Wert der Parameterwert ist, z @{ExecutionPolicy="AllSigned"}
. B. .
Informationen zu Hashtabellen finden Sie unter about_Hash_Tables.
Typ: | Hashtable |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können jedes Objekt an dieses Cmdlet weiterleiten.
Ausgaben
None
Dieser Befehl gibt keine eigene Ausgabe zurück, aber der ausgeführte Workflow gibt möglicherweise eine Ausgabe zurück.