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

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

Object

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.