Когда нужно выбрать разработку модуля PowerShell поверх PowerShell Script

Я собираюсь написать сценарий PowerShell для администраторов Windows, чтобы помочь им в определенных задачах, связанных с развертыванием веб-приложения.

Есть ли причина, по которой я должен одобрять или исключать разработку PowerShell Module (.psm1) вместо сценария PowerShell (.ps1)?

Аргументы по разработке сценария

  • Простота: я считаю, что использование сценария для администраторов Windows немного проще и проще, так как он не требует установки модуля (но я могу ошибаться, поскольку я не администратор Windows!).
  • более быстрое развитие: разработка модуля требует более тщательного программирования воздействия внутренних методов. Это похоже на разработку API, поэтому он должен быть более строгим.

Аргументы по разработке модуля:

  • повторное использование: это первое, что приходит на ум: если администратор хочет интегрировать наш скрипт в свой собственный скрипт, ему может быть проще повторно использовать модуль, отображающий один (или несколько) командлет вместо вызова нашего скрипта?
  • ...

Если вы знаете общий вариант использования PS-скриптов или PS-модулей или технические ограничения для каждого выбора, это может помочь.

Ответ 1

Чтобы понять, какие модули могут вам помочь, прочтите следующее: http://msdn.microsoft.com/en-us/library/dd878310(v=vs.85).aspx

В ореховой оболочке

Модули Windows PowerShell позволяют разбивать, упорядочивать и абстрагировать ваш код Windows PowerShell на автономные, повторно используемые единицы. С помощью этих многоразовых модулей администраторы, разработчики script и разработчики командлетов могут легко поделиться своими модулями напрямую с другими. Разработчики script могут также переупаковывать сторонние модули для создания пользовательских приложений на основе script. Модули, аналогичные модулям на других языках сценариев, таких как Perl и Python, позволяют создавать готовые к выпуску скриптовые решения, которые используют повторно используемые, распространяемые компоненты, с дополнительным преимуществом, позволяющим вам переупаковывать и абстрагировать несколько компонентов для создания пользовательских решений.

Если ваш script уже имеет функции и не просто написан для выполнения одной задачи, вы можете просто переименовать его в .PSM1, чтобы преобразовать его в модуль. Если вы не используете функции, конечно, нет выбора, кроме как пойти на .ps1. В таком случае каждый .ps1 будет использоваться для выполнения одной задачи. Я всегда предпочитаю модули при совместном использовании сценариев, которые я пишу другим.

Ответ 2

Мне нравятся модули для возможности "спрятать" функции/переменные и экспортировать только те, которые я хочу.