Condividi tramite


Invoke-AsWorkflow

Esegue un comando o un'espressione come flusso di lavoro di Windows PowerShell.

Sintassi

Command (Impostazione predefinita)

Invoke-AsWorkflow
    [-CommandName <String>]
    [-Parameter <Hashtable>]
    [-InputObject <Object>]
    [<CommonParameters>]

Expression

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 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 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-ExecutionPolicyo Set-NetFirewallRule.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

Command
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti: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.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

Expression
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-InputObject

Usato per consentire l'input della pipeline.

Proprietà dei parametri

Tipo:Object
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti: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.

Proprietà dei parametri

Tipo:Hashtable
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

Command
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

Object

È possibile passare qualsiasi oggetto come input a questo cmdlet.

Output

None

Questo comando non restituisce alcun output autonomo, ma il flusso di lavoro eseguito potrebbe restituire l'output.