Является ли Windows PowerShell таким же мощным, как терминал Unix/Linux?

Является ли Windows PowerShell таким же мощным, как терминал Unix/Linux?

Это WindowsPowerShellтакой же мощный и эффективный, как Linux terminal?

Люди в офлайне говорят мне, не вдаваясь в подробности, что Windows PowerShell — это попытка сделать так, чтобы администраторы Unix чувствовали себя более комфортно, используя Windows. Но я полагаю, что они будут чувствовать себя комфортно, только если он будет иметь (или почти) такую ​​же эффективность.

решение1

Ну, ваша первая проблема в том, что вы сравниваете оболочку (PowerShell) с терминалом. В Linux терминал — это то, что отправляет и получает символьный ввод-вывод и, как предполагается, имеет интерактивного пользователя за ним (другими словами, это приложение с графическим интерфейсом, используемое длясодержатьоболочка). Одна из самых распространенных оболочек, работающихв пределахТерминал Ubuntu — этоБаш, но есть и другие.

Люди в офлайне говорят мне, не вдаваясь в подробности, что Windows PowerShell — это попытка сделать так, чтобы администраторам Unix было удобнее работать с Windows.

На самом деле, правильно будет сказать, что PowerShell — это Windows, предоставляющий большую частьВМИ,КОМи.СЕТЬобъектная модель в интерактивной и скриптовой среде командной строки - и что эта среда командной строки продолжает заимствовать многие концепции - такие как конвейеры и перенаправление ввода-вывода - из оболочек Unix, как и старый DOS (2.0 и выше) command.comи cmd.exeделал. Конвейеры работают с объектами в PowerShell. Вы можете делать такие вещи, как создание HTML и, возможно,Эксельэлектронные таблицы на лету, если вы достаточно знаете. Это, безусловно, обновление/замена старой cmd.exeоболочки, которая не сильно изменилась сWindows NT 4.0.

Что касается синтаксиса, он меньше похож на оболочки Unix (хотя в конечном итоге ни один из командлетов не используется /в качестве переключателя или индикатора параметра), но есть много псевдонимов классических команд Unix — например, ввод lsв окне PowerShell будет работать как dir. Но это всего лишь псевдонимы (перечисляет ли их Get-Alias?).

Что касается возможностей PowerShell, у вас действительно были похожие возможности, только в виде скриптов, отVBScriptиCScript- хотя оба они появились раньше .NET.

Одна вещь, которую не нужно делать пользователям Unix при использовании Bash большую часть времени, это быть близко знакомыми с возможно очень сложной объектной моделью программиста или объекта, которая требуется для многих сложных и простых задач PowerShell. Но это возможно только потому, что существует четкое соглашение о прямом текстовом выводе для многих стандартныхPOSIXКоманды. В Windows такой традиции не было - похоже, что она предпочитала использовать mmcконсоль для задач администрирования, с командами, добавляемыми здесь и там на протяжении многих лет. Кроме того, многие известные утилиты Unix сложны и требуют некоторого изучения перед использованием -rsync,wgetи многие другие. Эффективность, вероятно, зависит от того, насколько хорошо человек знает инструмент, который он использует, больше, чем от чего-либо еще.

решение2

Windows PowerShell и Unix shell — это две разные среды, каждая из которых имеет свои преимущества.

Unix (shell) имеет философию, что все является файлом. Входные и выходные данные команды Unix могут быть доступны как файл. Это делает цепочку команд действительно простой, а повторное использование выходных данных одной команды другой — это сила оболочки Unix.

В Windows PowerShell, насколько я знаю, все является объектом. Вы можете передать результат команды другому как объект. Это может быть действительно мощным, но это не имеет простой концепции Unix.

Я не верю, что PowerShell столь же эффективен, как оболочка Unix, но другие считают, что это так.

Но сравнение некорректно, поскольку Windows не является *nix-системой, поэтому концепции *nix не применимы. По сравнению сMS-DOSPowerShell — это большое улучшение.

Связанный контент