Partager via


À propos des flux de travail

Description courte

Fournit une brève introduction à la fonctionnalité de flux de travail PowerShell.

Description longue

PowerShell Workflow apporte les avantages de Windows Workflow Foundation à PowerShell et vous permet d’écrire et d’exécuter des flux de travail.

PowerShell Workflow a été introduit dans PowerShell 3.0 et le module est disponible jusqu’à PowerShell 5.1. Pour plus d’informations sur le flux de travail PowerShell, consultez le Guide des flux de travail et l’écriture d’un flux de travail Windows PowerShell.

À propos des workflows

Les workflows sont des commandes qui se composent d’une séquence ordonnée d’activités associées. En règle générale, ils s’exécutent pendant une période prolongée, collectant des données à partir de et apportant des modifications à des centaines d’ordinateurs, souvent dans des environnements hétérogènes.

Les flux de travail peuvent être écrits en XAML, le langage utilisé dans Windows Workflow Foundation ou dans le langage PowerShell. Les flux de travail sont généralement empaquetés dans des modules et incluent des rubriques d’aide. Pour plus d’informations, consultez Vue d’ensemble de XAML (WPF).

Les workflows sont critiques dans un environnement informatique, car ils peuvent survivre aux redémarrages et récupérer automatiquement après des défaillances courantes. Vous pouvez vous déconnecter et vous reconnecter à partir de sessions et d’ordinateurs exécutant des flux de travail sans interrompre le traitement du flux de travail, et suspendre et reprendre les flux de travail en toute transparence sans perte de données. Chaque activité d’un workflow peut être journalisée et auditée pour référence. Les workflows peuvent s’exécuter en tant que travaux et peuvent être planifiés à l’aide de la fonctionnalité Travaux planifiés de PowerShell.

L’état et les données d’un workflow sont enregistrés ou conservés au début et à la fin du flux de travail, ainsi qu’aux points que vous spécifiez. Les points de persistance de flux de travail fonctionnent comme des instantanés de base de données ou des points de contrôle de programme pour protéger le flux de travail contre les effets des interruptions et des défaillances. Si le flux de travail ne parvient pas à récupérer suite à une défaillance, vous pouvez utiliser les données persistantes et reprendre à partir du dernier point de persistance, au lieu de réexécuter un workflow complet depuis le début.

Configuration et configuration requises du flux de travail

Une configuration de flux de travail PowerShell se compose des éléments suivants :

  • Un ordinateur client, qui exécute le flux de travail.
  • Session de flux de travail, PSSession, sur l’ordinateur client ou sur un ordinateur distant.
  • Nœuds managés, ordinateurs cibles affectés par les activités de flux de travail.

La session de flux de travail n’est pas obligatoire, mais elle est recommandée. Les sessions PSSession peuvent tirer parti des fonctionnalités robustes de récupération et de sessions déconnectées de PowerShell pour récupérer des sessions de flux de travail déconnectées. Pour plus d’informations, consultez about_Remote_Disconnected_Sessions

Étant donné que l’ordinateur client et l’ordinateur sur lequel la session de workflow s’exécute peuvent être des nœuds gérés, vous pouvez exécuter un workflow sur un seul ordinateur qui remplit tous les rôles.

L’ordinateur client et l’ordinateur sur lequel la session de workflow s’exécute doivent exécuter PowerShell 3.0. Tous les systèmes éligibles sont pris en charge, y compris les options d’installation minimale des systèmes d’exploitation Windows Server.

Pour exécuter des workflows qui incluent des applets de commande, les nœuds managés doivent avoir Windows PowerShell 2.0 ou une version ultérieure. Les nœuds managés ne nécessitent pas PowerShell, sauf si le workflow inclut des applets de commande. Vous pouvez exécuter des workflows qui incluent des commandes WMI (Windows Management Instrumentation) et CIM (Common Information Model) sur des ordinateurs qui n’ont pas PowerShell.

Comment obtenir des flux de travail

Les flux de travail sont généralement empaquetés dans des modules. Pour importer le module qui inclut un workflow, utilisez n’importe quelle commande du module ou utilisez l’applet de Import-Module commande . Les modules sont importés automatiquement lors de la première utilisation d’une commande dans le module.

Pour rechercher les workflows dans les modules installés sur votre ordinateur, utilisez le paramètre CommandType de l’applet Get-Command de commande.

Get-Command -CommandType Workflow

Comment exécuter des flux de travail

Pour exécuter un workflow, utilisez la procédure suivante.

  1. Lorsque le nœud managé est l’ordinateur local, cette étape n’est pas nécessaire. Sinon, sur l’ordinateur client, démarrez PowerShell avec l’option Exécuter en tant qu’administrateur .
Start-Process PowerShell -Verb RunAs
  1. Activez la communication à distance PowerShell sur l’ordinateur qui exécute la session de workflow et sur les nœuds managés affectés par les flux de travail qui incluent des applets de commande.

Vous ne devez effectuer cette étape qu’une seule fois sur chaque ordinateur participant.

Cette étape est requise uniquement lors de l’exécution de workflows qui incluent des applets de commande. Vous n’avez pas besoin d’activer la communication à distance sur l’ordinateur client, sauf si la session de flux de travail s’exécute sur l’ordinateur client ou sur les nœuds managés qui exécutent PowerShell 3.0.

Pour activer la communication à distance, utilisez l’applet de Enable-PSRemoting commande .

