Informationen über_Workflows

Kurze Beschreibung

Enthält eine kurze Einführung in das PowerShell-Workflowfeature.

Lange Beschreibung

PowerShell-Workflow bringt die Vorteile von Windows Workflow Foundation in PowerShell und ermöglicht Ihnen das Schreiben und Ausführen von Workflows.

PowerShell-Workflow wurde in PowerShell 3.0 eingeführt, und das Modul ist bis PowerShell 5.1 verfügbar. Weitere Informationen zum PowerShell-Workflow finden Sie im Leitfaden zu Workflows und Schreiben eines Windows PowerShell Workflows.

Informationen zu Workflows

Workflows sind Befehle, die aus einer geordneten Sequenz verwandter Aktivitäten bestehen. In der Regel werden sie für einen längeren Zeitraum ausgeführt, sammeln Daten von Hunderten von Computern und nehmen Änderungen vor, häufig in heterogenen Umgebungen.

Workflows können in XAML, der in Windows Workflow Foundation verwendeten Sprache oder in der PowerShell-Sprache geschrieben werden. Workflows werden in der Regel in Module gepackt und enthalten Hilfethemen. Weitere Informationen finden Sie unter XAML Overview (WPF).

Workflows sind in einer IT-Umgebung wichtig, da sie Neustarts überstehen und nach häufigen Fehlern automatisch wiederhergestellt werden können. Sie können Sitzungen und Computer, auf denen Workflows ausgeführt werden, ohne die Workflowverarbeitung zu unterbrechen, trennen und wieder verbinden und Workflows transparent ohne Datenverlust anhalten und fortsetzen. Jede Aktivität in einem Workflow kann als Referenz protokolliert und überwacht werden. Workflows können als Aufträge ausgeführt und mit dem Feature Geplante Aufträge von PowerShell geplant werden.

Der Zustand und die Daten in einem Workflow werden am Anfang und Ende des Workflows und an den von Ihnen angegebenen Punkten gespeichert oder beibehalten. Workflowpersistenzpunkte funktionieren wie Datenbankmomentaufnahmen oder Programmprüfpunkte, um den Workflow vor den Auswirkungen von Unterbrechungen und Fehlern zu schützen. Wenn der Workflow nach einem Fehler nicht wiederhergestellt werden kann, können Sie die persistenten Daten verwenden und ab dem letzten Persistenzpunkt fortsetzen, anstatt einen umfangreichen Workflow von Anfang an erneut auszuführen.

Workflowanforderungen und -konfiguration

Eine PowerShell-Workflowkonfiguration besteht aus den folgenden Elementen:

  • Ein Clientcomputer, auf dem der Workflow ausgeführt wird.
  • Eine Workflowsitzung, PSSession, auf dem Clientcomputer oder auf einem Remotecomputer.
  • Verwaltete Knoten, die Zielcomputer, die von den Workflowaktivitäten betroffen sind.

Die Workflowsitzung ist nicht erforderlich, wird aber empfohlen. PSSessions kann die robusten Wiederherstellungs- und Getrennten Sitzungen-Features von PowerShell nutzen, um getrennte Workflowsitzungen wiederherzustellen. Weitere Informationen finden Sie unter about_Remote_Disconnected_Sessions

Da der Clientcomputer und der Computer, auf dem die Workflowsitzung ausgeführt wird, verwaltete Knoten sein können, können Sie einen Workflow auf einem einzelnen Computer ausführen, der alle Rollen erfüllt.

Auf dem Clientcomputer und auf dem Computer, auf dem die Workflowsitzung ausgeführt wird, müssen PowerShell 3.0 ausgeführt werden. Alle berechtigten Systeme werden unterstützt, einschließlich der Server Core-Installationsoptionen von Windows Server-Betriebssystemen.

