about_Workflows

Descrizione breve

Fornisce una breve introduzione alla funzionalità flusso di lavoro di PowerShell.

Descrizione lunga

Il flusso di lavoro di PowerShell offre i vantaggi di Windows Workflow Foundation a PowerShell e consente di scrivere ed eseguire flussi di lavoro.

Il flusso di lavoro di PowerShell è stato introdotto in PowerShell 3.0 e il modulo è disponibile fino a PowerShell 5.1. Per altre informazioni sul flusso di lavoro di PowerShell, vedere la Guida ai flussi di lavoro e la scrittura di un flusso di lavoro di Windows PowerShell.

Informazioni sui flussi di lavoro

I flussi di lavoro sono comandi costituiti da una sequenza ordinata di attività correlate. In genere, vengono eseguiti per un lungo periodo di tempo, raccogliendo dati da e apportando modifiche a centinaia di computer, spesso in ambienti eterogenei.

I flussi di lavoro possono essere scritti in XAML, nel linguaggio usato in Windows Workflow Foundation o nel linguaggio PowerShell. I flussi di lavoro vengono in genere inseriti in pacchetti nei moduli e includono argomenti della Guida. Per altre informazioni, vedere Cenni preliminari su XAML (WPF).

I flussi di lavoro sono fondamentali in un ambiente IT perché possono sopravvivere ai riavvii e ripristinare automaticamente da errori comuni. È possibile disconnettersi e riconnettersi da sessioni e computer che eseguono flussi di lavoro senza interrompere l'elaborazione del flusso di lavoro e sospendere e riprendere i flussi di lavoro in modo trasparente senza perdita di dati. Ogni attività in un flusso di lavoro può essere registrata e controllata per riferimento. I flussi di lavoro possono essere eseguiti come processi e possono essere pianificati usando la funzionalità Processi pianificati di PowerShell.

Lo stato e i dati in un flusso di lavoro vengono salvati o salvati in modo permanente all'inizio e alla fine del flusso di lavoro e in corrispondenza dei punti specificati. I punti di persistenza del flusso di lavoro funzionano come snapshot del database o checkpoint di programma per proteggere il flusso di lavoro dagli effetti delle interruzioni e degli errori. Se il flusso di lavoro non è in grado di eseguire il ripristino da un errore, è possibile usare i dati persistenti e riprendere dall'ultimo punto di persistenza, invece di riesecure un flusso di lavoro esteso dall'inizio.

Requisiti e configurazione del flusso di lavoro

Una configurazione del flusso di lavoro di PowerShell è costituita dagli elementi seguenti:

  • Un computer client che esegue il flusso di lavoro.
  • Una sessione del flusso di lavoro, PSSession, nel computer client o in un computer remoto.
  • Nodi gestiti, i computer di destinazione interessati dalle attività del flusso di lavoro.

La sessione del flusso di lavoro non è obbligatoria, ma è consigliata. Le sessioni PSSession possono sfruttare le funzionalità di ripristino e sessioni disconnesse di PowerShell per ripristinare le sessioni del flusso di lavoro disconnesse. Per altre informazioni, vedere about_Remote_Disconnected_Sessions

Poiché il computer client e il computer in cui viene eseguita la sessione del flusso di lavoro possono essere nodi gestiti, è possibile eseguire un flusso di lavoro in un singolo computer che soddisfa tutti i ruoli.

Il computer client e il computer in cui viene eseguita la sessione del flusso di lavoro devono eseguire PowerShell 3.0. Tutti i sistemi idonei sono supportati, incluse le opzioni di installazione Server Core dei sistemi operativi Windows Server.

Per eseguire flussi di lavoro che includono cmdlet, i nodi gestiti devono avere Windows PowerShell 2.0 o versione successiva. I nodi gestiti non richiedono PowerShell a meno che il flusso di lavoro non includa i cmdlet. È possibile eseguire flussi di lavoro che includono Strumentazione gestione Windows (WMI) e comandi CIM (Common Information Model) nei computer che non dispongono di PowerShell.

Come ottenere flussi di lavoro

I flussi di lavoro vengono in genere inseriti in un pacchetto nei moduli. Per importare il modulo che include un flusso di lavoro, usare qualsiasi comando nel modulo o usare il Import-Module cmdlet . I moduli vengono importati automaticamente al primo uso di qualsiasi comando nel modulo.

Per trovare i flussi di lavoro nei moduli installati nel computer, usare il Get-Command parametro CommandType del cmdlet.

Get-Command -CommandType Workflow

Come eseguire flussi di lavoro

