Invoke-AsWorkflow
Exécute une commande ou une expression comme un workflow Windows PowerShell.
Syntaxe
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Invoke-AsWorkflow
[-Expression <String>]
[-InputObject <Object>]
[<CommonParameters>]
Description
Le Invoke-AsWorkflow
flux de travail exécute n’importe quelle commande ou expression en tant que script inline dans un flux de travail.
Ces workflows utilisent la sémantique de workflow standard, ont tous les paramètres communs de workflow et tous les avantages de workflow, notamment la possibilité d'arrêter, de reprendre et de récupérer.
Les workflows sont conçus pour les commandes de longue durée collectant des données essentielles, mais peuvent être utilisés pour exécuter toute commande. Pour plus d’informations, consultez about_Workflows.
Vous pouvez également ajouter des paramètres communs de workflow à cette commande. Pour plus d’informations sur les paramètres courants de flux de travail, consultez about_WorkflowCommonParameters
Ce workflow est introduit dans Windows PowerShell 3.0.
Exemples
Exemple 1 : Exécuter une applet de commande en tant que workflow
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
Cette commande exécute l’applet Get-ExecutionPolicy
de commande en tant que workflow sur des centaines d’ordinateurs.
La commande utilise le paramètre CommandName pour spécifier l’applet de commande qui s’exécute dans le flux de travail.
Il utilise le paramètre commun du flux de travail PSComputerName pour spécifier les ordinateurs sur lesquels la commande s’exécute.
La valeur du paramètre PSComputerName est une Get-Content
commande qui obtient une liste de noms d’ordinateurs à partir du fichier Servers.txt.
La valeur du paramètre est placée entre parenthèses pour diriger Windows PowerShell pour exécuter la Get-Command
commande avant d’utiliser la valeur.
Comme avec toutes les commandes à distance, si la commande s'exécute sur l'ordinateur local (si la valeur du paramètre PSComputerName inclut l'ordinateur local), vous devez démarrer Windows PowerShell avec l'option « Exécuter en tant qu'administrateur ».
Exemple 2 : Exécuter une applet de commande avec des paramètres
$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5
La première commande utilise l’applet Import-Csv
de commande pour créer un objet à partir du contenu du fichier Servers.csv. La commande utilise le Header
paramètre pour créer une ServerName
propriété pour la colonne qui contient les noms des ordinateurs cibles, également appelés « nœuds distants ». La commande enregistre le résultat dans la $s
variable.
La deuxième commande utilise le Invoke-AsWorkflow
flux de travail pour exécuter une Get-ExecutionPolicy
commande sur les ordinateurs du fichier Servers.csv. La commande utilise le paramètre CommandName de Invoke-AsWorkflow
pour spécifier la commande à exécuter dans le flux de travail. Il utilise le Parameter
paramètre de Invoke-AsWorkflow
spécifier le Scope
paramètre de l’applet Get-ExecutionPolicy
de commande avec la valeur Process. La commande utilise également le paramètre commun de PSConnectionRetryCount
flux de travail pour limiter la commande à cinq tentatives sur chaque ordinateur et le PSComputerName
paramètre commun de flux de travail pour spécifier les noms des nœuds distants (ordinateurs cibles). La valeur du PSComputerName
paramètre est une expression qui obtient la ServerName
propriété de chaque objet dans la $s
variable.
Ces commandes exécutent une Get-ExecutionPolicy
commande en tant que flux de travail sur des centaines d’ordinateurs.
La commande utilise le Scope
paramètre de l’applet Get-ExecutionPolicy
de commande avec la valeur Process pour obtenir la stratégie d’exécution dans la session active.
Exemple 3 : Exécuter une expression en tant que flux de travail
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
Cette commande utilise le Invoke-AsWorkflow
flux de travail pour exécuter une commande Ipconfig en tant que travail de flux de travail sur les ordinateurs répertoriés dans le fichier DomainControllers.txt.
La commande utilise le Expression
paramètre pour spécifier l’expression à exécuter.
Il utilise le paramètre commun de PSComputerName
flux de travail pour spécifier les noms des nœuds distants (ordinateurs cibles).
La commande utilise également les paramètres courants et JobName
le AsJob
flux de travail pour exécuter le flux de travail en tant que travail en arrière-plan sur chaque ordinateur avec le nom du travail « Ipconfig ».
La commande retourne un ContainerParentJob
objet (System.Management.Automation.ContainerParentJob
) qui contient les travaux de flux de travail sur chaque ordinateur.
Paramètres
-CommandName
Exécute l'applet de commande ou la fonction avancée spécifiée comme un workflow.
Entrez le nom de la cmdlet ou de la fonction, tel que Update-Help
, Set-ExecutionPolicy
ou Set-NetFirewallRule
.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Expression
Spécifie l’expression que cette applet de commande s’exécute en tant que flux de travail.
Entrez l’expression sous forme de chaîne, telle que "ipconfig /all"
.
Si l'expression comprend des espaces ou des caractères spéciaux, placez l'expression entre guillemets.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InputObject
Permet d’autoriser l’entrée de pipeline.
Type: | Object |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-Parameter
Spécifie les paramètres et les valeurs de paramètre de la commande spécifiée dans le CommandName
paramètre.
Entrez une table de hachage dans laquelle chaque clé est un nom de paramètre et sa valeur est la valeur du paramètre, par @{ExecutionPolicy="AllSigned"}
exemple .
Pour plus d’informations sur les tables de hachage, consultez about_Hash_Tables.
Type: | Hashtable |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez diriger n’importe quel objet vers cette applet de commande.
Sorties
None
Cette commande ne retourne aucune sortie propre, mais le flux de travail qu’il exécute peut renvoyer la sortie.