Назад | Перейти на главную страницу

в чем преимущества Powershell перед cygwin / unix-shell

Очевидное различие, о котором я знаю, - это возможность взаимодействия с определенными продуктами MS, такими как Exchange. Но каковы преимущества Powershell для человека, которому не нужно администрировать такие продукты? Каковы причины вообще изучать Powershell (при условии, что я свободно владею bash и cygwin)?

Наиболее очевидное преимущество: до тех пор, пока в конвейере не задействован текстовый вывод (или устаревшая команда), вы перемещаете не текст по каналам, а экземпляры объектов .NET framework со всеми их свойствами и методами.

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

Это также означает, что у вас есть доступ ко многим возможностям платформы .NET в среде сценариев.

Не вдаваясь в оценочные суждения о парадигме, основными преимуществами 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 для связывания команд в конвейере.

На StackOverflow есть отличный ответ Джеффри Сновера (дизайнер PowerShell):

https://stackoverflow.com/questions/573623/#573861

Преимущества: -

  1. Автоматизация задач: - Такие задачи, как добавление пользователя к 1000 машинам, являются утомительной работой вручную. Но с помощью PowerShell вам нужно написать простой скрипт, и этот скрипт будет запущен, он автоматически настроит всех клиентов. Таким образом экономится время за счет автоматического повторения шагов. Сценарии резервного копирования \ восстановления Windows PowerShell можно разрабатывать и планировать (с помощью планировщика задач Windows), тогда как центр администрирования используется для одноразового резервного копирования и восстановления. Преимущество Windows PowerShell в том, что он работает со снимками состояния SQL, а не с производственной базой данных. Один из параметров команды Windows PowerShell вызовет создание моментального снимка SQL, а затем Windows PowerShell выполнит действие для этого моментального снимка, а не для производственной базы данных. Это снизит влияние ресурсов, оказываемых операцией резервного копирования на производственную среду. С помощью Windows PowerShell администраторы SharePoint смогут более детально контролировать параметры резервного копирования и восстановления.

  2. Улучшение возможностей удаленного взаимодействия: - Значение имеет двоякое значение: во-первых, рабочие столы Windows 7 могут взаимодействовать с сервером с помощью команд PowerShell. В результате специалисты с ноутбуками с Windows 7 могут настраивать свои серверы удаленно, используя сценарии PowerShell. Во-вторых, сценарии входа в систему клиента, написанные на PowerShell, которые находятся на сервере, могут легче работать в Windows 7. Также с помощью PowerShell мы можем легко управлять удаленными машинами, выполнять на них важные задачи и легко применять эти изменения в больших масштабах. Удаленное взаимодействие использует сетевые ресурсы. Поэтому, когда мы будем работать с PowerShell, мы не используем графический интерфейс, и, следовательно, пропускная способность, необходимая для определенной задачи, уменьшается, а проблема перегрузки сети решается.

  3. Последовательность: - Если у вас есть установленная процедура для выполнения задачи, использование Windows Powershell гарантирует, что вы никогда не пропустите ни одного шага, максимально автоматизирует и заставит Powershell запрашивать то, что нельзя автоматизировать.

  4. Поддержка .NET: - Powershell поддерживает платформу .NET. Таким образом, все системные функции могут быть легко добавлены в сценарии PowerShell и, таким образом, могут помочь программисту в разработке сценариев. Таким образом, автоматизировать задачи VDI намного проще, проще и эффективнее.

  5. Меньше ручной работы: - Теперь администратор может удаленно создавать, удалять или изменять настройки виртуальных машин, просто написав сценарии. Ему не нужно идти к отдельному компьютеру и делать работу. Также написанные скрипты приемлемы на всех компьютерах. Так что администратору не нужно переписывать их снова и снова.

  6. Возможность повторного использования: - сценарии, однажды написанные для выполнения конкретной задачи, могут быть сохранены для более поздних целей, а также могут быть объединены с другими сценариями для выполнения различных задач. Таким образом, повторяющиеся задачи можно выполнять намного проще, просто запуская сценарии. Это экономит время и деньги администраторов при настройке машин.

  7. Поддержка конвейерной обработки: - Самая большая победа для PowerShell заключается в том, что вы можете передать все что угодно без анализа текста. Вы можете предоставить выходные данные одной команды в качестве входных данных для нового набора и, таким образом, решить сложные задачи.

Не гарантируется, что Cygwin будет доступен для всех версий Windows. Последнее, что я проверил, было сомнительным на 64-битных машинах. Powershell становится командной оболочкой по умолчанию для Windows и будет предлагать «собственный» доступ ко всем ресурсам на компьютере с Windows.