41

Является ли Windows PowerShell такой же мощной и эффективной, как terminal Linux?

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

2 ответа2

52

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

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

На самом деле, правильно сказать, что PowerShell - это Windows, представляющая большую часть объектной модели WMI, COM и .NET в интерактивной среде с возможностью написания сценариев, и что эта среда командной строки по-прежнему заимствует многие концепции, такие как конвейеры. и перенаправление ввода / вывода - из оболочек Unix, как это делали старые DOS (2.0 и выше) command.com и cmd.exe . Конвейеры работают с объектами в PowerShell. Вы можете делать такие вещи, как создание HTML и, возможно, таблиц Excel на лету, если вы знали достаточно. Это, безусловно, обновление / замена старой оболочки 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 и многие другие. Эффективность, вероятно, зависит от того, насколько хорошо известно, какой инструмент они используют, больше всего на свете.

24

Windows PowerShell и Unix shell - это две разные вещи с преимуществами в обоих.

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .