Powershell a été annoncé il y'a de cela quelques jours en alpha sur Linux. Voici mon premier avis et une revue des possibilités de la chose!

 L'installation

L'installation est assez simple, disponible au choix sur Ubuntu 14.04, 16.04, CentOS 7 et Osx 10.11, j'ai mis Powershell sur une VM d'Ubuntu 16.04. Elle consiste en l'installation de 2 paquets via apt (libunwind8 et libicu55) et d'un dpkg -i sur le .deb téléchargé sur le github de l'équipe Powershell (disponible ici).

Le package varie selon la version d'Ubuntu, donc la 14.04 ne demande pas les même que la 16.04. Renseignez vous sur leur github pour avoir les informations d'installation.

L'utilisation

Une fois l'install faite, un simple "powershell" dans le terminal nous renvoie vers une interface familière.

VirtualBox_Ubuntu_22_08_2016_13_37_21

Le test de changement d'emplacement ainsi que de création de fichier se déroule sans problème. L'auto-complétion est au rendez vous, ainsi que la coloration syntaxique, parfaite pour relire son code!

autocomp

La console / terminal est également paramétrable, la variable $host est disponible et les élements d'UI sont ouverts en écriture.

hostui

On constate cependant quelques bugs d'affichage lorsque la console est modifiée.

uibug

La politique d’exécution est obligatoirement sur Unrestricted avec l'impossibilité de la modifier, le message est clair "Operation is not supported on this platform". N'importe quel script peut donc être exécuté.

execpol

Comme il est possible de lancer des commandes linux directement dans la console Powershell, certains alias ont été retirés. Sous Windows, la commande ls et la commande dir sont toutes les deux utilisables, car ce sont des Alias de la commande Get-Childitem (c'est à dire qu'en entrant ls ou dir, vous exécutez en fait Get-Childitem).

alias

Comme on le voit ici, l'alias ls n'existe pas, alors qu'il est bien exécutable, et il n’apparaît pas dans la liste. L'implication peut paraître minime, mais, dans cet exemple, elle signifie qu'un script conçu sous Windows dans lequel un alias "ls" est renseigné ne fonctionnera pas sous Linux, car même si la commande existe, le retour de cette commande est complètement différent (du texte pour Linux, un objet System.IO.FileInfo ou System.IO.DirectoryInfo sous Windows). N'aimant que peu les Alias, je n'aurai pas ce problème, mais pensez à regarder à 2 fois vos scripts si vous devez les transférer sur une machine au pingouin!

Il est possible de lancer des processus du système hôte en passant par Start-Process, de vérifier leur état, de faire bon nombre de choses possibles sur Windows.

VirtualBox_Ubuntu_22_08_2016_13_51_04

En une commande, j'ai pu exporter un csv des processus en cours sur ma machine virtuelle. J'ai pu constater avec une grande joie que Export-CliXml est disponible, cette commande est un peu la clé de voûte de bon nombre de mes scripts puisqu'elle me permet d'exporter les variables avec leurs types, méthodes et propriétés pour pouvoir les réimporter dans un autre script.

VirtualBox_Ubuntu_22_08_2016_13_38_34

VirtualBox_Ubuntu_22_08_2016_13_39_15

A noter que certaines commandes ont disparu, bien qu'un équivalent Linux existe, cela peut poser problème sur certains scripts. Dans ce cas précis, je suis particulièrement étonné qu'une commande telle que Stop-Computer n'existe pas. Est-ce un problème de droits? Le fait d'être en sudo ne fait pas pour autant apparaître "magiquement" la commande, j'en suis a espérer que cela vient simplement du fait que nous sommes encore en build Alpha et que les commandes restantes soit intégrées dans une prochaine release.

VirtualBox_Ubuntu_22_08_2016_14_53_58

En conclusion

Alors, que penser de cette adaptation de Powershell sur Linux?

A mon humble avis, que du bien. Je suis absolument sidéré par la qualité actuelle de cette release, aussi Alpha soit-elle, elle permet déjà de faire bon nombre de choses, à tel point que je vais passer très rapidement mon petit pc portable sous OpenSuse vers Ubuntu ou CentOS afin de profiter de Powershell, pour pouvoir concevoir et éditer des scripts. Cela fait déjà un certain temps que je cherche à effectuer des checks de certaines tâches, d'exporter des données issues du système, et pour lesquelles j'étais freiné par l'aspect "texte" de bash, ou pour lesquelles je devais développer un peu de Python.

VirtualBox_Ubuntu_22_08_2016_13_41_19

L'arrivée de PowerShell sur Linux est, et sera, une grande prise d'importance pour les développeurs PS qui seront désormais complètement cross platform, et j'imagine déja les retours plus que positifs de l'Alpha auprès de Microsoft.

En l'état actuel, il manque quand même certaines choses pour pouvoir rendre Powershell pleinement utilisable dans des scripts très avancés, mais l’évolution de .Net et du build Powershell arriveront (je l'espère) à vite faire disparaître ce manque.

Ajouter un commentaire

Article précédent Article suivant