Delen via


Over werkstromen

Korte beschrijving

Biedt een korte inleiding tot de functie PowerShell Workflow.

Lange beschrijving

PowerShell Workflow biedt powershell de voordelen van de Windows Workflow Foundation en stelt u in staat om werkstromen te schrijven en uit te voeren.

PowerShell Workflow is geïntroduceerd in PowerShell 3.0 en de module is beschikbaar tot PowerShell 5.1. Zie de Handleiding voor werkstromen en Een Windows PowerShell-werkstroom schrijven voor meer informatie over PowerShell Workflow.

Over werkstromen

Werkstromen zijn opdrachten die bestaan uit een geordende reeks gerelateerde activiteiten. Normaal gesproken worden ze gedurende een langere periode uitgevoerd, waarbij gegevens worden verzameld van en wijzigingen worden aangebracht in honderden computers, vaak in heterogene omgevingen.

Werkstromen kunnen worden geschreven in XAML, de taal die wordt gebruikt in Windows Workflow Foundation, of in de PowerShell-taal. Werkstromen worden doorgaans verpakt in modules en bevatten Help-onderwerpen. Zie XAML Overview (WPF) voor meer informatie.

Werkstromen zijn essentieel in een IT-omgeving omdat ze het opnieuw opstarten kunnen overleven en automatisch kunnen herstellen na veelvoorkomende fouten. U kunt de verbinding verbreken en opnieuw verbinding maken met sessies en computers waarop werkstromen worden uitgevoerd zonder de werkstroomverwerking te onderbreken, en werkstromen transparant te onderbreken en hervatten zonder gegevensverlies. Elke activiteit in een werkstroom kan ter referentie worden geregistreerd en gecontroleerd. Werkstromen kunnen worden uitgevoerd als taken en kunnen worden gepland met behulp van de functie Geplande taken van PowerShell.

De status en gegevens in een werkstroom worden opgeslagen of behouden aan het begin en einde van de werkstroom en op punten die u opgeeft. Werkstroompersistentiepunten werken zoals momentopnamen van databases of programmacontrolepunten om de werkstroom te beschermen tegen de gevolgen van onderbrekingen en fouten. Als de werkstroom niet kan worden hersteld na een fout, kunt u de persistente gegevens gebruiken en hervatten vanaf het laatste persistentiepunt, in plaats van een uitgebreide werkstroom vanaf het begin opnieuw uit te voeren.

Werkstroomvereisten en -configuratie

Een PowerShell Workflow-configuratie bestaat uit de volgende elementen:

  • Een clientcomputer, waarop de werkstroom wordt uitgevoerd.
  • Een werkstroomsessie, PSSession, op de clientcomputer of op een externe computer.
  • Beheerde knooppunten, de doelcomputers die worden beïnvloed door de werkstroomactiviteiten.

De werkstroomsessie is niet vereist, maar wordt wel aanbevolen. PSSessions kunnen profiteren van de robuuste functies voor herstel en Niet-verbonden sessies van PowerShell om niet-verbonden werkstroomsessies te herstellen. Zie about_Remote_Disconnected_Sessions voor meer informatie

Omdat de clientcomputer en de computer waarop de werkstroomsessie wordt uitgevoerd, beheerde knooppunten kunnen zijn, kunt u een werkstroom uitvoeren op één computer die aan alle rollen voldoet.

Op de clientcomputer en de computer waarop de werkstroomsessie wordt uitgevoerd, moet PowerShell 3.0 worden uitgevoerd. Alle in aanmerking komende systemen worden ondersteund, inclusief de Server Core-installatieopties van Windows Server-besturingssystemen.

Als u werkstromen wilt uitvoeren die cmdlets bevatten, moeten de beheerde knooppunten Windows PowerShell 2.0 of hoger hebben. Voor beheerde knooppunten is Geen PowerShell vereist, tenzij de werkstroom cmdlets bevat. U kunt werkstromen uitvoeren met WMI-opdrachten (Windows Management Instrumentation) en CIM-opdrachten (Common Information Model) op computers die niet over PowerShell beschikken.

Werkstromen ophalen

Werkstromen worden doorgaans verpakt in modules. Als u de module wilt importeren die een werkstroom bevat, gebruikt u een opdracht in de module of gebruikt u de Import-Module cmdlet. Modules worden automatisch geïmporteerd bij het eerste gebruik van een opdracht in de module.

Als u de werkstromen wilt zoeken in modules die op uw computer zijn geïnstalleerd, gebruikt u de parameter CommandType van de Get-Command cmdlet.

Get-Command -CommandType Workflow

Werkstromen uitvoeren

Gebruik de volgende procedure om een werkstroom uit te voeren.

  1. Wanneer het beheerde knooppunt de lokale computer is, is deze stap niet vereist. Anders start u PowerShell op de clientcomputer met de optie Als administrator uitvoeren .
Start-Process PowerShell -Verb RunAs
  1. Schakel externe communicatie met PowerShell in op de computer waarop de werkstroomsessie wordt uitgevoerd en op beheerde knooppunten die worden beïnvloed door werkstromen die cmdlets bevatten.

