Om arbetsflöden
Kort beskrivning
Ger en kort introduktion till powershell-arbetsflödesfunktionen.
Lång beskrivning
PowerShell Workflow ger PowerShell fördelarna med Windows Workflow Foundation till PowerShell och gör att du kan skriva och köra arbetsflöden.
PowerShell-arbetsflödet introducerades i PowerShell 3.0 och modulen är tillgänglig upp till PowerShell 5.1. Mer information om PowerShell-arbetsflöde finns i Arbetsflödesguiden och Skriva ett Windows PowerShell arbetsflöde.
Om arbetsflöden
Arbetsflöden är kommandon som består av en ordnad sekvens med relaterade aktiviteter. Vanligtvis körs de under en längre tid, samlar in data från och gör ändringar i hundratals datorer, ofta i heterogena miljöer.
Arbetsflöden kan skrivas i XAML, det språk som används i Windows Workflow Foundation eller på PowerShell-språket. Arbetsflöden paketeras vanligtvis i moduler och innehåller hjälpavsnitt. Mer information finns i XAML Overview (WPF).
Arbetsflöden är kritiska i en IT-miljö eftersom de kan överleva omstarter och återställas automatiskt från vanliga fel. Du kan koppla från och återansluta från sessioner och datorer som kör arbetsflöden utan att avbryta arbetsflödesbearbetningen, och pausa och återuppta arbetsflöden transparent utan dataförlust. Varje aktivitet i ett arbetsflöde kan loggas och granskas som referens. Arbetsflöden kan köras som jobb och kan schemaläggas med hjälp av funktionen Schemalagda jobb i PowerShell.
Tillståndet och data i ett arbetsflöde sparas eller sparas i början och slutet av arbetsflödet och vid de punkter som du anger. Beständighetspunkter för arbetsflöden fungerar som ögonblicksbilder av databaser eller programkontrollpunkter för att skydda arbetsflödet mot effekterna av avbrott och fel. Om arbetsflödet inte kan återställas från ett fel kan du använda beständiga data och återuppta från den senaste beständighetspunkten, i stället för att köra ett omfattande arbetsflöde igen från början.
Arbetsflödeskrav och konfiguration
En PowerShell-arbetsflödeskonfiguration består av följande element:
- En klientdator som kör arbetsflödet.
- En arbetsflödessession, PSSession, på klientdatorn eller på en fjärrdator.
- Hanterade noder, de måldatorer som påverkas av arbetsflödesaktiviteterna.
Arbetsflödessessionen krävs inte, men rekommenderas. PSSessioner kan dra nytta av funktionerna för robust återställning och frånkopplade sessioner i PowerShell för att återställa frånkopplade arbetsflödessessioner. Mer information finns i about_Remote_Disconnected_Sessions
Eftersom klientdatorn och datorn som arbetsflödessessionen körs på kan hanteras noder, kan du köra ett arbetsflöde på en enda dator som uppfyller alla roller.
Klientdatorn och datorn där arbetsflödessessionen körs måste köra PowerShell 3.0. Alla berättigade system stöds, inklusive Server Core-installationsalternativen för Windows Server-operativsystem.
Om du vill köra arbetsflöden som innehåller cmdletar måste de hanterade noderna ha Windows PowerShell 2.0 eller senare. Hanterade noder kräver inte PowerShell om inte arbetsflödet innehåller cmdletar. Du kan köra arbetsflöden som innehåller kommandon för Windows Management Instrumentation (WMI) och CIM (Common Information Model) på datorer som inte har PowerShell.
Så här hämtar du arbetsflöden
Arbetsflöden paketeras vanligtvis i moduler. Om du vill importera modulen som innehåller ett arbetsflöde använder du alla kommandon i modulen eller cmdleten Import-Module
.
Moduler importeras automatiskt vid första användningen av ett kommando i modulen.
Om du vill hitta arbetsflöden i moduler som är installerade på datorn använder du cmdletens Get-Command
CommandType-parameter .
Get-Command -CommandType Workflow
Så här kör du arbetsflöden
Använd följande procedur om du vill köra ett arbetsflöde.
- När den hanterade noden är den lokala datorn krävs inte det här steget. Annars startar du PowerShell på klientdatorn med alternativet Kör som administratör .
Start-Process PowerShell -Verb RunAs
- Aktivera PowerShell-fjärrkommunikation på den dator som kör arbetsflödessessionen och på hanterade noder som påverkas av arbetsflöden som innehåller cmdletar.
Du behöver bara göra det här steget en gång på varje deltagande dator.
Det här steget krävs bara när du kör arbetsflöden som innehåller cmdletar. Du behöver inte aktivera fjärrkommunikation på klientdatorn, såvida inte arbetsflödessessionen körs på klientdatorn eller på hanterade noder som kör PowerShell 3.0.
Om du vill aktivera fjärrkommunikation använder du cmdleten Enable-PSRemoting
.
Enable-PSRemoting -Force
Du kan aktivera fjärrkommunikation med hjälp av inställningen Aktivera skriptkörning grupprincip. Mer information finns i about_Group_Policy_Settings och about_Execution_Policies.
New-PSWorkflowSession
Använd cmdletarna ellerNew-PSSession
för att skapa arbetsflödessessionen.
Cmdleten New-PSWorkflowSession
startar en session som använder den inbyggda sessionskonfigurationen Microsoft.PowerShell.Workflow på måldatorn. Den här sessionskonfigurationen innehåller skript, typ- och formateringsfiler och alternativ som är utformade för arbetsflöden.
Eller använd cmdleten New-PSSession
. Använd parametern ConfigurationName för att ange sessionskonfigurationen för Microsoft.PowerShell.Workflow . Det här kommandot är detsamma som att använda cmdleten New-PSWorkflowSession
.
Ett alternativ är att använda cmdleten New-PSSession
. Använd parametern ConfigurationName för att ange sessionskonfigurationen för Microsoft.PowerShell.Workflow .
På den lokala datorn:
$ws = New-PSWorkflowSession
På en fjärrdator:
$ws = New-PSWorkflowSession -ComputerName Server01 `
-Credential Domain01\Admin01
Om du är administratör på datorn för arbetsflödessessionen kan du använda cmdleten New-PSWorkflowExecutionOption
för att skapa anpassade alternativinställningar för konfigurationen av arbetsflödessessionen. Och använd cmdleten Set-PSSessionConfiguration
för att ändra sessionskonfigurationen.
$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
- Kör arbetsflödet i arbetsflödessessionen. Om du vill ange namnen på de hanterade noderna använder du den gemensamma parametern PSComputerName Workflow .
I följande exempel körs arbetsflödet med namnet Test-Workflow.
Där den hanterade noden är den dator som är värd för arbetsflödessessionen:
Invoke-Command -Session $ws {Test-Workflow}
Där de hanterade noderna är fjärrdatorer.
Invoke-Command -Session $ws{
Test-Workflow -PSComputerName Server01, Server02 }
I följande exempel körs Test-Workflow på hundratals datorer. Cmdleten Get-Content
hämtar datornamnen från en textfil och sparar dem i variabeln $Servers
på den lokala datorn.
Invoke-Command
använder omfångsmodifieraren $Using
för att definiera variabeln $Servers
i den lokala sessionen. Mer information om omfångsmodifieraren $Using
finns i about_Remote_Variables.
$Servers = Get-Content Servers.txt
Invoke-Command -Session $ws {Test-Workflow -PSComputerName $Using:Servers }
Använda vanliga parametrar för arbetsflödet
Vanliga parametrar för arbetsflödet är en uppsättning parametrar som PowerShell lägger till automatiskt i alla arbetsflöden. PowerShell lägger till gemensamma cmdlet-parametrar i alla arbetsflöden, även om arbetsflödet inte använder attributet CmdletBinding .
Följande arbetsflöde definierar till exempel inga parametrar. Men när du kör arbetsflödet har det både CommonParameters och WorkflowCommonParameters.
workflow Test-Workflow {Get-Process}
Get-Command Test-Workflow -Syntax
Test-Workflow [<WorkflowCommonParameters>] [<CommonParameters>]
Vanliga parametrar för arbetsflödet innehåller flera parametrar som är viktiga för att köra arbetsflöden. Till exempel anger den gemensamma parametern PSComputerName de hanterade noder som arbetsflödet påverkar.
Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02}
Den vanliga parametern för PSPersist-arbetsflödet avgör när arbetsflödesdata sparas. Det gör att du kan lägga till beständighetspunkt mellan aktiviteter i arbetsflöden som inte definierar beständighetspunkter.
Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True}
Med andra vanliga parametrar för arbetsflödet kan du ange egenskaperna för fjärranslutningen till de hanterade noderna. Deras namn och funktioner liknar parametrarna för fjärrkommunikations-cmdletar, inklusive Invoke-Command
.
Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02 -PSPort 443}
Var noga med att skilja mellan de fjärrkommunikationsparametrar som definierar anslutningen för arbetsflödessessionen från vanliga parametrar för PS-prefix för arbetsflödet som definierar anslutningen till de hanterade noderna.
$ws = New-PSSession -ComputerName Server01 `
-ConfigurationName Microsoft.PowerShell.Workflow
Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02 `
-PSConfigurationName Microsoft.PowerShell.Workflow}
Vissa vanliga parametrar för arbetsflöden är unika för arbetsflöden, till exempel parametern PSParameterCollection som gör att du kan ange olika vanliga parametervärden för arbetsflöden för olika fjärrnoder. En lista och en beskrivning av vanliga parametrar för arbetsflödet finns i about_WorkflowCommonParameters.