Sök…


Introduktion

PowerShell Workflow är en funktion som introducerades med början med PowerShell version 3.0. Arbetsflödesdefinitioner ser mycket lik PowerShell-funktionens definitioner, men de körs i Windows Workflow Foundation-miljön, istället för direkt i PowerShell-motorn.

Flera unika "out of box" -funktioner ingår i Workflow-motorn, framför allt jobbbeständighet.

Anmärkningar

PowerShell Workflow-funktionen stöds exklusivt på Microsoft Windows-plattformen under PowerShell Desktop Edition. PowerShell Core Edition, som stöds på Linux, Mac och Windows, stöder inte PowerShell Workflow-funktionen.

När du skapar ett PowerShell Workflow, kom ihåg att arbetsflöden kallar aktiviteter, inte cmdlets. Du kan fortfarande ringa cmdlets från ett PowerShell-arbetsflöde, men Workflow Engine kommer implicit att radera in InlineScript invokningen i en InlineScript aktivitet. Du kan också uttryckligen linda in kod i InlineScript aktiviteten, som kör PowerShell-koden; InlineScript standard InlineScript aktiviteten i en separat process och returnerar resultatet till det anropande arbetsflödet.

Enkelt exempel på arbetsflöden

workflow DoSomeWork {
  Get-Process -Name notepad | Stop-Process 
}

Detta är ett grundläggande exempel på en PowerShell Workflow-definition.

Arbetsflöde med ingångsparametrar

Precis som PowerShell-funktioner kan arbetsflöden acceptera ingångsparameter. Ingångsparametrar kan valfritt bindas till en specifik datatyp, till exempel en sträng, heltal osv. Använd standardparametern param att definiera ett block av inmatningsparametrar, direkt efter arbetsflödesdeklarationen.

workflow DoSomeWork {
  param (
    [string[]] $ComputerName
  )
  Get-Process -ComputerName $ComputerName
}

DoSomeWork -ComputerName server01, server02, server03

Kör arbetsflöde som ett bakgrundsjobb

PowerShell-arbetsflöden är i sig utrustade med förmågan att köra som ett bakgrundsjobb. Om du vill kalla ett arbetsflöde som ett PowerShell-bakgrundsjobb använder du -AsJob parametern när du anropar arbetsflödet.

workflow DoSomeWork {
  Get-Process -ComputerName server01
  Get-Process -ComputerName server02
  Get-Process -ComputerName server03
}

DoSomeWork -AsJob

Lägg till ett parallellt block i ett arbetsflöde

workflow DoSomeWork {
  parallel {
    Get-Process -ComputerName server01
    Get-Process -ComputerName server02
    Get-Process -ComputerName server03
  }
}

En av de unika funktionerna i PowerShell Workflow är förmågan att definiera ett block av aktiviteter som parallella. Om du vill använda den här funktionen använder du det parallel nyckelordet i ditt arbetsflöde.

Att ringa arbetsflödesaktiviteter parallellt kan hjälpa till att förbättra ditt arbetsflödes prestanda.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow