Invoke-AsWorkflow
Kör ett kommando eller uttryck som ett Windows PowerShell arbetsflöde.
Syntax
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Invoke-AsWorkflow
[-Expression <String>]
[-InputObject <Object>]
[<CommonParameters>]
Description
Arbetsflödet Invoke-AsWorkflow
kör valfritt kommando eller uttryck som ett infogat skript i ett arbetsflöde.
Dessa arbetsflöden använder standardarbetsflödets semantik, har alla vanliga parametrar för arbetsflöden och har alla fördelar med arbetsflöden, inklusive möjligheten att stoppa, återuppta och återställa.
Arbetsflöden är utformade för tidskrävande kommandon som samlar in viktiga data, men kan användas för att köra alla kommandon. Mer information finns i about_Workflows.
Du kan också lägga till vanliga parametrar för arbetsflödet i det här kommandot. Mer information om vanliga parametrar för arbetsflöden finns i about_WorkflowCommonParameters
Det här arbetsflödet introduceras i Windows PowerShell 3.0.
Exempel
Exempel 1: Kör en cmdlet som ett arbetsflöde
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
Det här kommandot kör cmdleten Get-ExecutionPolicy
som ett arbetsflöde på hundratals datorer.
Kommandot använder parametern CommandName för att ange den cmdlet som körs i arbetsflödet.
Den använder den vanliga parametern PSComputerName workflow för att ange de datorer som kommandot körs på.
Värdet för parametern PSComputerName är ett Get-Content
kommando som hämtar en lista med datornamn från den Servers.txt filen.
Parametervärdet omges av parenteser för att dirigera Windows PowerShell att köra Get-Command
kommandot innan värdet används.
Som med alla fjärrkommandon måste du börja Windows PowerShell med alternativet "Kör som administratör" (om värdet för parametern PSComputerName innehåller den lokala datorn).
Exempel 2: Kör en cmdlet med parametrar
$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5
Det första kommandot använder cmdleten Import-Csv
för att skapa ett objekt från innehållet i den Servers.csv filen. Kommandot använder parametern Header
för att skapa en ServerName
egenskap för kolumnen som innehåller namnen på måldatorerna, även kallade "fjärrnoder". Kommandot sparar resultatet i variabeln $s
.
Det andra kommandot använder Invoke-AsWorkflow
arbetsflödet för att köra ett Get-ExecutionPolicy
kommando på datorerna i den Servers.csv filen. Kommandot använder parametern Invoke-AsWorkflow
CommandName för för att ange kommandot som ska köras i arbetsflödet. Den använder parametern Parameter
Invoke-AsWorkflow
för för att ange parametern Scope
för cmdleten Get-ExecutionPolicy
med värdet Process. Kommandot använder också den PSConnectionRetryCount
gemensamma arbetsflödesparametern för att begränsa kommandot till fem försök på varje dator och arbetsflödets PSComputerName
gemensamma parameter för att ange namnen på fjärrnoderna (måldatorer). Värdet för parametern PSComputerName
är ett uttryck som hämtar egenskapen för ServerName
varje objekt i variabeln $s
.
Dessa kommandon kör ett Get-ExecutionPolicy
kommando som ett arbetsflöde på hundratals datorer.
Kommandot använder parametern Scope
för cmdleten Get-ExecutionPolicy
med värdet Process för att hämta körningsprincipen i den aktuella sessionen.
Exempel 3: Kör ett uttryck som ett arbetsflöde
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
Det här kommandot använder Invoke-AsWorkflow
arbetsflödet för att köra ett Ipconfig-kommando som ett arbetsflödesjobb på de datorer som anges i DomainControllers.txt-filen.
Kommandot använder parametern Expression
för att ange vilket uttryck som ska köras.
Den använder den PSComputerName
gemensamma arbetsflödesparametern för att ange namnen på fjärrnoderna (måldatorer).
Kommandot använder AsJob
också de vanliga parametrarna och JobName
för arbetsflödet för att köra arbetsflödet som ett bakgrundsjobb på varje dator med jobbnamnet "Ipconfig".
Kommandot returnerar ett ContainerParentJob
-objekt (System.Management.Automation.ContainerParentJob
) som innehåller arbetsflödesjobben på varje dator.
Parametrar
-CommandName
Kör den angivna cmdleten eller den avancerade funktionen som ett arbetsflöde.
Ange cmdleten eller funktionsnamnet, till exempel Update-Help
, Set-ExecutionPolicy
eller Set-NetFirewallRule
.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Expression
Anger det uttryck som denna cmdlet körs som ett arbetsflöde.
Ange uttrycket som en sträng, till exempel "ipconfig /all"
.
Om uttrycket innehåller blanksteg eller specialtecken omger du uttrycket inom citattecken.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Används för att tillåta pipelineindata.
Type: | Object |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Parameter
Anger parametrarna och parametervärdena för kommandot som anges i parametern CommandName
.
Ange en hash-tabell där varje nyckel är ett parameternamn och dess värde är parametervärdet, till exempel @{ExecutionPolicy="AllSigned"}
.
Information om hash-tabeller finns i about_Hash_Tables.
Type: | Hashtable |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indata
Du kan skicka valfritt objekt till parametern InputObject
.
Utdata
None
Det här kommandot genererar inga utdata. Den kör dock arbetsflödet, vilket kan generera utdata.