Zum Ausführen von Workflows, die Cmdlets enthalten, müssen die verwalteten Knoten über Windows PowerShell 2.0 oder höher verfügen. Verwaltete Knoten erfordern keine PowerShell, es sei denn, der Workflow enthält Cmdlets. Sie können Workflows ausführen, die Windows-Verwaltungsinstrumentation (WMI) und CIM-Befehle (Common Information Model) auf Computern ohne PowerShell enthalten.

Abrufen von Workflows

Workflows werden in der Regel in Module gepackt. Um das Modul zu importieren, das einen Workflow enthält, verwenden Sie einen beliebigen Befehl im Modul, oder verwenden Sie das Import-Module Cmdlet. Module werden automatisch bei der ersten Verwendung eines Befehls im Modul importiert.

Verwenden Sie den CommandType-Parameter des Cmdlets, um die Workflows in Modulen zu finden, die Get-Command auf Ihrem Computer installiert sind.

Get-Command -CommandType Workflow

Ausführen von Workflows

Führen Sie zum Ausführen eines Workflows das folgende Verfahren aus.

  1. Wenn der verwaltete Knoten der lokale Computer ist, ist dieser Schritt nicht erforderlich. Andernfalls starten Sie PowerShell auf dem Clientcomputer mit der Option Als Administrator ausführen.

    Start-Process PowerShell -Verb RunAs
    
  2. Aktivieren Sie PowerShell-Remoting auf dem Computer, auf dem die Workflowsitzung ausgeführt wird, und auf verwalteten Knoten, die von Workflows betroffen sind, die Cmdlets enthalten.

    Sie müssen diesen Schritt nur einmal auf jedem teilnehmenden Computer ausführen.

    Dieser Schritt ist nur erforderlich, wenn Workflows ausgeführt werden, die Cmdlets enthalten. Sie müssen remoting nicht auf dem Clientcomputer aktivieren, es sei denn, die Workflowsitzung wird auf dem Clientcomputer oder auf allen verwalteten Knoten ausgeführt, auf denen PowerShell 3.0 ausgeführt wird.

    Verwenden Sie das Enable-PSRemoting Cmdlet, um Remoting zu aktivieren.

    Enable-PSRemoting -Force
    

    Sie können Remoting aktivieren, indem Sie die Einstellung Skriptausführung aktivieren Gruppenrichtlinie verwenden. Weitere Informationen finden Sie unter about_Group_Policy_Settings und about_Execution_Policies.

  3. Verwenden Sie die New-PSWorkflowSession Cmdlets oder New-PSSession , um die Workflowsitzung zu erstellen.

    Das New-PSWorkflowSession Cmdlet startet eine Sitzung, die die integrierte Sitzungskonfiguration Microsoft.PowerShell.Workflow auf dem Zielcomputer verwendet. Diese Sitzungskonfiguration umfasst Skripts, Typ- und Formatierungsdateien sowie Optionen, die für Workflows konzipiert sind.

    Oder verwenden Sie das New-PSSession Cmdlet. Verwenden Sie den Parameter ConfigurationName , um die Microsoft.PowerShell.Workflow-Sitzungskonfiguration anzugeben. Dieser Befehl ist identisch mit der Verwendung des Cmdlets New-PSWorkflowSession .

    Alternativ können Sie das New-PSSession Cmdlet verwenden. Verwenden Sie den Parameter ConfigurationName , um die Microsoft.PowerShell.Workflow-Sitzungskonfiguration anzugeben.

    Auf dem lokalen Computer:

    $ws = New-PSWorkflowSession
    

    Auf einem Remotecomputer:

    $ws = New-PSWorkflowSession -ComputerName Server01 `
    -Credential Domain01\Admin01
    

    Wenn Sie Administrator auf dem Workflowsitzungscomputer sind, können Sie das New-PSWorkflowExecutionOption Cmdlet verwenden, um benutzerdefinierte Optionseinstellungen für die Workflowsitzungskonfiguration zu erstellen. Verwenden Sie das Set-PSSessionConfiguration Cmdlet, um die Sitzungskonfiguration zu ändern.

    $sto = New-PSWorkflowExecutionOption -MaxConnectedSessions 150
    Invoke-Command -ComputerName Server01 `
    {Set-PSSessionConfiguration Microsoft.PowerShell.Workflow `
    -SessionTypeOption $Using:sto}
    $ws = New-PSWorkflowSession -ComputerName Server01 `
    -Credential Domain01\Admin01
    
  4. Führen Sie den Workflow in der Workflowsitzung aus. Um die Namen der verwalteten Knoten und Zielcomputer anzugeben, verwenden Sie den allgemeinen Parameter "PSComputerName ".

    In den folgenden Beispielen wird der Workflow mit dem Namen Test-Workflowausgeführt.

    Wobei der verwaltete Knoten der Computer ist, auf dem die Workflowsitzung gehostet wird:

    Invoke-Command -Session $ws {Test-Workflow}
    

    Dabei handelt es sich bei den verwalteten Knoten um Remotecomputer.

    Invoke-Command -Session $ws{
    Test-Workflow -PSComputerName Server01, Server02 }
    

    Im folgenden Beispiel wird auf Test-Workflow Hunderten von Computern ausgeführt. Das Get-Content Cmdlet ruft die Computernamen aus einer Textdatei ab und speichert sie in der $Servers Variablen auf dem lokalen Computer.

    Invoke-Command verwendet den Bereichsmodifizierer $Using , um die $Servers Variable in der lokalen Sitzung zu definieren. Weitere Informationen zum Bereichsmodifizierer $Using finden Sie unter about_Remote_Variables.

    $Servers = Get-Content Servers.txt
    Invoke-Command -Session $ws {Test-Workflow -PSComputerName $Using:Servers }
    

Verwenden allgemeiner Workflowparameter

Die allgemeinen Workflowparameter sind eine Reihe von Parametern, die Von PowerShell automatisch zu allen Workflows hinzugefügt werden. PowerShell fügt allen Workflows allgemeine Parameter des Cmdlets hinzu, auch wenn der Workflow nicht das CmdletBinding-Attribut verwendet.

Der folgende Workflow definiert beispielsweise keine Parameter. Wenn Sie den Workflow ausführen, verfügt er jedoch sowohl über CommonParameters als auch über WorkflowCommonParameters.

workflow Test-Workflow {Get-Process}
Get-Command Test-Workflow -Syntax
Test-Workflow [<WorkflowCommonParameters>] [<CommonParameters>]

Die allgemeinen Workflowparameter umfassen mehrere Parameter, die für die Ausführung von Workflows unerlässlich sind. Der allgemeine Parameter PSComputerName gibt beispielsweise die verwalteten Knoten an, auf die sich der Workflow auswirkt.

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02
}

