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 XAML Overview (WPF).

Arbetsflöden är viktiga i en IT-miljö eftersom de kan överleva omstarter och återställa 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. Arbetsflödets beständighetspunkter fungerar som ögonblicksbilder av databaser eller programpunkter för att skydda arbetsflödet från 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.

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, måldatorerna 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 där arbetsflödessessionen körs kan hanteras noder kan du köra ett arbetsflöde på en enda dator som uppfyller alla roller.

Klientdatorn och datorn som arbetsflödessessionen körs på 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 kommandona Windows Management Instrumentation (WMI) och Common Information Model (CIM) 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 valfritt kommando i modulen eller använder cmdleten Import-Module . Moduler importeras automatiskt vid första användningen av alla kommandon i modulen.

Om du vill hitta arbetsflödena i moduler som är installerade på datorn använder du cmdletens Get-CommandCommandType-parameter .

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.

  1. 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
    
  2. Aktivera 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 endast 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 grupprincipinställningen Aktivera skriptkörning . Mer information finns i about_Group_Policy_Inställningar och about_Execution_Policies.

  3. New-PSWorkflowSession Använd cmdletarna eller New-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 Microsoft.PowerShell.Workflow . Det här kommandot är samma som med hjälp av cmdleten New-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-PSWorkflowSession
    

    På en fjärrdator:

    $ws = New-PSWorkflowSession -ComputerName Server01 `
    -Credential Domain01\Admin01
    

    Om du är administratör på arbetsflödessessionsdatorn 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
    
  4. Kör arbetsflödet i arbetsflödessessionen. Om du vill ange namnen på de hanterade noderna använder du den vanliga parametern PSComputerName-arbetsflödet .

    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 arbetsflödesparametrar

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 gemensamma cmdlet-parametrarna 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 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 cmdletar för fjärrkommunikation, inklusive Invoke-Command.

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPort 443
}

Var noga med att särskilja de fjärrkommunikationsparametrar som definierar anslutningen för arbetsflödessessionen från de PS-prefixed vanliga parametrarna 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 arbetsflödesparametrar ä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.

Se även