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.