Windows PowerShell
Windows PowerShell, anciennement Microsoft Command Shell (MSH), nom de code Monad, est une suite logicielle développée par Microsoft qui intègre une interface en ligne de commande, un langage de script nommé PowerShell ainsi qu'un kit de développement. Il est inclus dans Windows 7, Windows 8.1, Windows 10 et Windows 11 (y compris les versions grand public) et s'appuie sur le framework Microsoft .NET.
Développé par | Microsoft |
---|---|
Première version | |
Dernière version | 7.4.6 ()[1] |
Dépôt | github.com/PowerShell/PowerShell |
Assurance qualité | Intégration continue |
Écrit en | C# |
Système d'exploitation | Microsoft Windows, Windows Server (en), Ubuntu, Debian, CentOS, Red Hat Enterprise Linux, openSUSE, Fedora Linux, Arch Linux et macOS |
Environnement | Framework .NET |
Formats lus | Windows PowerShell types (UTF-8) (d), Windows PowerShell types (d), Windows PowerShell formatting (d), Windows PowerShell formatting (UTF-8) (d), PowerShell Cmdlet Definition XML (UTF-8) (d), PowerShell Cmdlet Definition XML (d) et PowerShell script (d) |
Formats écrits | Windows PowerShell types (UTF-8) (d), Windows PowerShell types (d), Windows PowerShell formatting (d), Windows PowerShell formatting (UTF-8) (d), PowerShell Cmdlet Definition XML (UTF-8) (d) et PowerShell Cmdlet Definition XML (d) |
Type |
Langage en ligne de commande (d) Langage interprété Interface système Interface en ligne de commande Application console (en) Langage de script |
Licence | MIT Licence |
Site web | PowerShell |
Histoire
modifierPrédécesseur
modifierWindows PowerShell est le successeur des interfaces en ligne de commande DOS/Windows fournies par
- command.com (c'est-à-dire l'interface MS-DOS) de Windows Me, Windows 98 et de ses prédécesseurs ;
- cmd.exe de Windows NT depuis 1993.
On peut aussi mentionner Windows Scripting Host (WSH), introduit en 1998, qui connut un certain succès auprès des administrateurs mais ne permet pas une utilisation interactive : les scripts peuvent être appelés depuis la ligne de commande, mais ils doivent être préalablement enregistrés dans un fichier. Aucune de ces interfaces n'est conforme à POSIX 2 (POSIX étant une norme faite pour les shells Unix qui eux ne sont pas orientés objet mais plutôt flux de texte à décomposer et à interpréter).
Environnement Windows PowerShell
modifierÀ l'origine, il était prévu que l'environnement Windows PowerShell soit inclus dans Windows Vista, mais finalement les deux logiciels ont été disjoints. Microsoft a publié une version beta le , une release candidate 1 le et une release candidate 2 le . La version finale a été publiée le . Windows PowerShell est également inclus dans Microsoft Exchange Server 2007, sorti au quatrième trimestre 2006, ainsi que la plupart des produits Microsoft sortis depuis.
Windows PowerShell est compatible avec toutes les versions de Windows qui supportent la version 2.0 de .NET.
Depuis le , Windows PowerShell 1.0 pour Windows XP et Vista est distribué comme une mise à jour logicielle facultative par le service Windows Update de Microsoft. Il est intégré nativement dans Windows 7 en version 2.0[2]. Cette version propose une console d'édition de script intégré appelé Windows PowerShell ISE (pour integrated scripting environment en anglais) qui apporte une solution de substitution à l'outil PowerGUI Script Editor développé par la société Quest Software. Comme son homologue, Windows PowerShell ISE présente un environnement graphique qui permet l’édition de script avec coloration syntaxique, affichage des numéros de ligne, débogueur intégré et aide en ligne.
Depuis Windows 8, PowerShell dispose d'une place plus prononcée au sein du système d'exploitation avec un raccourci dans toutes les fenêtres de l'explorateur de fichiers, dans le menu Fichier[3].
Origine du nom de code
modifierLe nom de code Monad vient du livre Monadologie du philosophe Leibniz où il affirme que la réalité est composée d'éléments fondamentaux appelés monades, qui sont intégrées dans une harmonie préétablie.
De façon analogue, Windows PowerShell est composé d'une série de tâches exécutées par une série de composants. Dans le cas présent, ces composants sont appelés commandlets (abrégées en cmdlets dans la console de commande), on rencontre aussi l'anglicisme commandelettes.
Langage PowerShell
modifier
PowerShell | ||
Date de première version | 2006 | |
---|---|---|
Paradigme | Multi-Paradigme: imperatif, orienté objet, fonctionnel et réflexif | |
Auteur | Jeffrey Snover, Bruce Payette, James Truher (et al.) | |
Développeur | Microsoft Corporation | |
Dernière version | 7.4.6 ()[1] | |
Typage | Fort, Sûr, Implicite et dynamique | |
Influencé par | C#, DCL, ksh, Perl, Ruby, Lisp, CL, SQL, Command Prompt, Tcl | |
Écrit en | C# | |
Système d'exploitation | Microsoft Windows | |
Licence | Licence MIT[4] | |
Site web | microsoft.com/powershell | |
modifier |
PowerShell est un langage de script fondé sur la programmation orientée objet. Le logiciel PowerShell (fichier exécutable powershell.exe) est l'interpréteur de l’interface en ligne de commande de l'environnement de développement Windows PowerShell.
L'environnement Windows PowerShell ne propose pas seulement une suite de commandes d'administration et de gestion du système comme pouvait l’être certains shells notamment son ancêtre command.com avec ses fichiers batch, c'est aussi un interprète de langage de script orienté objet[5].
Syntaxe
modifierLes commandes PowerShell sont constituées d'un verbe ou préfixe et d'un nom séparés par un tiret. Elles peuvent être suivies de paramètres. On les appelle des commandlets pour command applets en anglais ou phrases en français[réf. nécessaire]. Dans l'interface en ligne de commande elles sont abrégées en cmdlets. On rencontre parfois l’anglicisme commandelettes[6].
L'utilisation d'instructions structurées comme des phrases permet de mémoriser plus simplement un grand nombre de commandes. Cette facilité est toutefois limitée, car elle s'applique uniquement aux personnes qui possèdent un minimum de vocabulaire anglais.
Exemple :
PS C:\> Get-Help
Cette phrase qui signifie littéralement en français « Obtenir-Aide » affichera l'aide[7] du PowerShell après l'avoir validée avec la touche entrée dans la console de commande.
Implication du préfixe dans la phrase
modifierLe préfixe de la commandelette est appelé verbe[8] bien qu'il n'en soit pas toujours un. Il est appelé ainsi car il détermine l'action à effectuer sur les entités désignées dans la phrase.
Liste des verbes
modifier- Add permet d'ajouter des données ou informations sur le nom qui le suit ;
- Get permet d'obtenir des données ou informations sur le nom qui le suit ;
- Clear permet de réinitialiser un affichage ou une variable ;
- Import et Export permet d'importer/exporter des fichiers de commandes ou des alias ;
- New permet de créer de nouveaux objets ou variable ;
- Set permet de définir des données ou informations sur le nom qui le suit ;
- Write permet d'écrire des données ou informations sur le nom qui le suit et peut agir comme le compte-rendu d'une commande.
- Shutdown
Comparaison du langage PowerShell et des langages de script UNIX
modifierÀ la base influencé par le langage Tcl[9], PowerShell est plus proche des langages de script comme Perl que de langages de shell, comme Bash. Il n'y a aucune ressemblance entre le PowerShell et le langage batch des fichiers .BAT de DOS/Windows.
Le but de Microsoft est de faire un langage de script complètement intégré, avec autant de fonctionnalités que celles qui existent sous Unix (et Linux) et avec le même niveau de sécurité.
Par contre, les échanges entre composants se font sous forme d'objets et non pas de texte :
- sous UNIX, les échanges se font sous forme d'un tube sous la forme d'un flux d'octets souvent interprété entre l'entrée d'un composant et la sortie d'un composant ;
- à l'opposé, avec Windows PowerShell, les échanges se font au format objet. En effet, Windows PowerShell rend accessibles en ligne de commande les bibliothèques .NET.
PowerShell (Cmdlet) | PowerShell (Alias) | CMD.EXE / COMMAND.COM | Shell Unix | Description |
---|---|---|---|---|
Get-ChildItem | gci, dir, ls | dir | ls, dir | Liste les fichiers / répertoires du répertoire (courant) |
Get-Content | gc, type, cat | type | cat | Obtenir le contenu d'un fichier |
Get-Command | gcm | help | help, which | Liste des commandes |
Get-Help | help, man | help | man | Aide |
Clear-Host | cls, clear | cls | clear | Efface l'écran |
Copy-Item | cpi, copy, cp | copy | cp | Copier un ou plusieurs fichiers / l'arborescence complète |
Move-Item | mi, move, mv | move | mv | Déplacer un fichier / répertoire |
Remove-Item | ri, del, erase, rmdir, rd, rm | del, deltree, erase, rmdir, rd | rm, rmdir | Supprimer un fichier / répertoire |
Rename-Item | rni, ren, mv | ren, rename | mv | Renommer un fichier / répertoire |
Get-Location | gl, pwd | cd | pwd | Afficher le répertoire de travail courant |
Pop-Location | popd | popd | popd | Changer le répertoire courant vers le répertoire le plus récemment poussé sur la pile |
Push-Location | pushd | pushd | pushd | Pousser le répertoire courant sur la pile |
Set-Location | sl, cd, chdir | cd, chdir | cd | Changer le répertoire courant |
Tee-Object | tee | NC | tee | Diriger l'entrée vers un fichier ou une variable, puis la passer dans un pipeline |
Write-Output | echo, write | echo | echo | Afficher des chaînes, variables etc sur la sortie standard |
Get-Process | gps, ps | tlist | ps | Liste de tous les processus en cours d'exécution |
Stop-Process | spps, kill | kill | kill | Arrêter un processus en cours d'exécution |
Select-String | sls, findstr | find, findstr | grep | Recherche d'une chaine de caractère |
Set-Variable | sv, set | set | env, export, set, setenv | Définir la valeur d'une variable / créer une variable |
Invoke-WebRequest | iwr, wget, curl | NC | wget, cURL | Obtient le contenu d'une page web |
Avantages
modifierPowerShell permet de gérer les chaînes de caractères avec des unités de 16 bits, comme cela se fait sur Windows, la plateforme .NET, Java et JavaScript.
Limitations
modifierPowerShell ne peut pas afficher les caractères Unicode lorsqu'il est utilisé au travers de Windows console subsystem. Un contournement pour y arriver consiste à utiliser PowerShell ISE, une interface graphique[10].
Annexes
modifierArticles connexes
modifier- Microsoft .NET
- Windows Management Instrumentation
- Console Win32
- Command.com
- Commande DOS
- Commandes net
- Commandes netsh
- Commandes Windows NT et OS/2
- Commandes Unix
Liens externes
modifierBibliographie
modifier- Windows PowerShell, Ed Wilson, 2007, Dunod
Références
modifier- « Release 7.4.6 », (consulté le )
- Nouveautés de Windows PowerShell dans Windows 7.
- Le menu de l'explorateur dans Windows 8.
- « https://github.com/PowerShell/PowerShell/blob/master/LICENSE.txt »
- Windows PowerShell.
- Arnaud PETITJEAN et Robin LEMESLE, Windows PowerShell : version 1 et 2, vol. 1, Editions ENI, , 673 p. (ISBN 978-2-7460-5342-7), p. 26 et 31
- « Windows PowerShell », sur Microsoft TechNet (consulté le ).
- « Les verbes approuvés pour les commandes PowerShell », sur docs.microsoft.com (consulté le )
- Jeffrey Snover, Windows PowerShell : PowerShell and WPF: WTF.
- « Printing Unicode characters to the PowerShell prompt », sur Stack Overflow (consulté le ).