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-ExecutionPolicyo 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

Object

È 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.