Powershell, fenêtre de commandes style Bash sous Windows et Linux
Powershell est une fenêtre de commande pour Windows (et maintenant Linux) dans le style de Bash, mais avec un langage de script orienté objet.
Ce successeur à l'antique fenêtre MS-DOS offre des fonctions de scripting évoluées.
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. Son développement avait cessé en 2008 mais le projet a été repris par des contributeurs en 2012. Le projet est maintenant dépassé, depuis le 18 août 2016.
Le 18 août 2016, le code source de Powershell a été ouvert par Microsoft et devient disponible sous Linux et Mac. Basé sur .NET Core, il donne accès à une vaste bibliothèque de fonctions.
Il peut être téléchargé sur GitHub. Après Bash dans le sous-système Linux sous Windows 10, on a donc un choix de la ligne de commande total avec à l'inverse Powershell sur Linux!
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...
Vous pouvez sélectionner les exemples de codes suivants avec la souris et faire un clic droit dans Powershell pour coller le code et l'exécuter...
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 parce que 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.
Editeur de code
Tapez ise pour faire apparaître l'éditeur de scripts, doté d'aide à l'écriture et de fonctions de déboguage. Mais Visual Studio Code offre sans doute plus de confort.
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é.
Exécuter un script dans un fichier
Un fichier de script a l'extension ".ps1".
Mais par défaut, l'exécution de scripts est prohibée. Vous pouvez autoriser l'exécution en conservant une sécurité contre les accès distants avec cette commande:
Set-ExecutionPolicy RemoteSigned
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.
- Powershell Scripting. Site en français dédié à Powershell.
- Site officiel. Anglais.
- Télécharger pour Windows, Mac et Linux sur GitHub. Il y a le code source et des installeurs prêts à l'emploi.
- Aide mémoire.
- Blog officiel. (Anglais).
Voir aussi:
- Windows 10, quelques astuces. Comment désinstallez les applications réfractaires de Windows.