Informationen über_Workflows

Kurze Beschreibung

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

Lange Beschreibung

PowerShell Workflow bietet die Vorteile der Windows Workflow Foundation für 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 unter 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 über einen längeren Zeitraum ausgeführt, sammeln Daten von Hunderten von Computern und nimmt Änderungen daran 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 sind in der Regel in Modulen gepackt und enthalten Hilfethemen. Weitere Informationen finden Sie unter ÜBERSICHT über XAML (WPF).

Workflows sind in einer IT-Umgebung wichtig, da sie Neustarts überstehen und nach häufigen Ausfällen automatisch wiederhergestellt werden können. Sie können die Verbindung mit Sitzungen und Computern, auf denen Workflows ausgeführt werden, trennen und wiederherstellen, ohne die Workflowverarbeitung zu unterbrechen, und Workflows transparent ohne Datenverlust anhalten und fortsetzen. Jede Aktivität in einem Workflow kann protokolliert und zu Referenzzwecken überwacht werden. Workflows können als Aufträge ausgeführt und mithilfe des Features 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 ausführen zu müssen.

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 jedoch empfohlen. PSSessions kann die robusten Funktionen für die Wiederherstellung und getrennte Sitzungen von PowerShell nutzen, um getrennte Workflowsitzungen wiederherzustellen. Weitere Informationen finden Sie unter about_Remote_Disconnected_Sessions

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

Auf dem Clientcomputer und dem Computer, auf dem die Workflowsitzung ausgeführt wird, muss 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. Für verwaltete Knoten ist PowerShell nur erforderlich, wenn der Workflow Cmdlets enthält. Sie können Workflows ausführen, die befehle Windows Management Instrumentation (WMI) und Common Information Model (CIM) auf Computern ohne PowerShell enthalten.

Abrufen von Workflows

Workflows werden in der Regel in Modulen gepackt. Verwenden Sie zum Importieren des Moduls, das einen Workflow enthält, einen beliebigen Befehl im Modul oder das Import-Module Cmdlet . Module werden bei der ersten Verwendung eines beliebigen Befehls im Modul automatisch importiert.

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

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 beteiligten Computer durchführen.

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

    Verwenden Sie zum Aktivieren von Remoting das Enable-PSRemoting Cmdlet .

    Enable-PSRemoting -Force
    

    Sie können Das Remoting mithilfe der Einstellung Skriptausführung aktivieren Gruppenrichtlinie aktivieren. 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 ConfigurationName-Parameter , um die Sitzungskonfiguration Microsoft.PowerShell.Workflow anzugeben. Dieser Befehl entspricht der Verwendung des New-PSWorkflowSession Cmdlets.

    Eine Alternative ist die Verwendung des New-PSSession Cmdlets. Verwenden Sie den ConfigurationName-Parameter , um die Sitzungskonfiguration Microsoft.PowerShell.Workflow 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 außerdem 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 PsComputerName-Workflowparameter .

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

    Dabei ist der verwaltete Knoten der Computer, der die Workflowsitzung hostet:

    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 $Using Bereichsmodifizierer, um die $Servers Variable in der lokalen Sitzung zu definieren. Weitere Informationen zum $Using Bereichsmodifizierer 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 PowerShell automatisch allen Workflows hinzufügt. PowerShell fügt allen Workflows die allgemeinen Cmdlet-Parameter hinzu, auch wenn der Workflow nicht das CmdletBinding-Attribut verwendet.

Der folgende Workflow definiert beispielsweise keine Parameter. Wenn Sie den Workflow jedoch ausführen, verfügt er 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 wichtig sind. Beispielsweise gibt der allgemeine Parameter PSComputerName 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. Damit können Sie Workflows, die keine Persistenzpunkte definieren, Persistenzpunkte zwischen Aktivitäten hinzufügen.

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
}

Achten Sie darauf, die Remotingparameter, die die Verbindung für die Workflowsitzung definieren, von den PS-prefixed allgemeinen Workflowparametern zu unterscheiden, 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 unterschiedliche allgemeine Workflowparameterwerte für verschiedene Remoteknoten angeben können. Eine Liste und Beschreibung der allgemeinen Workflowparameter finden Sie unter about_WorkflowCommonParameters.

Siehe auch