Invoke-AsWorkflow
Führt einen Befehl oder Ausdruck als Windows PowerShell-Workflow aus.
Syntax
Command (Standard)
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Expression
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-ExecutionPolicyoder Set-NetFirewallRule.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
Command
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
Expression
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Wird verwendet, um Pipelineeingaben zu ermöglichen.
Parametereigenschaften
| Typ: | Object |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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.
Parametereigenschaften
| Typ: | Hashtable |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
Command
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
Object
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.