U hoeft deze stap slechts eenmaal uit te voeren op elke deelnemende computer.

Deze stap is alleen vereist bij het uitvoeren van werkstromen die cmdlets bevatten. U hoeft externe communicatie niet in te schakelen op de clientcomputer, tenzij de werkstroomsessie wordt uitgevoerd op de clientcomputer of op beheerde knooppunten waarop PowerShell 3.0 wordt uitgevoerd.

Gebruik de Enable-PSRemoting cmdlet om externe communicatie in te schakelen.

Enable-PSRemoting -Force

U kunt externe toegang inschakelen met behulp van de instelling Scriptuitvoering inschakelen groepsbeleid. Zie about_Group_Policy_Settings en about_Execution_Policies voor meer informatie.

  1. Gebruik de New-PSWorkflowSession cmdlets of New-PSSession om de werkstroomsessie te maken.

De New-PSWorkflowSession cmdlet start een sessie die gebruikmaakt van de ingebouwde sessieconfiguratie Microsoft.PowerShell.Workflow op de doelcomputer. Deze sessieconfiguratie omvat scripts, type- en opmaakbestanden en opties die zijn ontworpen voor werkstromen.

Of gebruik de New-PSSession cmdlet. Gebruik de parameter ConfigurationName om de sessieconfiguratie Microsoft.PowerShell.Workflow op te geven. Deze opdracht is hetzelfde als het gebruik van de New-PSWorkflowSession cmdlet.

Een alternatief is om de New-PSSession cmdlet te gebruiken. Gebruik de parameter ConfigurationName om de sessieconfiguratie Microsoft.PowerShell.Workflow op te geven.

Op de lokale computer:

$ws = New-PSWorkflowSession

Op een externe computer:

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

Als u een beheerder bent op de werkstroomsessiecomputer, kunt u de New-PSWorkflowExecutionOption cmdlet gebruiken om aangepaste optie-instellingen te maken voor de configuratie van de werkstroomsessie. En gebruik de Set-PSSessionConfiguration cmdlet om de sessieconfiguratie te wijzigen.

$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. Voer de werkstroom uit in de werkstroomsessie. Als u de namen van de beheerde knooppunten, doelcomputers, wilt opgeven, gebruikt u de algemene parameter psComputerName-werkstroom .

In de volgende voorbeelden wordt de werkstroom met de naam Test-Workflow uitgevoerd.

Waarbij het beheerde knooppunt de computer is die als host fungeert voor de werkstroomsessie:

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

Waarbij de beheerde knooppunten externe computers zijn.

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

In het volgende voorbeeld wordt Test-Workflow uitgevoerd op honderden computers. De Get-Content cmdlet haalt de computernamen op uit een tekstbestand en slaat deze op in de $Servers variabele op de lokale computer.

Invoke-Command gebruikt de $Using bereikmodifier om de $Servers variabele in de lokale sessie te definiëren. Zie about_Remote_Variables voor meer informatie over het $Using wijzigen van het bereik.

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

Algemene werkstroomparameters gebruiken

De algemene parameters van de werkstroom zijn een set parameters die door PowerShell automatisch aan alle werkstromen worden toegevoegd. PowerShell voegt de cmdlet algemene parameters toe aan alle werkstromen, zelfs als de werkstroom niet gebruikmaakt van het cmdletBinding-kenmerk .

De volgende werkstroom definieert bijvoorbeeld geen parameters. Wanneer u de werkstroom uitvoert, bevat deze echter zowel CommonParameters als WorkflowCommonParameters.

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

De algemene parameters van de werkstroom bevatten verschillende parameters die essentieel zijn voor het uitvoeren van werkstromen. De algemene parameter PSComputerName geeft bijvoorbeeld de beheerde knooppunten op waarop de werkstroom van invloed is.

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

De algemene parameter PSPersist-werkstroom bepaalt wanneer werkstroomgegevens behouden blijven. Hiermee kunt u persistentiepunten tussen activiteiten toevoegen aan werkstromen die geen persistentiepunten definiëren.

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

Met andere algemene werkstroomparameters kunt u de kenmerken van de externe verbinding met de beheerde knooppunten opgeven. Hun namen en functionaliteit zijn vergelijkbaar met de parameters van externe cmdlets, waaronder Invoke-Command.

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

Zorg ervoor dat u de externe parameters die de verbinding voor de werkstroomsessie definiëren, onderscheidt van de algemene ps-voorvoegselwerkstroomparameters waarmee de verbinding met de beheerde knooppunten wordt gedefinieerd.

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

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

Sommige algemene werkstroomparameters zijn uniek voor werkstromen, zoals de parameter PSParameterCollection waarmee u verschillende algemene parameterwaarden voor de werkstroom voor verschillende externe knooppunten kunt opgeven. Zie about_WorkflowCommonParameters voor een lijst en beschrijving van de algemene parameters van de werkstroom.

Zie ook

Invoke-AsWorkflow

New-PSSession

Handleiding voor werkstromen

Een Windows PowerShell-werkstroom schrijven