Per eseguire un flusso di lavoro, utilizzare la procedura seguente.

  1. Quando il nodo gestito è il computer locale, questo passaggio non è obbligatorio. In caso contrario, nel computer client avviare PowerShell con l'opzione Esegui come amministratore.

    Start-Process PowerShell -Verb RunAs
    
  2. Abilitare la comunicazione remota di PowerShell nel computer che esegue la sessione del flusso di lavoro e nei nodi gestiti interessati dai flussi di lavoro che includono i cmdlet.

    È necessario eseguire questo passaggio una sola volta in ogni computer partecipante.

    Questo passaggio è obbligatorio solo quando si eseguono flussi di lavoro che includono cmdlet. Non è necessario abilitare la comunicazione remota nel computer client, a meno che la sessione dei flussi di lavoro non venga eseguita nel computer client o in nodi gestiti che eseguono PowerShell 3.0.

    Per abilitare la comunicazione remota, usare il Enable-PSRemoting cmdlet .

    Enable-PSRemoting -Force
    

    È possibile abilitare la comunicazione remota usando l'impostazione di Criteri di gruppo Attiva esecuzione script. Per altre informazioni, vedere about_Group_Policy_Settings e about_Execution_Policies.

  3. Usare i New-PSWorkflowSession cmdlet o New-PSSession per creare la sessione del flusso di lavoro.

    Il New-PSWorkflowSession cmdlet avvia una sessione che usa la configurazione della sessione predefinita Microsoft.PowerShell.Workflow nel computer di destinazione. Questa configurazione di sessione include script, file di tipo e formattazione e opzioni progettati per i flussi di lavoro.

    In alternativa, usare il New-PSSession cmdlet . Usare il parametro ConfigurationName per specificare la configurazione della sessione Microsoft.PowerShell.Workflow . Questo comando equivale all'uso del New-PSWorkflowSession cmdlet .

    Un'alternativa consiste nell'usare il New-PSSession cmdlet . Usare il parametro ConfigurationName per specificare la configurazione della sessione Microsoft.PowerShell.Workflow .

    Nel computer locale:

    $ws = New-PSWorkflowSession
    

    In un computer remoto:

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

    Se si è un amministratore nel computer della sessione del flusso di lavoro, è possibile usare il New-PSWorkflowExecutionOption cmdlet per creare impostazioni di opzione personalizzate per la configurazione della sessione del flusso di lavoro. Usare anche il Set-PSSessionConfiguration cmdlet per modificare la configurazione della sessione.

    $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. Eseguire il flusso di lavoro nella sessione del flusso di lavoro. Per specificare i nomi dei nodi gestiti, usare il parametro comune del flusso di lavoro PSComputerName .

    Negli esempi seguenti viene eseguito il flusso di lavoro denominato Test-Workflow.

    Dove il nodo gestito è il computer che ospita la sessione del flusso di lavoro:

    Invoke-Command -Session $ws {Test-Workflow}
    

    Dove i nodi gestiti sono computer remoti.

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

    Nell'esempio Test-Workflow seguente viene eseguito su centinaia di computer. Il Get-Content cmdlet ottiene i nomi dei computer da un file di testo e li salva nella $Servers variabile nel computer locale.

    Invoke-Command usa il modificatore di $Using ambito per definire la $Servers variabile nella sessione locale. Per altre informazioni sul modificatore di $Using ambito, vedere about_Remote_Variables.

    $Servers = Get-Content Servers.txt
    Invoke-Command -Session $ws {Test-Workflow -PSComputerName $Using:Servers }
    

Uso dei parametri comuni del flusso di lavoro

I parametri comuni del flusso di lavoro sono un set di parametri che PowerShell aggiunge automaticamente a tutti i flussi di lavoro. PowerShell aggiunge i parametri comuni dei cmdlet a tutti i flussi di lavoro, anche se il flusso di lavoro non usa l'attributo CmdletBinding .

Ad esempio, il flusso di lavoro seguente non definisce parametri. Tuttavia, quando si esegue il flusso di lavoro, sono presenti CommonParameters e WorkflowCommonParameters.

workflow Test-Workflow {Get-Process}
Get-Command Test-Workflow -Syntax
Test-Workflow [<WorkflowCommonParameters>] [<CommonParameters>]

I parametri comuni del flusso di lavoro includono diversi parametri essenziali per l'esecuzione dei flussi di lavoro. Ad esempio, il parametro comune PSComputerName specifica i nodi gestiti che influiscono sul flusso di lavoro.

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

Il parametro comune del flusso di lavoro PSPersist determina quando i dati del flusso di lavoro sono persistenti. Consente di aggiungere un punto di persistenza tra attività e flussi di lavoro che non definiscono punti di persistenza.

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True
}

Altri parametri comuni del flusso di lavoro consentono di specificare le caratteristiche della connessione remota ai nodi gestiti. I nomi e le funzionalità sono simili ai parametri dei cmdlet remoti, tra cui Invoke-Command.

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

Prestare attenzione a distinguere i parametri remoti che definiscono la connessione per la sessione del flusso di lavoro dai parametri comuni del PS-prefixed flusso di lavoro che definiscono la connessione ai nodi gestiti.

$ws = New-PSSession -ComputerName Server01 -ConfigurationName Microsoft.PowerShell.Workflow

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSConfigurationName Microsoft.PowerShell.Workflow
}

Alcuni parametri comuni del flusso di lavoro sono univoci per i flussi di lavoro, ad esempio il parametro PSParameterCollection che consente di specificare valori di parametri comuni del flusso di lavoro diversi per nodi remoti diversi. Per un elenco e una descrizione dei parametri comuni del flusso di lavoro, vedere about_WorkflowCommonParameters.

Vedi anche