Enable-PSRemoting -Force

Vous pouvez activer la communication à distance à l’aide du paramètre Activer l’exécution du script stratégie de groupe. Pour plus d’informations, consultez about_Group_Policy_Settings et about_Execution_Policies.

  1. Utilisez les New-PSWorkflowSession applets de commande ou New-PSSession pour créer la session de workflow.

L’applet New-PSWorkflowSession de commande démarre une session qui utilise la configuration de session Microsoft.PowerShell.Workflow intégrée sur l’ordinateur de destination. Cette configuration de session inclut des scripts, des fichiers de type et de mise en forme, ainsi que des options conçues pour les flux de travail.

Vous pouvez également utiliser l’applet de New-PSSession commande . Utilisez le paramètre ConfigurationName pour spécifier la configuration de session Microsoft.PowerShell.Workflow . Cette commande est identique à l’utilisation de l’applet de New-PSWorkflowSession commande .

Une alternative consiste à utiliser l’applet de New-PSSession commande . Utilisez le paramètre ConfigurationName pour spécifier la configuration de session Microsoft.PowerShell.Workflow .

Sur l’ordinateur local :

$ws = New-PSWorkflowSession

Sur un ordinateur distant :

$ws = New-PSWorkflowSession -ComputerName Server01 `
-Credential Domain01\Admin01

Si vous êtes administrateur sur l’ordinateur de session de flux de travail, vous pouvez utiliser l’applet New-PSWorkflowExecutionOption de commande pour créer des paramètres d’option personnalisés pour la configuration de la session de flux de travail. Utilisez également l’applet de Set-PSSessionConfiguration commande pour modifier la configuration de session.

$sto = New-PSWorkflowExecutionOption -MaxConnectedSessions 150
Invoke-Command -ComputerName Server01 `
{Set-PSSessionConfiguration Microsoft.PowerShell.Workflow `
-SessionTypeOption $Using:sto}
$ws = New-PSWorkflowSession -ComputerName Server01 `
-Credential Domain01\Admin01
  1. Exécutez le flux de travail dans la session de workflow. Pour spécifier les noms des nœuds managés, ciblez les ordinateurs, utilisez le paramètre commun de workflow PSComputerName .

Les exemples suivants exécutent le workflow nommé Test-Workflow.

Où le nœud managé est l’ordinateur qui héberge la session de workflow :

Invoke-Command -Session $ws {Test-Workflow}

Où les nœuds managés sont des ordinateurs distants.

Invoke-Command -Session $ws{
Test-Workflow -PSComputerName Server01, Server02 }

L’exemple suivant exécute test-workflow sur des centaines d’ordinateurs. L’applet Get-Content de commande obtient les noms d’ordinateurs à partir d’un fichier texte et les enregistre dans la $Servers variable sur l’ordinateur local.

Invoke-Command utilise le $Using modificateur d’étendue pour définir la $Servers variable dans la session locale. Pour plus d’informations sur le modificateur d’étendue $Using , consultez about_Remote_Variables.

$Servers = Get-Content Servers.txt
Invoke-Command -Session $ws {Test-Workflow -PSComputerName $Using:Servers }

Utilisation de paramètres communs de flux de travail

Les paramètres communs de flux de travail sont un ensemble de paramètres que PowerShell ajoute automatiquement à tous les flux de travail. PowerShell ajoute les paramètres communs de l’applet de commande à tous les flux de travail, même si le workflow n’utilise pas l’attribut CmdletBinding .

Par exemple, le workflow suivant ne définit aucun paramètre. Toutefois, lorsque vous exécutez le flux de travail, il a les paramètres CommonParameters et WorkflowCommonParameters.

workflow Test-Workflow {Get-Process}
Get-Command Test-Workflow -Syntax
Test-Workflow [<WorkflowCommonParameters>] [<CommonParameters>]

Les paramètres courants du flux de travail incluent plusieurs paramètres essentiels à l’exécution des flux de travail. Par exemple, le paramètre commun PSComputerName spécifie les nœuds managés que le workflow affecte.

Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02}

Le paramètre commun de flux de travail PSPersist détermine quand les données de flux de travail sont conservées. Il vous permet d’ajouter un point de persistance entre les activités aux flux de travail qui ne définissent pas de points de persistance.

Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True}

D’autres paramètres courants de flux de travail vous permettent de spécifier les caractéristiques de la connexion à distance aux nœuds managés. Leurs noms et fonctionnalités sont similaires aux paramètres des applets de commande de communication à distance, notamment Invoke-Command.

Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02 -PSPort 443}

Veillez à distinguer les paramètres de communication à distance qui définissent la connexion pour la session de workflow des paramètres communs de workflow avec préfixe PS qui définissent la connexion aux nœuds managés.

$ws = New-PSSession -ComputerName Server01 `
-ConfigurationName Microsoft.PowerShell.Workflow

Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02 `
-PSConfigurationName Microsoft.PowerShell.Workflow}

Certains paramètres communs de flux de travail sont propres aux workflows, tels que le paramètre PSParameterCollection qui vous permet de spécifier différentes valeurs de paramètres communs de flux de travail pour différents nœuds distants. Pour obtenir la liste et la description des paramètres communs du flux de travail, consultez about_WorkflowCommonParameters.

Voir aussi

Invoke-AsWorkflow

New-PSSession

Guide des workflows

Écriture d'un workflow Windows PowerShell