Общие сведения о модулях Windows PowerShell

модуль — это набор связанных функциональных возможностей Windows PowerShell, сгруппированных в качестве удобного блока (обычно сохраняется в одном каталоге). Определяя набор связанных файлов скриптов, сборок и связанных ресурсов в качестве модуля, вы можете ссылаться, загружать, сохранять и совместно использовать код гораздо проще, чем в противном случае.

основной целью модуля является разрешение модульной (ie, повторного использования и абстракции) кода Windows PowerShell. например, самый простой способ создания модуля — просто сохранить Windows PowerShell сценарий в виде файла psm1. Это позволяет управлять (IE, сделать общедоступными или частными) функции и переменные, содержащиеся в скрипте. Сохранение скрипта в виде файла. PSM1 также позволяет управлять областью определенных переменных. Наконец, можно также использовать командлеты Install-Module для Организации, установки и использования скриптов в качестве стандартных блоков для более крупных решений.

Компоненты и типы модулей

Модуль состоит из четырех основных компонентов:

  1. Какой-либо файл кода — обычно сценарий PowerShell или управляемая сборка командлета.

  2. Все остальное, что может потребоваться для файла кода, например дополнительные сборки, файлы справки или сценарии.

  3. Файл манифеста, описывающий указанные выше файлы, а также хранит метаданные, такие как сведения об авторе и управлении версиями.

  4. Каталог, содержащий все приведенное выше содержимое и расположенный там, где PowerShell может его найти.

    Примечание

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

Модули скриптов

как предполагает имя, модуль скрипта — это файл ( .psm1 ), который содержит любой допустимый код Windows PowerShell. Разработчики и администраторы скриптов могут использовать этот тип модуля для создания модулей, члены которых включают функции, переменные и многое другое. в сердце модуль скрипта — это просто Windows PowerShell сценарий с другим расширением, который позволяет администраторам использовать на нем функции импорта, экспорта и управления.

Кроме того, файл манифеста можно использовать для включения в модуль других ресурсов, таких как файлы данных, другие зависимые модули или скрипты среды выполнения. Файлы манифеста также полезны для отслеживания метаданных, таких как сведения о создании и управлении версиями.

Наконец, модуль скрипта, как и любой другой модуль, который не создается динамически, необходимо сохранить в папке, которую PowerShell может найти. Обычно это происходит в пути модуля PowerShell. но при необходимости можно явно описать, где установлен модуль. Дополнительные сведения см. в разделе как написать модуль скрипта PowerShell.

Двоичные модули

двоичный модуль — это платформа .NET Frameworkая сборка ( .dll ), которая содержит скомпилированный код, например C#. Разработчики командлетов могут использовать этот тип модуля для совместного использования командлетов, поставщиков и многого другого. (Существующие оснастки также могут использоваться в качестве двоичных модулей.) по сравнению с модулем скрипта двоичный модуль позволяет создавать более быстрые командлеты или использовать функции (например, многопоточность), которые не так просты в написании программных сценариев Windows PowerShell.

Как и в случае с модулями скриптов, можно включить файл манифеста для описания дополнительных ресурсов, используемых модулем, а также для отслеживания метаданных модуля. Аналогичным образом, вы, вероятно, должны установить двоичный модуль в папку где-то в пути модуля PowerShell. Дополнительные сведения см. в разделе как написать двоичный модуль PowerShell.

Модули манифеста

Модуль манифеста — это модуль, который использует файл манифеста для описания всех его компонентов, но не имеет какой-либо основной сборки или скрипта. (Формально модуль манифеста оставляет ModuleToProcess RootModule элемент или в манифесте пустым.) Тем не менее можно по-прежнему использовать другие функции модуля, такие как возможность загружать зависимые сборки или автоматически запускать определенные предварительно обрабатываемые скрипты. Кроме того, модуль манифеста можно использовать как удобный способ упаковки ресурсов, которые будут использоваться другими модулями, например вложенные модули, сборки, типы или форматы. Дополнительные сведения см. в статье Создание манифеста модуля PowerShell.

Динамические модули

Динамический модуль — это модуль, который не загружается из файла или не сохраняется в файле. Вместо этого они создаются динамически скриптом с помощью командлета New-Module . Этот тип модуля позволяет скрипту создавать модуль по запросу, который не требуется загружать или сохранять в постоянное хранилище. По своей природе динамический модуль предназначен для кратковременного существования, поэтому он недоступен для Get-Module командлета. Аналогично, они обычно не требуют манифестов модулей и не требуют постоянных папок для хранения связанных сборок.

Манифесты модулей

Манифест модуля — это .psd1 файл, содержащий хэш-таблицу. Ключи и значения в хэш-таблице выполняют следующие действия.

  • Опишите содержимое и атрибуты модуля.

  • Определите необходимые компоненты.

  • Определите, как обрабатываются компоненты.

    Манифесты не являются необходимыми элементами модулей. Модули могут ссылаться на файлы скриптов ( .ps1 ), файлы модулей скриптов ( .psm1 ), файлы манифеста ( .psd1 ), файлы форматирования и типы ( .ps1xml ), сборки командлетов и поставщиков ( .dll ), файлы ресурсов, файлы справки, файлы локализации, а также любые другие типы файлов или ресурсов, Объединенные в состав модуля. Для международного сценария в папке Module также содержится набор файлов каталога сообщений. При добавлении файла манифеста в папку Module можно сослаться на несколько файлов как единое целое, обратившись к манифесту.

    Сам манифест описывает следующие категории данных:

  • Метаданные о модуле, такие как номер версии модуля, автор и описание.

  • необходимые компоненты для импорта модуля, такие как версия Windows PowerShell, версия среды clr и необходимые модули.

  • Обработка директив, таких как скрипты, форматы и типы для обработки.

  • Ограничения для элементов экспортируемого модуля, например псевдонимы, функции, переменные и командлеты для экспорта.

    Дополнительные сведения см. в статье Создание манифеста модуля PowerShell.

Хранение и установка модуля

После создания скрипта, двоичного файла или модуля манифеста можно сохранить работу в расположении, к которому другие пользователи могут получить доступ. например, модуль можно хранить в системной папке, в которой Windows PowerShell установлен, или хранить в папке пользователя.

В целом, вы можете определить, где следует установить модуль, используя один из путей, хранящихся в $ENV:PSModulePath переменной. Использование одного из этих путей означает, что PowerShell может автоматически находить и загружать модуль, когда пользователь вызывает его в своем коде. Если вы храните модуль в другом месте, можно явно разрешить PowerShell узнавать, передав расположение модуля в качестве параметра при вызове метода Install-Module .

Независимо от этого путь к папке называется основой модуля (ModuleBase), а имя скрипта, двоичного файла или модуля манифеста должно совпадать с именем папки модуля со следующими исключениями:

  • Динамические модули, создаваемые New-Module командлетом, могут называться с помощью Name параметра командлета.

  • Модули, импортированные из объектов сборки с помощью Import-Module -Assembly команды, именуются в соответствии со следующим синтаксисом: "dynamic_code_module_" + assembly.GetName() .

    Дополнительные сведения см. в разделе Установка модуля PowerShell и about_PSModulePath.

Командлеты и переменные модуля

следующие командлеты и переменные предоставляются Windows PowerShell для создания модулей и управления ими.

Командлет New-Module . Этот командлет создает новый динамический модуль, который существует только в памяти. Модуль создается из блока сценария, и его экспортированные члены, такие как функции и переменные, немедленно становятся доступными в сеансе и остаются доступными до закрытия сеанса.

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

Командлет Import-Module . Этот командлет добавляет один или несколько модулей в текущий сеанс.

Командлет Get-Module . Этот командлет извлекает сведения о модулях, которые были или могут быть импортированы в текущий сеанс.

Командлет Export-ModuleMember . Этот командлет задает элементы модуля (например, командлеты, функции, переменные и псевдонимы), которые экспортируются из файла модуля скрипта (. PSM1) или из динамического модуля, созданного с помощью New-Module командлета.

Командлет Remove-Module . Этот командлет удаляет модули из текущего сеанса.

Командлет Test-ModuleManifest . Этот командлет проверяет, что манифест модуля точно описывает компоненты модуля, убедившись, что файлы, перечисленные в файле манифеста модуля (. PSD1), фактически существуют в указанных путях.

$PSScriptRoot эта переменная содержит каталог, из которого выполняется модуль скрипта. Он позволяет сценариям использовать путь к модулю для доступа к другим ресурсам.

$env:P смодулепас эта переменная среды содержит список каталогов, в которых хранятся Windows PowerShell модули. Windows PowerShell использует значение этой переменной при автоматическом импорте модулей и обновлении разделов справки для модулей.

См. также:

Написание модуля Windows PowerShell