XXIX. PowerShell dans Windows XP▲
Ce chapitre est une traduction de la page http://commandwindows.com/powershell.htm dont l'auteur original est Victor Laurie.
Microsoft a introduit une interface de ligne de commande complètement nouvelle appelée « PowerShell ». Ce chapitre décrit quelques nouvelles fonctionnalités.
XXIX-A. Introduction à PowerShell▲
Microsoft souhaitait à l'origine développer une nouvelle interface en ligne de commande (nom de code « Monad ») intégrée à Vista. Cependant, il fut ensuite décidé de faire de la fonctionnalité (renommée « PowerShell ») une application indépendante qui est maintenant disponible pour Windows XP. (La version pour Vista est également publiée et est disponible sur ce site. D'ailleurs, Vista possède encore l'interpréteur de commande cmd.exe, tout comme Windows XP). Le nouveau shell est la réponse de Microsoft au scripting shell Unix. Il est tout à fait différent de la précédente interface de ligne de commande et est considérablement plus puissant. Il utilise des techniques plus sophistiquées et les objets et il nécessite le Framework .NET 2.0. Il dispose de nouvelles fonctions pour les systèmes et l'administration réseau et est destiné aux professionnels IT. Parce que le but de cet article est de présenter la ligne de commande aux utilisateurs de PC, PowerShell dépasse un peu le cadre de cet article (et mon expérience personnelle). Néanmoins, je crois que l'utilisateur doit être conscient du potentiel de PowerShell et les plus expérimentés peuvent souhaiter l'explorer plus en détail. Je vais essayer de décrire brièvement ce qu'est PowerShell.
XXIX-B. Les fonctionnalités de PowerShell▲
Dans l'invite de commande précédemment décrite dans cet article, les commandes consistent en une série de commandes internes sous forme de chaines de caractères qui sont interprétées et exécutées par l'interpréteur de commandes ou de commandes invoquant des fichiers exécutables séparés. PowerShell a une nouvelle approche qui permet l'utilisation de ce que Microsoft appelle des « cmdlets ». Voici la description de Microsoft : « Une cmdlet (prononcez »command-let« ) est une commande à fonction unique qui manipule des objets dans Windows PowerShell. Vous pouvez reconnaitre les cmdlets par leur format de nom -- un verbe et un nom séparés par un tiret (-), comme Get-Help, Get-Process, et Start-Service. »
Bien que chaque cmdlet ait une fonction unique, des groupes de cmdlets peuvent être reliés ensemble pour mener à bien une tâche complexe. Le résultat de plusieurs cmdlets pourra également être utilisé comme entrée d'autres cmdlets (par un « pipe ») sans traitement supplémentaire. Ces possibilités nouvelles représentent une avancée significative par rapport à la console de lignes de commandes.
PowerShell continue à reconnaitre les commandes provenant de l'ancienne console de commande bien que, dans plusieurs cas, la commande soit un alias d'une cmdlet PowerShell.
XXIX-B-1. Liste de cmdlets▲
Pour l'instant, PowerShell est fourni avec 129 cmdlets. Comme les cmdlets sont faciles à écrire, on peut s'attendre à ce que ce nombre augmente. Le tableau I indique celles présentes à la date d'écriture de ce document.
Tableau I. Liste des cmdlets PowerShell
Add-Content |
Get-Date |
Move-ItemProperty |
Set-AuthenticodeSignature |
XXIX-B-2. Syntaxe des cmdlets▲
Il existe un certain nombre de paramètres possibles pour les cmdlets, mais une description détaillée de leur syntaxe sortirait du cadre de cet article. Je vais essayer de vous montrer l'éventail des possibilités offertes en vous décrivant une cmdlet utile qui effectue la fonction de copie. Elle n'est pas limitée à la copie de fichiers et dossiers, mais peut également copier des clés et entrées du Registre. Cette cmdlet, en fait, incorpore les fonctions de plusieurs anciennes commandes avec une plus grande souplesse. Tout d'abord, voyons un exemple où un dossier et tout son contenu doivent être copiés :
Copy-Item C:\Logfiles -destination D:\Backup -recurse
Cette cmdlet copie tous les fichiers et sous-dossiers du dossier C:\Logfiles dans le dossier D:\Backup. Le paramètre « -recurse » est utilisé quand les sous-dossiers doivent être copiés.
Voyons maintenant tous les paramètres :
Copy-Item [-path] (string[]) [[-destination] (string)] [-container] [-recurse] [-force] [-include (string[])] [-exclude (string[])]
[-filter (string)] [-passThru] [-credential (PSCredential)] [-whatIf] [-confirm] [(CommonParameters)]
Naturellement, l'ensemble complet des paramètres varie d'une cmdlet à une autre, mais l'intrigant paramètre « -whatIf » est commun à toutes. Cette option décrit ce qui devrait se passer si vous exécutiez la commande, mais sans l'exécuter réellement. Cela vous permet de voir en toute sécurité ce qui se passerait si vous utilisiez la commande. Pour un tableau décrivant les différents paramètres indiqués ci-dessus, cliquez ici.
XXIX-C. Scripting PowerShell▲
PowerShell est aussi la base d'un langage de script. Un aperçu des opérateurs et fonctions disponibles est accessible dans cette référence MSDN. Ce langage est prévu pour rendre les tâches administratives plus faciles et semble destiné à supplanter VBScript dans le futur. L'extension pour les scripts PowerShell est .PS1. Plusieurs fonctionnalités de sécurités sont intégrées au moteur de script et le réglage par défaut est d'empêcher l'exécution des scripts. La permission d'exécuter les scripts est contrôlée par une fonctionnalité appelée « Execution Policy ». Vous pouvez obtenir des informations sur cette fonctionnalité avec la commande PowerShell
Get-Help about_signing
Vous trouverez plus d'informations sur le scripting PowerShell sur ce site Microsoft
XXIX-D. Plus d'informations▲
Dans cette courte description de PowerShell, nous n'avons fait qu'en effleurer la surface. Pour ceux qui souhaitent explorer plus profondément le sujet, voici une liste de références :