Partager via


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 est une commande qui obtient la liste des noms d’ordinateurs du fichier Servers.txt. La valeur du paramètre est placée entre parenthèses pour diriger Windows PowerShell pour exécuter la commande 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-ExecutionPolicyou 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

Object

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.