Les scripts dans Exchange Management Shell

 

S’applique à : Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Dernière rubrique modifiée : 2009-12-18

Pour la plupart des tâches générales, l'exécution de cmdlets l’une après l’autre ou ensemble à travers les pipelines suffit. Cependant, il peut arriver que vous deviez automatiser certaines tâches. L'environnement de ligne de commande Exchange Management Shell prend en charge un langage de script très riche, basé sur Microsoft .NET Framework, qui ressemble au langage de script d'autres interpréteurs de ligne de commande. L'environnement de ligne de commande Exchange Management Shell permet de créer des scripts, du plus simple au plus complexe. Les constructions de langage pour l’affectation de boucle, de condition, de contrôle de flux et de variable sont toutes prises en charge.

Chaque organisation a des tâches qui lui sont en quelque sorte propres. Avec une bibliothèque de fichiers de script pour exécuter ces tâches, les administrateurs peuvent économiser du temps et exécuter ces scripts sur tout ordinateur sur lequel l'environnement de ligne de commande Exchange Management Shell est installé.

Pour plus d'informations sur l'utilisation des scripts, consultez la page relative à la génération de scripts avec Windows PowerShell. Comme l'environnement de ligne de commande Exchange Management Shell est basé la technologie Microsoft Windows PowerShell, les recommandations en matière de script applicables à Windows PowerShell s’appliquent à l'environnement de ligne de commande Exchange Management Shell.

Exécution d’un script à l’intérieur de l'environnement de ligne de commande Exchange Management Shell

Les utilisateurs habitués à utiliser l’environnement Cmd.exe savent comment exécuter des scripts d'interfaces de commande interactives. Il s'agit simplement de fichiers texte qui ont l'extension de nom de fichier .bat. Comme pour les fichiers de traitement par lot, vous pouvez créer les fichiers de script de l'environnement de ligne de commande Exchange Management Shell en utilisant un éditeur de texte tel que le Bloc-notes. Les fichiers de script de l'environnement de ligne de commande Exchange Management Shell utilisent l’extension de nom de fichier .ps1.

L'environnement de ligne de commande Exchange Management Shell utilise un répertoire racine pour les fichiers de script lors de leur appel. Par défaut, le répertoire racine est le répertoire <root drive>:\Program Files\Microsoft\Exchange Server\bin. Vous pouvez également vérifier le répertoire PSHome réel sur tout ordinateur exécutant l'environnement de ligne de commande Exchange Management Shell en exécutant $PSHome depuis la ligne de commande. Les deux répertoires se trouvent dans la variable de l’environnement PATH.

Si un fichier de script est enregistré dans le répertoire racine, vous pouvez l’appeler en utilisant le nom du script. Si le fichier de script se trouve dans un endroit autre que l'emplacement actuel, vous devez utiliser le chemin d'accès et le nom du script. Si le fichier de script se trouve dans l'emplacement actuel, le nom du script doit avoir pour préfixe .\.

Les exemples suivants montrent les caractéristiques de syntaxe de commande requises pour appeler trois scripts différents. Ces exemples utilisent tous la cmdlet Get-Date, à partir de trois emplacements différents.

[PS] C:\>Get-Date-Script-A.ps1
Friday, January 20, 2006 3:13:01 PM

Le fichier de script Get-Date-Script-A.ps1 se trouve dans le répertoire spécifié par $PSHhome et ne requiert que le nom du script à exécuter.

[PS] C:\>c:\workingfolder\Get-Date-Script-B.ps1
Friday, January 20, 2006 3:13:25 PM

Le fichier de script Get-Date-Script-B.ps1 se trouve dans le répertoire C:\workingfolder, de sorte que vous devez fournir le chemin d’accès complet pour exécution.

[PS] C:\>.\Get-Date-Script-C.ps1
Friday, January 20, 2006 3:13:40 PM

Le fichier de script Get-Date-Script-C.ps1 se trouve dans l'emplacement actuel, C:\. C'est pourquoi, le préfixe .\ est nécessaire à son exécution.

[PS] C:\>Get-Date-Script-C.ps1
'Get-Date-Script-C.ps1' is not recognized as a Cmdlet, function, operable program, or script file.
At line:1 char:21
+ Get-Date-Script-C.ps1 <<<<

Dans le dernier exemple, lorsque le même script, Get-Date-Script-C.ps1, est appelé sans le préfixe .\, les résultats attendus sont affichés.

La meilleure pratique consiste à toujours attribuer aux fichiers de script un nom descriptif et inclure des commentaires dans le script afin de décrire son but et d'identifier chaque point d’intérêt. Certaines informations concernant l’auteur doivent également être incluses au cas où quelqu’un exécutant le script se poserait des questions sur son utilisation. Utilisez le symbole dièse (#) au début des lignes de commentaire à l’intérieur du corps d’un script.

Exécution d’un script à partir de Cmd.exe

Si vous qu'un script soit exécuté de façon planifiée par le service Windows Task Scheduler, vous pouvez appeler l'environnement de ligne de commande Exchange Management Shell et inclure le script que vous voulez exécuter comme paramètre. Comme l'environnement de ligne de commande Exchange Management Shell est un composant logiciel enfichable de Windows PowerShell, vous devez également charger le composant logiciel enfichable environnement de ligne de commande Exchange Management Shell lorsque vous exécutez la commande en vue d’exécuter des cmdlets en relation avec Exchange. La syntaxe suivante est requise pour charger le composant logiciel enfichable environnement de ligne de commande Exchange Management Shell et exécuter votre script depuis la commande Cmd.exe.

PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.Psc1" -Command ". '<Path to Your Script>'"

Par exemple, pour exécuter le script RetrieveMailboxes.ps1 depuis C:\My Scripts, utilisez la commande suivante :

PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.Psc1" -Command ". 'C:\My Scripts\RetrieveMailboxes.ps1'"

Pour des accéder à des options supplémentaires à utiliser lorsque vous appelez l'environnement de ligne de commande Exchange Management Shell depuis l’environnement Cmd.exe, tapez PowerShell.exe /?

Obtention d’indications à partir de la console de gestion Exchange

Dans Microsoft Exchange Server 2007, vous pouvez utiliser la console de gestion Exchange pour afficher des informations détaillées sur des commandes spécifiques de l'environnement de ligne de commande Exchange Management Shell utilisées pour exécuter certaines tâches. Lorsque vous exécutez un assistant dans la console de gestion Exchange, ce dernier prend les informations que vous avez entrées et crée une commande de l'environnement de ligne de commande Exchange Management Shell qui est ensuite exécutée par l’ordinateur. Vous pouvez copier et coller cette commande directement dans l'environnement de ligne de commande Exchange Management Shell ou la copier dans un éditeur de texte pour la modifier. En analysant la manière dont la console de gestion Exchange crée des commandes, vous comprendrez mieux la manière de construire ou modifier ces commandes pour répondre à vos futurs besoins.

Par exemple, si vous créez une nouvelle boîte aux lettres pour une personne nommée Frank Lee, les informations suivantes sont affichées dans la page Achèvement de l’Assistant Nouvelle Boîte aux Lettres :

Figure 1   Page d’exécution de l’Assistant Nouvelle boîte aux Lettres

Page Achèvement de nouvelle boîte aux lettres

Ces informations affichées dans la page Achèvement vous donnent une idée des informations dont vous devez disposer pour vous assurer qu’une commande similaire que vous exécutez dans l'environnement de ligne de commande Exchange Management Shell est exécutée avec succès. Dans la page Achèvement, appuyez sur CTRL+C pour copier ces informations dans le Presse-papiers. Ensuite, vous pouvez utiliser un éditeur de texte pour analyser la commande afin de déterminer ce qu'il convient de modifier pour ajouter des boîtes aux lettres. Vous pouvez également personnaliser la commande de sorte qu’elle puisse être utilisée comme partie d’un script utilisant un fichier de valeurs séparées par des virgules (CSV) ou une autre source d'entrée pour automatiser la création de nombreuses boîtes aux lettres.

Test de Scripts

Lorsque vous créez des scripts, vous devez toujours les tester dans un environnement de test avant de les appliquer dans votre environnement de production. Lorsque vous testez vos scripts dans votre environnement de test et lorsque vous les déployez dans votre environnement de production, vous pouvez utiliser le paramètre WhatIf disponible dans de nombreuses cmdlets incluses dans l'environnement de ligne de commande Exchange Management Shell pour vérifier que votre script s’exécute comme prévu. Le paramètre WhatIf donne pour instruction à la commande à laquelle il est appliqué d’exécuter, mais également d’afficher les objets qui seront affectés par l’exécution de la commande et les modifications qui apportées à ces objets, sans réellement en modifier aucun.

Pour plus d'informations sur le paramètre WhatIf, consultez la rubrique Paramètres WhatIf, Confirm et ValidateOnly.

Dépannage de scripts

Les scripts risquent de ne pas fonctionner comme prévu pour de nombreuses raisons. Il peut être difficile de déterminer à quel niveau se situe le problème et ce qui fonctionne mal. L'environnement de ligne de commande Exchange Management Shell peut vous aider à localiser des erreurs de syntaxe générales en reportant la ligne et le caractère au point de défaillance. Lorsque la syntaxe d’un script est correcte mais que son comportement est inattendu, il peut être beaucoup plus difficile de diagnostiquer le problème. L'environnement de ligne de commande Exchange Management Shell inclut une fonctionnalité de débogage pour dépanner les fichiers de script par l’analyse de chaque étape exécute par le script pendant son exécution. Cette fonctionnalité est appelée suivi.

Pour activer le suivi et analyser chaque étape de commande dans un script, utilisez la cmdlet Set-PSDebug avec le paramètre Trace pour définir une valeur de 1. Pour analyser chaque étape et chaque attribution de variable telles qu’elles sont faites, définissez le paramètreTrace sur la valeur 2. Pour désactiver le suivi, définissez la valeur du paramètre Trace sur 0 (zéro).

Pour analyser les commandes d'un script ligne par ligne, utilisez la cmdlet Set-PSDebug avec le paramètre Step. À chaque étape, vous être invité à continuer l’opération. Les choix disponibles en mode Step sont les suivants :

[Y] Yes (continue to the next step)
[A] Yes to All (continue to the end of the script)
[N] No (stop this step)
[L] No to All (stop all remaining steps)
[S] Suspend (suspend at this point and drop to a prompt)

Suspend permet de quitter le programme pour accéder à une invite dans laquelle vous pouvez exécuter toute commande, par exemple, pour vérifier ou définir des valeurs sur un objet que le script y accède. Lorsque vous êtes prêt à reprendre l’exécution du script, tapez Exit et contrôlez immédiatement les retours au point auquel le script s’est arrêté.