PowerShell
PowerShell-arbetsflöden
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.