about_Workflows
Kort beskrivning
Ger en kort introduktion till powershell-arbetsflödesfunktionen.
Lång beskrivning
PowerShell-arbetsflödet ger 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 Översikt över XAML (WPF).
Arbetsflöden är viktiga 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 inaktivera 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 från början.
Krav och konfiguration för arbetsflöden
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 WMI-kommandon (Windows Management Instrumentation) och CIM-kommandon (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 använder cmdleten Import-Module .
Moduler importeras automatiskt vid första användningen av alla kommandon i modulen.
Använd cmdletens Get-CommandCommandType-parameter för att hitta arbetsflödena i moduler som är installerade på datorn.
Get-Command -CommandType Workflow
Så här kör du arbetsflöden
Använd följande procedur för att 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 RunAsAktivera PowerShell-fjärrkommunikation på datorn 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.
Använd cmdleten för
Enable-PSRemotingatt aktivera fjärrkommunikation.Enable-PSRemoting -ForceDu 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-PSWorkflowSessionAnvänd cmdletarna ellerNew-PSSessionför att skapa arbetsflödessessionen.Cmdleten
New-PSWorkflowSessionstartar 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 Microsoft.PowerShell.Workflow . Det här kommandot är detsamma som att använda cmdletenNew-PSWorkflowSession.Ett alternativ är att använda cmdleten
New-PSSession. Använd parametern ConfigurationName för att ange sessionskonfigurationen Microsoft.PowerShell.Workflow .På den lokala datorn:
$ws = New-PSWorkflowSessionPå en fjärrdator:
$ws = New-PSWorkflowSession -ComputerName Server01 ` -Credential Domain01\Admin01Om du är administratör på arbetsflödessessionsdatorn kan du använda cmdleten
New-PSWorkflowExecutionOptionför att skapa anpassade alternativinställningar för arbetsflödessessionskonfigurationen. Och använd cmdletenSet-PSSessionConfigurationfö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\Admin01Kör arbetsflödet i arbetsflödessessionen. Om du vill ange namnen på de hanterade noderna använder du den vanliga parametern PSComputerName-arbetsflöde .
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-Workflowpå hundratals datorer. CmdletenGet-Contenthämtar datornamnen från en textfil och sparar dem i variabeln$Serverspå den lokala datorn.Invoke-Commandanvänder omfångsmodifieraren$Usingför att definiera variabeln$Serversi den lokala sessionen. Mer information om omfångsmodifieraren$Usingfinns 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 de vanliga cmdlet-parametrarna i alla arbetsflöden, även om arbetsflödet inte använder attributet CmdletBinding .
Följande arbetsflöde definierar till exempel inga parametrar. När du kör arbetsflödet har det dock 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 vanliga 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 de fjärrkommunikationsparametrar som definierar anslutningen för arbetsflödessessionen från de PS-prefixed vanliga arbetsflödesparametrar 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 beskrivning av vanliga parametrar för arbetsflödet finns i about_WorkflowCommonParameters.