Invoke-AsWorkflow

Kör ett kommando eller uttryck som ett Windows PowerShell-arbetsflöde.

Syntax

Command (Standard)

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

Expression

Invoke-AsWorkflow
    [-Expression <String>]
    [-InputObject <Object>]
    [<CommonParameters>]

Description

Det Invoke-AsWorkflow arbetsflödet 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 gemensamma parametern PSComputerName arbetsflöde 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 över datornamn från Servers.txt-filen. Parametervärdet omges av parenteser för att dirigera Windows PowerShell att köra kommandot Get-Command innan värdet används.

Som med alla fjärrkommandon måste du starta Windows PowerShell med alternativet Kör som administratör om kommandot körs på den lokala datorn (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 filen Servers.csv. 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 arbetsflödet Invoke-AsWorkflow för att köra ett Get-ExecutionPolicy-kommando på datorerna i Servers.csv-filen. Kommandot använder parametern CommandName för Invoke-AsWorkflow för att ange kommandot som ska köras i arbetsflödet. Den använder parametern Parameter för Invoke-AsWorkflow för att ange parametern Scope för cmdleten Get-ExecutionPolicy med värdet Process. Kommandot använder också den gemensamma parametern PSConnectionRetryCount arbetsflöde för att begränsa kommandot till fem försök på varje dator och den gemensamma parametern PSComputerName arbetsflöde för att ange namnen på fjärrnoderna (måldatorer). Värdet för parametern PSComputerName är ett uttryck som hämtar egenskapen ServerName för 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 arbetsflödet Invoke-AsWorkflow 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 gemensamma parametern PSComputerName arbetsflöde för att ange namnen på fjärrnoderna (måldatorerna).

Kommandot använder också de vanliga parametrarna AsJob och JobName arbetsflöde 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-ExecutionPolicyeller Set-NetFirewallRule.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

Command
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Expression

Anger det uttryck som den här cmdleten 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.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

Expression
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-InputObject

Används för att tillåta pipelineindata.

Parameteregenskaper

Typ:Object
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:True
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument: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.

Parameteregenskaper

Typ:Hashtable
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

Command
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

CommonParameters

Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.

Indata

Object

Du kan skicka valfritt objekt till den här cmdleten.

Utdata

None

Det här kommandot returnerar inga egna utdata, men arbetsflödet som körs kan returnera utdata.