Partager via


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-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 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

Object

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.