Freigeben über


Informationen zu Workflows

Kurze Beschreibung

Bietet 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 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, oft 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 verpackt und enthalten Hilfethemen. Weitere Informationen finden Sie unter XAML Overview (WPF).

Workflows sind in einer IT-Umgebung von entscheidender Bedeutung, 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, 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 zur Referenz ü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 am 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 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, muss PowerShell 3.0 ausgeführt werden. Alle berechtigten Systeme werden unterstützt, einschließlich der Server Core-Installationsoptionen von Windows Server-Betriebssystemen.

Um Workflows auszuführen, 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 Modulen 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

Gehen Sie wie folgt vor, um einen Workflow auszuführen.

  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
  1. 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 Einstellung Skriptausführung aktivieren Gruppenrichtlinie verwenden. Weitere Informationen finden Sie unter about_Group_Policy_Settings und about_Execution_Policies.

  1. Verwenden Sie die New-PSWorkflowSession Cmdlets oder 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 Parameter ConfigurationName , 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 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 ein Administrator auf dem Workflowsitzungscomputer sind, können Sie das New-PSWorkflowExecutionOption Cmdlet verwenden, um benutzerdefinierte Optionseinstellungen für die Konfiguration der Workflowsitzung 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
  1. Führen Sie den Workflow in der Workflowsitzung aus. Um die Namen der verwalteten Knoten (Zielcomputer) anzugeben, verwenden Sie den allgemeinen PsComputerName-Workflowparameter .

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

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

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

Hierbei handelt es sich bei den verwalteten Knoten um Remotecomputer.

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

Im folgenden Beispiel wird test-Workflow auf 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 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 die allgemeinen Parameter des Cmdlets 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 enthalten mehrere Parameter, die für ausgeführte Workflows unerlässlich 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. Dadurch können Sie Persistenzpunkte zwischen Aktivitäten zu Workflows hinzufü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, die die Verbindung für die Workflowsitzung definieren, von den allgemeinen Workflowparametern mit PS-Präfix 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 verschiedene allgemeine Workflowparameterwerte für verschiedene Remoteknoten angeben können. Eine Liste und Beschreibung der allgemeinen Workflowparameter finden Sie unter about_WorkflowCommonParameters.

Weitere Informationen

Invoke-AsWorkflow

New-PSSession

Handbuch zu Workflows

Schreiben Sie einen Windows PowerShell-Workflow