Freigeben über


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-ExecutionPolicySet-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

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.