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.
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
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.
Usare i
New-PSWorkflowSession
cmdlet oNew-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 delNew-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 ilSet-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
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. IlGet-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.