Freigeben über


Informationen über_Workflows

Kurze Beschreibung

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

Lange Beschreibung

PowerShell-Workflow bietet die Vorteile von Windows Workflow Foundation auf PowerShell und ermöglicht es Ihnen, Workflows zu schreiben und auszuführen.

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

Informationen zu Workflows

Workflows sind Befehle, die aus einer sortierten Abfolge verwandter Aktivitäten bestehen. In der Regel werden sie für einen längeren Zeitraum ausgeführt, Sammeln von Daten aus und Vornehmen von Änderungen an Hunderten von Computern, 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 verpackt und enthalten Hilfethemen. Weitere Informationen finden Sie unter Übersicht über XAML (WPF).

Workflows sind in einer IT-Umgebung kritisch, da sie Neustarts überleben und automatisch von häufig auftretenden Fehlern wiederhergestellt werden können. Sie können die Verbindung von Sitzungen und Computern trennen, auf denen Workflows ausgeführt werden, ohne die Workflowverarbeitung zu unterbrechen, und Workflows transparent ohne Datenverlust anhalten und fortsetzen. Jede Aktivität in einem Workflow kann protokolliert und auf Referenz überwacht werden. Workflows können als Aufträge ausgeführt und mithilfe des Features "Geplante Aufträge" von PowerShell geplant werden.

Der Status und die Daten in einem Workflow werden am Anfang und Am Ende des Workflows und an bestimmten von Ihnen angegebenen Punkten gespeichert oder beibehalten. Workflowpersistenzpunkte funktionieren wie Datenbank-Momentaufnahme s oder Programmprüfpunkte, um den Workflow vor den Auswirkungen von Unterbrechungen und Fehlern zu schützen. Wenn der Workflow von einem Fehler nicht wiederhergestellt werden kann, können Sie die gespeicherten Daten verwenden und vom 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 jedoch empfohlen. PSSessions kann die robusten Wiederherstellungs- und getrennten Sitzungsfeatures 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, verwaltet werden können, können Sie einen Workflow auf einem einzelnen Computer ausführen, der alle Rollen erfüllt.

Der Clientcomputer und der Computer, auf dem die Workflowsitzung ausgeführt wird, müssen PowerShell 3.0 ausführen. 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 PowerShell nicht, es sei denn, der Workflow enthält Cmdlets. Sie können Workflows ausführen, die Windows-Verwaltungsinstrumentation (WMI) und Common Information Model (CIM)-Befehle auf Computern ohne PowerShell enthalten.

So erhalten Sie Workflows

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

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

Get-Command -CommandType Workflow

Ausführen von Workflows

Verwenden Sie zum Ausführen eines Workflows das folgende Verfahren.

  1. Wenn der verwaltete Knoten der lokale Computer ist, ist dieser Schritt nicht erforderlich. Starten Sie auf dem Clientcomputer PowerShell 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 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 Gruppenrichtlinieneinstellung "Skriptausführung aktivieren" verwenden. Weitere Informationen finden Sie unter about_Group_Policy_Einstellungen und about_Execution_Policies.

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

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

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

    Eine Alternative besteht darin, das New-PSSession Cmdlet zu verwenden. Verwenden Sie den ConfigurationName-Parameter , 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 ein Administrator auf dem Workflowsitzungscomputer sind, können Sie mit dem New-PSWorkflowExecutionOption Cmdlet benutzerdefinierte Optionseinstellungen für die Workflowsitzungskonfiguration 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 anzugeben, verwenden Sie zielcomputer den allgemeinen PSComputerName-Workflowparameter .

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

    Dabei handelt es sich beim verwalteten Knoten um den Computer, auf dem die Workflowsitzung gehostet wird:

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

    Wo die verwalteten Knoten Remotecomputer sind.

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

    Im folgenden Beispiel werden Hunderte Test-Workflow 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 allen Workflows automatisch hinzufügt. PowerShell fügt allen Workflows allgemeine Cmdlet-Parameter hinzu, auch wenn der Workflow das CmdletBinding-Attribut nicht verwendet.

Der folgende Workflow definiert beispielsweise keine Parameter. Wenn Sie den Workflow jedoch ausführen, enthält er sowohl die CommonParameters als auch 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, die sich auf den Workflow auswirken.

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

Der allgemeine PSPersist-Workflowparameter bestimmt, wann Workflowdaten beibehalten werden. Es ermöglicht Ihnen, persistenzpunkt zwischen Aktivitäten zu Workflows hinzuzufügen, 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
}

Achten Sie darauf, die Remotingparameter zu unterscheiden, die die Verbindung für die Workflowsitzung von den PS-prefixed allgemeinen Workflowparametern definieren, 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.

Weitere Informationen