Ну, первая проблема в том, что вы сравниваете оболочку (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
и многие другие. Эффективность, вероятно, зависит от того, насколько хорошо известно, какой инструмент они используют, больше всего на свете.