Это 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 — это большое улучшение.