Aperçu du nouveau PowerShell Cross Platform

Microsoft annonce depuis 2014 s’ouvrir aux autres systèmes, et en ce moment nombre de leurs nouveautés vont dans ce sens. Après l’arrivée entre autres de SQL Server sur Linux et Bash sous Windows, le dernier élément en date est : PowerShell 6 en OpenSource compatible Linux et MacOs. Plus précisément Microsoft déclare actuellement PowerShell 6 Alpha 9 compatible avec :

  • Windows 10 / Server 2016
  • Windows 8.1 / Server 2012 R2
  • Ubuntu 16.04
  • Ubuntu 14.04
  • CentOS 7
  • OS X 10.11

Microsoft a réussi à réaliser ce tour de force en se basant sur .NET Core, Framework .NET en open source et Cross Platform (note : baser un outil aussi crucial et important que PowerShell sur .NET Core montre bien la détermination qu’a Microsoft à s’ouvrir aux autres produits/plateformes).

Comment puis-je tester ?

Simplement en installant le package approprié à la plateforme : https://github.com/PowerShell/PowerShell/releases/. Une fois installé PowerShell 6 est accessible via la commande

Powershell

Ou en passant par la console de commande dédiée à PowerShell 6 présente sous Windows (nommée PowerShell 6).

Ça marche comment ?

De la même façon qu’un PowerShell normal. En testant les commandes de base tout semble fonctionner correctement. Néanmoins on remarque rapidement que la version actuelle est encore en Alpha, de ce fait quelques différences apparaissent rapidement comme par exemple la vérification de l’environnement via la commande [environment]::OSVersion.Version retourne sous Windows 10 :

  • 10.0.10536.0 (=Windows 10) avec PowerShell 5
  • 6.2.9200.0 (=Windows 8) avec PowerShell 6

Cela prouve qu’il faut garder en mémoire que la majorité du code a dû être réécrit, des problèmes peuvent donc survenir ou des adaptations sont à prévoir…

Avec l’ouverture quelques adaptations apparaissent

PowerShell 6 est actuellement en Alpha et cela implique nécessairement quelques limitations ou adaptations pour la réutilisation d’anciens scripts :

  • .NET Core != .NET:  évident, mais cela à de grosse conséquence sur PowerShell, en effet les versions antérieurs à PowerShell 6 sont basées sur le Framework .NET : comme les bases ne sont pas les mêmes rien ne garantit à 100% qu’un script PowerShell (version inférieur à 6) fonctionnera en PowerShell 6.
  • PowerShell exécute la plupart des commandes en mémoire : donc pas de :
    • sudo ma_commande

    • mais plutôt
    • sudo powershell ma_commande

  • Windows != Linux/MaxOs: c’est une évidence, mais cela implique quelques nouveaux paramètres à prendre en compte :

En bref cela impliquera obligatoirement du développement spécifique par script, mais pour tout ceux ayant déjà touché à .NET Core ou au développement mobile Cross Platform cela devrait être naturel.

C’est quand même utilisable ?

Comme toute alpha, PowerShell 6 est intéressant pour les tests et la découverte, mais il ne faut surtout pas l’utiliser en production, le nombre important de problème (+ de 300 sur GitHub) et le nombre de fonctionnalités vitales encore non implémentées/bancales (gestion des services, remote, manipulation XML…) ne permettent pas d’utiliser PowerShell 6 comme outil de gestion ou de scripting principal.

Finalement…

PowerShell 6 s’annonce être une excellente version, même si celle-ci est encore en alpha et que le travail est encore conséquent pour fournir une expérience parfaite côté Linux et MacOs ! Si le pari est tenu, PowerShell sous Linux et MacOs pourra permettre d’avoir une gestion des scripts unifiée et ainsi qu’une centralisation des compétences, ce qui est loin d’être anodin dans un monde ou se battent principalement Windows, Linux et MacOs.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s