Powershell, une nouvelle fenêtre de commandes Unix sous Windows
Avec un air de Linux, Powershell est une fenêtre de commande pour Windows dans le style Unix, mais avec un langage de script orienté objet.
Ce successeur à l'antique fenêtre MS-DOS offre des fonctions de scripting évoluées sous Windows depuis XP. Sa conception est orientée objets.
Il est passé en avril 2011 sous licence Community Promise, ce qu'il fait qu'il devient libre et peut être implémenté sous toute plateforme. Donc sous Linux, ce qui a été fait avec le projet Pash qui fonctionne sur Mono mais pas mis à jour depuis 2008.
Un outil de script et d'administration
La fenêtre de lignes de commande si familière aux utilisateurs
d'Unix ou Linux, ou de MS-DOS et que l'on appelle d'ailleurs souvent fenêtre
MS-DOS, ne disparaît pas sous Vista, au contraire elle se rapproche
de ce que propose Linux et se modernise avec des fonctions très puissantes.
En outre elle est également disponible pour Windows XP grâce
à un téléchargement sur le site de Microsoft.
Le nom de code était Monad par référence au terme utilisé
par Leibniz dans une philosophie qui conçoit le monde comme des composants,
les monades, en interaction et en harmonie.
Powershell permet d'administrer un ordinateur, il gère les processus
et les sessions notamment, les utilisateurs connectés, toute la gestion
de réseau, et remplace donc Perl.
Quelques exemples de fonctions innovantes dans Powershell
Powershell donne accès à la plupart des fonctions de Windows, cela inclut les services, les applications, la voix. En outre son affichage n'a plus rien à voir avec celui de MS-DOS, il peut se faire en graphiques...
La calculatrice
Elle est intégrée. On peut taper une opération ou une formule mathématique et on obtient le résultat:
PS> (2 + 3) * 5
Doit afficher 25.
En fait de nombreuses fonctions mathématiques sont disponibles avec
la classe System.Math que l'on peut utiliser avec une commande telle que:
PS> [System.Math]::Pow(2,3)
whatif
Ce paramètre permet de voir ce que fait une commande sans l'exécuter
réellement et donc sans aucun effet réel.
Il suffit d'ajouter:
-whatif
à une commande quelconque pour qu'elle fonctionne en mode virtuel.
Transcript
Cette fonctionnalité sauve automatiquement dans un fichier les commandes qui sont passées et les résultats obtenus. On démarre le mode transcript par:
PS> Start-Transcript -Path chemin-nom-fichier
(chemin-nom-fichier est le fichier du script avec son répertoire), et on le stoppe avec:
PS> Stop-Transcript
Utiliser des applications
On peut commander les applications de Windows à partir de la ligne de commande. Pour cela il faut créer un nouvel objet et passer le paramètre -com pour utiliser les fonctions de l'application.
$nom = new-object -com nom-application.ocx
La voix
Votre ordinateur peut parler, essayez la commande suivante:
$spVoice = new-object -com "SAPI.spvoice"
$spVoice.Speak("Hello the World!")
J'utilise une phrase en anglais parceque la prononciation se fait en anglais et le français ainsi énoncé est plutôt comique!
Graphismes
Powershell peut afficher des graphiques en résultats à des commandes.
Programmation
Il est doté d'un vrai langage de script, proche de Bash sous Linux.
La structure de contrôle foreach par exemple est implémentée.
On peut définir des fonctions,
Les commandes sont séparée par un point-virgule et peuvent
donc être chaînées sur une même ligne.
Chainage (pipeline)
Le symbole | permet d'appliquer une commande au résultat d'une autre. Par exemple pour appliquer la commande format-list ou format-table ou autre format, sur le résultat de la cmdlet get-service on tape:
get-service | format-list
Création de fichiers
Avec les commandes de format et la commande Out-file, qui redirige les résultats dans un fichier, il est possible de créer des fichiers de textes.
Alias
On peut associer avec SetAlias un mot plus court à une commande, par exemple cls à Clear-Host pour simplifier ou utiliser les commandes auxquelles on est habitué.
Compatibilité Unix
Certaines commandes de Unix sont reconnues par Powershell, comme ls qui équivaud à dir (mais les paramètres sont différents).
Un accès aux données du système
Powershell retourne toutes les informations désirées sur le
Bios, le processeur, et tous les composants du système informatique,
sur le système d'exploitation, les logiciels, les mises à jour,
etc.
Essayer par exemple la commande suivante:
Get-WmiObject -Class Win32_BIOS -ComputerName .
sans oublier le point à la fin, et vous saurez tout sur le BIOS de
votre ordinateur!
Pour connaître l'espace libre sur les disques durs, essayez:
Get-WmiObject -Class Win32_LogicalDisk
De nombreux autres exemples sont fournis dans le guide d'utilisation.
Les cmdlets étendent le langage de base
Les "commandlets" sont des applications internes qui donnent accès
aux ressources de Windows.
Le paramètre New-Object précédemment utilisé est
une cmdlet. Tous les noms de cmdlets sont composés deux mots séparés
par un tiret.
Tapez par exemple:
PS c:\get-service
et vous obtenez la liste de tous les services disponibles sous Windows.
Les cmldlets se passent les résultats sous forme d'objets tandis que
sous Unix ils sont transmis entre commandes chaînées sous forme
de texte. Mais les résultats sont donnés sous forme de texte
lorsqu'ils sont affichés sur l'écran.
Plus d'informations
Le téléchargement se fait à partir de la centrale de
téléchargement sur le site de Microsoft. L'archive contient
un guide de l'utilisateur en français et un aide-mémoire du
langage de script Windows Powershell.
Noter qu'il faut aussi installer .NET framework 2.0 pour avoir accès
à Powershell sur XP mais cela est totalement inutile sur Windows 7.
- Powershell Scripting. Site en français dédié à Powershell.
- Aide mémoire.
- Blog officiel. (Anglais).
