Invoke-AsWorkflow
Esegue un comando o un'espressione come flusso di lavoro di Windows PowerShell.
Sintassi
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Invoke-AsWorkflow
[-Expression <String>]
[-InputObject <Object>]
[<CommonParameters>]
Descrizione
Il flusso di lavoro Invoke-AsWorkflow
esegue qualsiasi comando o espressione come script inline in un flusso di lavoro.
Questi flussi di lavoro usano la semantica standard del flusso di lavoro, hanno tutti i parametri comuni del flusso di lavoro e offrono tutti i vantaggi dei flussi di lavoro, tra cui la possibilità di arrestare, riprendere e ripristinare.
I flussi di lavoro sono progettati per comandi a esecuzione prolungata che raccolgono dati critici, ma possono essere usati per eseguire qualsiasi comando. Per altre informazioni, vedere about_Workflows.
È anche possibile aggiungere parametri comuni del flusso di lavoro a questo comando. Per altre informazioni sui parametri comuni del flusso di lavoro, vedere about_WorkflowCommonParameters
Questo flusso di lavoro è stato introdotto in Windows PowerShell 3.0.
Esempio
Esempio 1: Eseguire un cmdlet come flusso di lavoro
Invoke-AsWorkflow -PSComputerName (Get-Content Servers.txt) -CommandName Get-ExecutionPolicy
PSComputerName PSSourceJobInstanceId Value
-------------- --------------------- -----
Server01 77b1cdf8-8226-4662-9067-cd2fa5c3b711 AllSigned
Server02 a33542d7-3cdd-4339-ab99-0e7cd8e59462 Unrestricted
Server03 279bac28-066a-4646-9497-8fcdcfe9757e AllSigned
localhost 0d858009-2cc4-47a4-a2e0-da17dc2883d0 RemoteSigned
Questo comando esegue il cmdlet Get-ExecutionPolicy
come flusso di lavoro su centinaia di computer.
Il comando usa il parametro CommandName per specificare il cmdlet eseguito nel flusso di lavoro.
Usa il parametro comune PSComputerName flusso di lavoro per specificare i computer in cui viene eseguito il comando.
Il valore del parametro PSComputerName è un comando Get-Content
che ottiene un elenco di nomi di computer dal file Servers.txt.
Il valore del parametro è racchiuso tra parentesi per indirizzare Windows PowerShell a eseguire il comando Get-Command
prima di usare il valore .
Come per tutti i comandi remoti, se il comando viene eseguito nel computer locale (se il valore del parametro PSComputerName include il computer locale), è necessario avviare Windows PowerShell con l'opzione "Esegui come amministratore".
Esempio 2: Eseguire un cmdlet con parametri
$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5
Il primo comando usa il cmdlet Import-Csv
per creare un oggetto dal contenuto nel file Servers.csv. Il comando usa il parametro Header
per creare una proprietà ServerName
per la colonna che contiene i nomi dei computer di destinazione, noti anche come "nodi remoti". Il comando salva il risultato nella variabile $s
.
Il secondo comando usa il flusso di lavoro Invoke-AsWorkflow
per eseguire un comando Get-ExecutionPolicy
nei computer nel file Servers.csv. Il comando usa il parametro CommandName di Invoke-AsWorkflow
per specificare il comando da eseguire nel flusso di lavoro. Usa il parametro Parameter
di Invoke-AsWorkflow
per specificare il parametro Scope
del cmdlet Get-ExecutionPolicy
con il valore Process. Il comando usa anche il parametro comune del flusso di lavoro PSConnectionRetryCount
per limitare il comando a cinque tentativi in ogni computer e il parametro comune del flusso di lavoro PSComputerName
per specificare i nomi dei nodi remoti (computer di destinazione). Il valore del parametro PSComputerName
è un'espressione che ottiene la proprietà ServerName
di ogni oggetto nella variabile $s
.
Questi comandi eseguono un comando Get-ExecutionPolicy
come flusso di lavoro su centinaia di computer.
Il comando usa il parametro Scope
del cmdlet Get-ExecutionPolicy
con il valore Process per ottenere i criteri di esecuzione nella sessione corrente.
Esempio 3: Eseguire un'espressione come flusso di lavoro
Invoke-AsWorkflow -Expression "ipconfig /all" -PSComputerName (Get-Content DomainControllers.txt) -AsJob -JobName IPConfig
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 IpConfig PSWorkflowJob Completed True Server01, Server01... Invoke-AsWorkflow
Questo comando usa il flusso di lavoro Invoke-AsWorkflow
per eseguire un comando Ipconfig come processo del flusso di lavoro nei computer elencati nel file DomainControllers.txt.
Il comando usa il parametro Expression
per specificare l'espressione da eseguire.
Usa il parametro comune del flusso di lavoro PSComputerName
per specificare i nomi dei nodi remoti (computer di destinazione).
Il comando usa anche i parametri comuni AsJob
e JobName
flusso di lavoro per eseguire il flusso di lavoro come processo in background in ogni computer con il nome del processo "Ipconfig".
Il comando restituisce un oggetto ContainerParentJob
(System.Management.Automation.ContainerParentJob
) che contiene i processi del flusso di lavoro in ogni computer.
Parametri
-CommandName
Esegue il cmdlet specificato o la funzione avanzata come flusso di lavoro.
Immettere il nome del cmdlet o della funzione, ad esempio Update-Help
, Set-ExecutionPolicy
o Set-NetFirewallRule
.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Expression
Specifica l'espressione eseguita da questo cmdlet come flusso di lavoro.
Immettere l'espressione come stringa, ad esempio "ipconfig /all"
.
Se l'espressione include spazi o caratteri speciali, racchiudere l'espressione tra virgolette.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-InputObject
Usato per consentire l'input della pipeline.
Tipo: | Object |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Parameter
Specifica i parametri e i valori dei parametri del comando specificato nel parametro CommandName
.
Immettere una tabella hash in cui ogni chiave è un nome di parametro e il relativo valore è il valore del parametro, ad esempio @{ExecutionPolicy="AllSigned"}
.
Per informazioni sulle tabelle hash, vedere about_Hash_Tables.
Tipo: | Hashtable |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe qualsiasi oggetto a questo cmdlet.
Output
None
Questo comando non restituisce alcun output autonomo, ma il flusso di lavoro eseguito potrebbe restituire l'output.