Invoke-AsWorkflow
Esegue un comando o un'espressione come un 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 Invoke-AsWorkflow
flusso di lavoro esegue qualsiasi comando o espressione come script inline in un flusso di lavoro.
Questi flussi di lavoro usano la semantica di flusso di lavoro standard, hanno tutti i parametri comuni del flusso di lavoro e tutti i vantaggi dei flussi di lavoro, inclusa la possibilità di arrestare, riavviare e recuperare.
I flussi di lavoro sono progettati per i comandi con 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 Get-ExecutionPolicy
cmdlet 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 del flusso di lavoro PSComputerName per specificare i computer in cui viene eseguito il comando.
Il valore del parametro PSComputerName è un Get-Content
comando 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 Get-Command
comando prima di usare il valore .
Come con 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 Import-Csv
cmdlet per creare un oggetto dal contenuto nel file Servers.csv. Il comando usa il Header
parametro per creare una ServerName
proprietà per la colonna che contiene i nomi dei computer di destinazione, noti anche come "nodi remoti". Il comando salva il risultato nella $s
variabile.
Il secondo comando usa il Invoke-AsWorkflow
flusso di lavoro per eseguire un Get-ExecutionPolicy
comando 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 Parameter
parametro di Invoke-AsWorkflow
per specificare il Scope
parametro del Get-ExecutionPolicy
cmdlet con il valore Process. Il comando usa anche il PSConnectionRetryCount
parametro comune del flusso di lavoro per limitare il comando a cinque tentativi in ogni computer e il parametro comune del PSComputerName
flusso di lavoro per specificare i nomi dei nodi remoti (computer di destinazione). Il valore del PSComputerName
parametro è un'espressione che ottiene la ServerName
proprietà di ogni oggetto nella $s
variabile.
Questi comandi eseguono un Get-ExecutionPolicy
comando come flusso di lavoro su centinaia di computer.
Il comando usa il Scope
parametro del Get-ExecutionPolicy
cmdlet 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 Invoke-AsWorkflow
flusso di lavoro per eseguire un comando Ipconfig come processo del flusso di lavoro nei computer elencati nel file DomainControllers.txt.
Il comando usa il Expression
parametro per specificare l'espressione da eseguire.
Usa il parametro comune del PSComputerName
flusso di lavoro per specificare i nomi dei nodi remoti (computer di destinazione).
Il comando usa anche i parametri comuni del AsJob
flusso di lavoro e JobName
per eseguire il flusso di lavoro come processo in background in ogni computer con il nome del processo "Ipconfig".
Il comando restituisce un ContainerParentJob
oggetto (System.Management.Automation.ContainerParentJob
) che contiene i processi del flusso di lavoro in ogni computer.
Parametri
-CommandName
Esegue il cmdlet specificato o una 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 CommandName
parametro .
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.