Après avoir été l’exemple type de la société voulant imposer coûte que coûte ses technologies propriétaires, sans se soucier de l’interopérabilité, Microsoft a pris depuis quelques années un virage à 180° en s’ouvrant de plus en plus au monde du logiciel libre.
Ainsi, Microsoft a fait de nombreux pas en direction du monde Linux, comme sa participation au portage de .NET (Mono), puis le passage en open-source du framework.
La dernière grosse opération de ce côté a eu lieu il y a quelques semaines à peine, avec le lancement de Windows 10 Anniversary, qui embarque en option Windows Subsystem for Linux, une implémentation dans Windows des fonctions du noyau Linux, permettant d’exécuter en toute transparence des binaires issus de Linux sur une machine Windows, et notamment l’emblématique shell Bash.
C’est désormais l’inverse que Microsoft propose, avec l’ouverture du code de PowerShell (sous licence MIT, une licence très permissive) et son portage sous Linux. Nouvel interpréteur de commandes pour Windows lancé en 2006, PowerShell vit depuis en parallèle de l’interpréteur de commande historique, avec lequel il n’est pas compatible. Sa principale particularité d’offrir un langage de script orienté objet, contrairement aux langages utilisées par les shell Linux, qui sont souvent des langages de scripts extrêmement basiques.
Si sa syntaxe bien particulière, et notamment ses commandes aux noms très verbeux (chaque commande est constitué d’un verbe et d’un nom, par exemple Get-ChildItem pour lister le contenu d’un répertoire, avec heureusement des alias, pour simplifier leur utilisation en mode interactif) rend PowerShell relativement complexe à maitriser pour un habitué des autres shell, le langage offre globalement bien plus de possibilité, et permet d’écrire des scripts très évolués (gestion des transactions, des exceptions…), d’autant que le jeu de commandes peut être étendu avec des programmes écrits en .NET. Il a donc acquis une certaine popularité auprès des administrateurs Windows, en permettant d’automatiser des tâches complexes qui ne pouvaient quasiment se faire qu’en mode graphique auparavant.
Avec le portage sous Linux, PowerShell pourrait commencer à venir marcher sur les platebandes des shell Unix. On pourrait notamment envisager que certains produits multiplateformes soient désormais basés partiellement sur des scripts PowerShell, plutôt que d’embarquer des scripts pour Windows et d’autres pour Unix, tandis que Microsoft devrait également rendre multiplateformes certains de ses outils de gestion de plateformes, rendant ainsi possible l’administration d’un parc Windows depuis un poste Linux.
Microsoft propose pour l’instant des pré-versions de PowerShell 6.0 pour trois distributions Linux (CentOS 7, Ubuntu 14.04 et Ubuntu 16.04), mais également pour Mac OS X (10.11). Comme Windows Subsystem for Linux s’appuie sur Ubuntu, on devrait même pouvoir faire tourner Powershell dans Bash sous Windows 😀