Ответы:
Джеффри Сновер (дизайнер PowerShell) отлично ответит на StackOverflow:
Наиболее очевидное преимущество: до тех пор, пока в конвейер не вовлечен текстовый вывод (или устаревшая команда), вы перемещаете не текст по каналам, а экземпляры объектов .NET Framework со всеми их свойствами и методами.
Это обеспечивает более выразительную и менее двусмысленную обработку конвейера, на которую также совершенно не влияют языковые и языковые настройки (например, подумайте о форматах даты или чисел и о том, как вы должны обращаться с ними как со строками в обычном режиме).
Это также означает, что у вас есть доступ ко многим возможностям .NET Framework в среде сценариев.
Не вдаваясь в ценностные суждения о парадигме, основными преимуществами PowerShell являются интеграция и актуальность .Net - начиная с сервера Windows 2008 и далее, он входит в пакет по умолчанию и загружается в пакеты обновления на 2003 и 2003 R2.
Чтобы быть справедливым, есть несколько других вариантов для сценариев - например, Perl и Python. Python также дает вам возможность использовать IronPython, если вы хотите встроенную .Net интеграцию. На самом деле IronPython удовлетворительно установится, просто поместив его в каталог. Вы можете просто упаковать его в приложение без необходимости отдельного этапа установки.
Ключевая сила Powershell - немного обоюдоострый меч. Хотя потоковая передача объектов .net весьма полезна и имеет свои преимущества, она делает гораздо больше предположений о способности компонентов хорошо играть с фреймворком. Чтобы это действительно работало, вам нужно обернуть вещи командлетами. Хотя текстовый вывод несколько более низкого уровня и требует синтаксического анализа, он создает меньшую нагрузку на компоненты, чтобы хорошо играть с фреймворком.
Со временем я ожидаю увидеть гораздо больше экосистемы Windows (как MS, так и сторонних компонентов) с оболочками командлетов, чтобы они работали с Powershell. Когда это произойдет, дело о Powershell станет намного сильнее.
Исторически, одним из ключевых традиционных недостатков Windows с точки зрения администрирования была слабая поддержка сценариев. MS признала это несколько лет назад, и после нескольких неудачных попыток (например, WSH) Powershell является наиболее надежной попыткой MS на данный момент исправить этот недостаток.
Я думаю, что самая большая победа для PowerShell - это то, что вы можете транслировать все что угодно, не разбирая текст и / или не обрабатывая sed и awk. Не приводя эти неприятные объекты в уравновешивание, думайте о powershell как об автоматическом sed и awk для связывания команд в конвейере.
Преимущества: -
Автоматизация задач: - Такие задачи, как добавление пользователя на 1000 компьютеров, - это утомительная работа вручную. Но с помощью powershell вам нужно написать простой скрипт, и этот скрипт будет запущен, он автоматически настроит всех клиентов. Таким образом, это экономит время, повторяя шаги автоматически. Сценарии резервного копирования и восстановления Windows PowerShell можно разрабатывать и планировать (с помощью планировщика задач Windows), тогда как центр администрирования используется для одноразового резервного копирования и восстановления. Windows PowerShell обладает тем преимуществом, что он работает с моментальными снимками SQL вместо рабочей базы данных. Один из параметров команды Windows PowerShell вызовет создание снимка SQL, а затем Windows PowerShell выполнит действие со снимком вместо производственной базы данных. Это уменьшит влияние ресурсов операции резервного копирования на производственную среду. Благодаря Windows PowerShell администраторы SharePoint получат более детальный контроль над параметрами резервного копирования или восстановления.
Улучшение возможностей удаленного взаимодействия: - Значение двоякое, во-первых, рабочие столы Windows 7 могут взаимодействовать с сервером с помощью команд PowerShell. В результате специалисты по ноутбукам с Windows 7 могут удаленно настраивать свои серверы с помощью сценариев PowerShell. Во-вторых, клиентские сценарии входа в систему, написанные на PowerShell и находящиеся на сервере, могут работать в Windows 7 более легко. Кроме того, используя PowerShell, мы можем легко управлять удаленными машинами, выполнять на них важные задачи и легко применять эти изменения в больших масштабах. Remoting использует сетевые ресурсы. Поэтому, когда мы работаем с powershell, мы не используем графический интерфейс, и, следовательно, полоса пропускания, необходимая для определенной задачи, уменьшается, и проблема сетевой перегрузки решается.
Согласованность: - Если у вас есть установленная процедура для выполнения задачи, использование Windows Powershell гарантирует, что вы никогда не пропустите шаг, автоматизируйте столько, сколько сможете, и попросит Powershell подсказать, что нельзя автоматизировать.
Поддержка .NET: - Powershell поддерживает .NET Framework. Поэтому все системные функции могут быть легко добавлены в сценарии powershell и, таким образом, помогают программисту в разработке сценариев. Таким образом, автоматизация задач VDI намного проще, проще и эффективнее.
Меньше ручной работы: - Администратор теперь может создавать, удалять или изменять настройки виртуальных машин, просто написав сценарии. Ему не нужно переходить на отдельный компьютер и выполнять работу. Также написанные сценарии приемлемы на всех компьютерах. Поэтому администратору не нужно переписывать их снова и снова.
Возможность повторного использования: - Сценарии, однажды написанные для выполнения конкретной задачи, могут быть сохранены для более поздних целей, а также могут быть объединены с другими сценариями для выполнения различных задач. Таким образом, повторяющиеся задачи можно выполнить намного проще, просто запустив сценарии. Это экономит время и деньги администраторов при настройке компьютеров.
Поддержка конвейерной обработки: - Самая большая победа для PowerShell - это то, что вы можете передавать все что угодно, не анализируя текст. Вы можете предоставить вывод одной команды в качестве ввода в новый набор и, таким образом, можете решать сложные задачи.
Cygwin не гарантированно будет доступен для каждой версии Windows. Последнее, что я проверил, было сомнительно на 64-битных машинах. Powershell становится командной оболочкой по умолчанию для Windows и предлагает «собственный» доступ ко всем ресурсам на компьютере с Windows.