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 verwenden die standardmäßige Workflowsemantik, verfügen über alle gemeinsamen Workflowparameter und haben alle Vorteile von Workflows, einschließlich der Möglichkeit zum Beenden, Fortsetzen und Wiederherstellen.
Workflows sind für lange ausgeführte Befehle konzipiert, die wichtige Daten sammeln, aber zum Ausführen eines beliebigen Befehls verwendet werden können. 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 Cmdlet Get-ExecutionPolicy
als Workflow auf Hunderten von Computern ausgeführt.
Der Befehl verwendet den parameter CommandName, um das Cmdlet anzugeben, das im Workflow ausgeführt wird.
Es verwendet den PSComputerName allgemeinen 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 zu leiten, um den Get-Command
Befehl auszuführen, bevor der Wert verwendet wird.
Wie bei allen Remotebefehlen, wenn der Befehl auf dem lokalen Computer ausgeführt wird (wenn der Wert des PSComputerName-Parameters den lokalen Computer enthält), müssen Sie Windows PowerShell mit der Option "Als Administrator ausführen" starten.
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 Cmdlet Import-Csv
, um ein Objekt aus dem Inhalt 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 zum Ausführen eines Get-ExecutionPolicy
Befehls auf den Computern in der Servers.csv Datei. Der Befehl verwendet den CommandName Parameter von Invoke-AsWorkflow
, um den Befehl anzugeben, der im Workflow ausgeführt werden soll. Er verwendet den Parameter
-Parameter von Invoke-AsWorkflow
, um den Scope
Parameter des Cmdlets Get-ExecutionPolicy
mit dem Wert Processanzugeben. Der Befehl verwendet außerdem den allgemeinen PSConnectionRetryCount
Workflowparameter, um den Befehl auf fünf Versuche auf jeden Computer und den allgemeinen PSComputerName
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 cmdlets Get-ExecutionPolicy
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 DomainControllers.txt Datei aufgeführt sind.
Der Befehl verwendet den parameter Expression
, 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 allgemeinen AsJob
und JobName
Workflow, 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 erweiterte Funktion als Workflow aus.
Geben Sie den Cmdlet- oder Funktionsnamen ein, z. B. Update-Help
, Set-ExecutionPolicy
oder 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. B. "ipconfig /all"
.
Wenn der Ausdruck Leerzeichen oder Sonderzeichen enthält, schließen Sie den Ausdruck in Anführungszeichen ein.
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 im CommandName
-Parameter angegeben ist.
Geben Sie eine Hashtabelle ein, in der jeder Schlüssel ein Parametername ist und sein Wert der Parameterwert ist, z. B. @{ExecutionPolicy="AllSigned"}
.
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 den InputObject
-Parameter übergeben.
Ausgaben
None
Dieser Befehl generiert keine Ausgabe. Sie führt jedoch den Workflow aus, der möglicherweise eine Ausgabe generiert.