web-dev-qa-db-fra.com

Windows PowerShell est-il aussi puissant que le terminal Unix/Linux?

Windows PowerShell est-il aussi puissant et efficace que la terminal de Linux?

Les gens hors ligne me disent, sans trop en dire, que Windows PowerShell est une tentative pour rendre les administrateurs Unix plus à l'aise avec Windows. Mais je suppose qu’ils ne seront à l’aise que s’il a (ou presque) la même efficacité.

43
kern

Eh bien, votre premier problème est que vous comparez un shell (PowerShell) à un terminal. Sous Linux, un terminal est quelque chose qui envoie et reçoit des E/S basées sur des caractères et est supposé avoir un utilisateur interactif derrière lui (en d’autres termes, il s’agit de l’application GUI utilisée pour contient a Shell). L'un des shells les plus courants est à l'intérieur de Le terminal d'Ubuntu est Bash , mais il y en a d'autres.

Les gens hors ligne me disent, sans trop en dire, que Windows PowerShell est une tentative pour rendre les administrateurs Unix plus à l'aise avec Windows.

En réalité, la chose correcte à dire est que PowerShell est Windows exposant une grande partie du modèle WMI , COM et .NET dans un environnement de ligne de commande interactif et scriptable - et que cet environnement de ligne de commande continue à emprunter un grand nombre des concepts - tels que les pipelines et la redirection d’E/S - à des shells Unix, tout comme l’ancien DOS (2.0 et versions ultérieures) que command.com et cmd.exe avaient utilisé. Les pipelines fonctionnent avec des objets dans PowerShell. Vous pouvez faire des choses comme créer du HTML et éventuellement Excel des feuilles de calcul à la volée si vous en savez suffisamment. C'est certainement une mise à niveau/remplacement de l'ancien cmd.exe Shell qui n'a pas beaucoup changé depuis Windows NT 4.0 .

En ce qui concerne la syntaxe, cela ressemble moins aux shells Unix (bien qu’au final aucune des applets de commande n’utilise / comme indicateur de commutateur ou de paramètre), mais il existe de nombreux alias pour les commandes Unix classiques, telles que la saisie de lsdans une fenêtre PowerShell fonctionnera comme dirname__. Mais ce ne sont que des alias ("Get-Alias" les énumère?).

En ce qui concerne les fonctionnalités de PowerShell, vous disposiez de fonctionnalités similaires, en mode script uniquement, à partir de VBScript et CScript - bien que ces deux versions soient antérieures à .NET.

Une chose que les gens d’Unix n’ont pas à faire lors de l’utilisation de Bash consiste le plus souvent à se familiariser avec le modèle d’objet très élaboré d’un programmeur ou d’un objet, qui est requis pour de nombreuses tâches PowerShell simples et avancées. Mais cela n’est possible que parce qu’il existe une convention claire en matière de sortie de texte simple pour de nombreuses commandes standard POSIX . Windows n'a pas eu cette tradition - il a semblé préférer utiliser une console mmcpour les tâches d'administration, avec des commandes ajoutées ici et là au fil des ans. En outre, de nombreux utilitaires Unix bien connus sont complexes et nécessitent une étude préalable - rsyncNAME_ , wgetNAME_ , et bien d’autres. L'efficacité dépend probablement du degré de connaissance de l'outil utilisé.

53
LawrenceC

Windows PowerShell et Unix Shell sont deux choses différentes avec des avantages à la fois.

Unix (Shell) a pour philosophie que tout est un fichier. L’entrée et la sortie d’une commande Unix sont accessibles comme un fichier. Cela rend la commande d'enchaînement vraiment simple et réutiliser la sortie d'une commande par une autre est la puissance du shell Unix.

Avec Windows PowerShell, autant que je sache, tout est un objet. Vous pouvez transmettre le résultat d'une commande à une autre en tant qu'objet. Cela peut être très puissant, mais il n’a pas le concept simple d’Unix.

Je ne crois pas que PowerShell soit aussi efficace qu’un shell Unix, mais d’autres le pensent.

Mais la comparaison est sans objet, car Windows n'est pas un système * nix, les concepts * nix ne s'appliquent donc pas. Par rapport à MS-DOS , PowerShell représente une amélioration considérable.

26
Biapy