Der allgemeine PSPersist-Workflowparameter bestimmt, wann Workflowdaten beibehalten werden. Es ermöglicht Ihnen das Hinzufügen von Persistenzpunkten zwischen Aktivitäten zu Workflows, die keine Persistenzpunkte definieren.

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True
}

Mit anderen allgemeinen Workflowparametern können Sie die Merkmale der Remoteverbindung mit den verwalteten Knoten angeben. Ihre Namen und Funktionen ähneln den Parametern von Remoting-Cmdlets, einschließlich Invoke-Command.

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPort 443
}

Unterscheiden Sie die Remotingparameter, die die Verbindung für die Workflowsitzung definieren, von den PS-prefixed allgemeinen Workflowparametern, die die Verbindung mit den verwalteten Knoten definieren.

$ws = New-PSSession -ComputerName Server01 -ConfigurationName Microsoft.PowerShell.Workflow

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSConfigurationName Microsoft.PowerShell.Workflow
}

Einige allgemeine Workflowparameter sind für Workflows eindeutig, z. B. der PSParameterCollection-Parameter , mit dem Sie verschiedene allgemeine Workflowparameterwerte für verschiedene Remoteknoten angeben können. Eine Liste und Beschreibung der allgemeinen Workflowparameter finden Sie unter about_WorkflowCommonParameters.

Weitere Informationen