Invoke-AsWorkflow
Exécute une commande ou une expression en tant que workflow Windows PowerShell.
Syntaxe
Invoke-AsWorkflow
[-CommandName <String>]
[-Parameter <Hashtable>]
[-InputObject <Object>]
[<CommonParameters>]
Invoke-AsWorkflow
[-Expression <String>]
[-InputObject <Object>]
[<CommonParameters>]
Description
Le flux de travail Invoke-AsWorkflow
exécute n’importe quelle commande ou expression en tant que script inline dans un flux de travail.
Ces flux de travail utilisent la sémantique de flux de travail standard, ont tous les paramètres communs de flux de travail et présentent tous les avantages des flux de travail, notamment la possibilité d’arrêter, de reprendre et de récupérer.
Les flux de travail sont conçus pour les commandes de longue durée qui collectent des données critiques, mais peuvent être utilisés pour exécuter n’importe quelle commande. Pour plus d’informations, consultez about_Workflows.
Vous pouvez également ajouter des paramètres courants de flux de travail à cette commande. Pour plus d’informations sur les paramètres courants de flux de travail, consultez about_WorkflowCommonParameters
Ce flux de travail 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 de commande Get-ExecutionPolicy
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 PSComputerName workflow pour spécifier les ordinateurs sur lesquels la commande s’exécute.
La valeur du paramètre PSComputerName Get-Command
avant d’utiliser la valeur.
Comme pour toutes les commandes distantes, 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 de commande Import-Csv
pour créer un objet à partir du contenu du fichier Servers.csv. La commande utilise le paramètre Header
pour créer une propriété ServerName
pour la colonne qui contient les noms des ordinateurs cibles, également appelés « nœuds distants ». La commande enregistre le résultat dans la variable $s
.
La deuxième commande utilise le flux de travail Invoke-AsWorkflow
pour exécuter une commande Get-ExecutionPolicy
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 paramètre Parameter
de Invoke-AsWorkflow
pour spécifier le paramètre Scope
de l’applet de commande Get-ExecutionPolicy
avec la valeur Process. La commande utilise également le paramètre commun de flux de travail PSConnectionRetryCount
pour limiter la commande à cinq tentatives sur chaque ordinateur et le paramètre commun de flux de travail PSComputerName
pour spécifier les noms des nœuds distants (ordinateurs cibles). La valeur du paramètre PSComputerName
est une expression qui obtient la propriété ServerName
de chaque objet dans la variable $s
.
Ces commandes exécutent une commande Get-ExecutionPolicy
en tant que flux de travail sur des centaines d’ordinateurs.
La commande utilise le paramètre Scope
de l’applet de commande Get-ExecutionPolicy
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 flux de travail Invoke-AsWorkflow
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 paramètre Expression
pour spécifier l’expression à exécuter.
Il utilise le paramètre commun de flux de travail PSComputerName
pour spécifier les noms des nœuds distants (ordinateurs cibles).
La commande utilise également les paramètres courants AsJob
et JobName
flux de travail pour exécuter le flux de travail en arrière-plan sur chaque ordinateur avec le nom du travail « Ipconfig ».
La commande retourne un objet ContainerParentJob
(System.Management.Automation.ContainerParentJob
) qui contient les travaux de flux de travail sur chaque ordinateur.
Paramètres
-CommandName
Exécute l’applet de commande spécifiée ou la fonction avancée en tant que flux de travail.
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 en tant que chaîne, telle que "ipconfig /all"
.
Si l’expression inclut 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 paramètre CommandName
.
Entrez une table de hachage dans laquelle chaque clé est un nom de paramètre et sa valeur est la valeur du paramètre, telle que @{ExecutionPolicy="AllSigned"}
.
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 le paramètre InputObject
.
Sorties
None
Cette commande ne génère aucune sortie. Toutefois, il exécute le flux de travail, qui peut générer une sortie.