Tout un symbole : le successeur de DOS sur macOS

Nicolas Furno |

En quelques années, Microsoft a totalement changé de cap en matière d’open-source et d’ouverture aux plateformes concurrentes. L’éditeur de Windows ne favorise plus aussi systématiquement son propre système d’exploitation et il ouvre ses outils et solutions à Linux et macOS. C’est le cas pour son éditeur de code Visual Studio, c’est le cas aussi pour ses bases de données SQL Server et dernièrement, c’est PowerShell, le successeur de DOS, qui est disponible pour Linux et macOS.

PowerShell depuis le Terminal de macOS. Cliquer pour agrandir
PowerShell depuis le Terminal de macOS. Cliquer pour agrandir

La sixième version de PowerShell est disponible et elle n’est pas limitée à Windows. Pour être exact, ce n’est pas tout à fait la même version, puisque Microsoft a développé en parallèle de celle qui est intégrée à son système d’exploitation « PowerShell Core ». Cette déclinaison ne dépend pas du framework .NET, ce qui lui permet d’être multiplateforme, mais elle est aussi nettement plus limitée à la base, avec une partie seulement des fonctions disponibles. Néanmoins, l’éditeur indique que c’est la version qui sera désormais développée et le PowerShell classique est maintenu, mais les nouvelles fonctions n’iront que dans la 6.0 et suivants.

Toutefois, PowerShell Core est pensé pour être enrichi avec des modules supplémentaires et il y en a déjà plusieurs milliers à disposition des utilisateurs. Une partie est dédiée à Azure, le service de cloud de Microsoft où cet outil en ligne de commandes sera particulièrement utilisé, mais il y a de tout, des commandes spécifiques à Windows et même des outils de domotique. L’éditeur espère sûrement constituer une communauté autour de son outil, même si on peut aussi utiliser Bash, la ligne de commande la plus populaire, sur Windows.

Si vous voulez tester PowerShell sur macOS, le plus simple est de passer par Homebrew et Cask :

brew cask install powershell

Vous pouvez ensuite lancer une session en ouvrant l’app installée dans le dossier /Applications, ou bien en tapant la commande pwsh dans une session de terminal.

avatar Florian Innocente | 

Waou le frisson sur l'échine lorsque j'ai reçu la notif'.
TROP cool.

avatar Mickaël Bazoge | 
Personnellement, ça m'en a touché une sans trop faire bouger l'autre.
avatar zoubi2 | 

Euh... Oui... Mais quel est le plus de PowerShell par rapport au shell par défaut sur mon Terminal ??

Utile pour ceux qui utilisent un Mac pour gérer un parc Windoze ???

avatar fiatlux | 

PowerShell n'est pas vraiment le successeur de DOS, c'est un shell, pas un système d'exploitation!

avatar macinoe | 

Pour être précis, c’est un langage de script orienté objet car basé sur le framework .net disponible via une interface en ligne de commande et qui existe sous windows depuis 2006 et installé de base depuis windows 7.

C’est justement son aspect orienté objet qui fait une grosse différence avec les shell unix sur lesquels on utilise d’autres langage de script pour faire de la poo.

L’erreur c’est souvent de le prendre pour un shell du type bash, ce qui désoriente pas mal les habitués. On est pas du tout sur les mêmes paradigmes.

Ce serait plutot unlangage comparable à python permettant d’accéder à toutes les api .net, c’est à dire faire à peut près tout ce qu’on peut faire avec visual studio ( le xcode de windows ) mais sans interface graphique.

avatar zoubi2 | 

@macinoe

Merci M'sieur.

avatar XiliX | 

Bah pour moi ce sera "Bash" ou "Seychelle"

avatar Christophe Laporte | 
on peut faire des DIR avec ça ?
avatar Eurylaime | 

oui, dir et ls sont des alias à la commande Get-ChildItem

Et pour précision, même s'il n'utilise pas .NET, il utilise .NET Core qui est conforme à .NET Standard 2.0.

avatar Dumber@Redmond | 

@Eurylaime

C'est bien joli tout ça mais les performances en réseau sont CATASTROPHIQUES !
Inutilisable au quotidien pour scripter des choses simples et même faire des ls avec des patterns ou des expressions réguliers. Si tu mixes ça avec des filtres ou des critères, c'est absolument nul à chier... Bref bien un outil Micromou.. ? (et je parle bien de la dernière version disponible, pas de la 1.0)
Beaucoup de promesses et rien d'utile au final. Pour des raisons de performances on garde CMD dans ma boite...

Autrement dit à part les sysadmins Mac qui bossent avec du Windows, aucune personne n'utilisera jamais PowerShell sur Mac.. par contre le bash est utile sur Windows et pas seulement pour accéder à des machines UNIX..

avatar macinoe | 

Venant d’un pseudo comme le tiens, ton discours est vraiment totalement crédible.
Une source peit-être ?

avatar Eurylaime | 

Dumber@Redmond

CMD est toujours dans la boîte pour des raisons de compatibilité, c'est indispensable.

Je n'ai pas beaucoup utilisé la version sur macOS même si je suis très régulièrement son développement depuis son annonce (j'ai installé toutes les betas afin de tester les évolutions sur des points particuliers), cependant sur Windows je l'utilise très régulièrement sans trop de soucis, pas plus qu'avec bash que j'utilise aussi pas mal sur macOS.

avatar Dumber@Redmond | 

@Eurylaime

Je ne parle pas de fonctionnalités, je parle juste de performance en local comparée à la performance sur des accès réseaux. En local Powershell est utilisable, pas en réseau sur des accès distants.
J'ai benchmarké des scripts CMD vs Powershell, et ce denier est entre 200% et 400% plus lent que CMD..
Ce sont des faits, rien de plus. Et cela rend Powershell inexploitable en pratique sur des jobs de Production. C'est aussi simple que ça.

avatar mk3d | 

Super, vous pourriez développer un peu le sujet? Utilité? Avantages par rapport au shell? Je reste sur ma fin. — edit — le commentaire de @macinoe apporte un bout de réponse, merci à toi ?

avatar Dumber@Redmond | 

Autant pour moi, je me suis trompé dans le facteur de sous performance: ce n'est pas 200% ou même 400% mais plus de 200 fois plus lent que CMD.
Une récupération de fichiers qui dure 17 secondes sur CMD dure plus d'une heure sur PowerShell.. sur une ressource réseau, ça cause ou pas !???
En local le facteur de dégradation entre PS et CMD sur une tâche similaire est tout de même un rapport de 1 à 7.. On passe de 3 minutes à 20 minutes pour une même tâche !
Donc c'est un zéro pointé à PowerShell ?

CONNEXION UTILISATEUR