Когда выбирать разработку модуля PowerShell вместо сценария PowerShell - PullRequest
23 голосов
/ 24 февраля 2011

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

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

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

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

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

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

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

Ответы [ 2 ]

22 голосов
/ 24 февраля 2011

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

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

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

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

13 голосов
/ 25 февраля 2011

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

...