Общие сведения о модуле Windows PowerShell
Модуль — это набор связанных функций Windows PowerShell, сгруппированных в виде удобной единицы (обычно сохраненной в одном каталоге). Определив набор связанных файлов скриптов, сборок и связанных ресурсов в качестве модуля, вы можете ссылаться, загружать, сохранять и совместно использовать код гораздо проще, чем в противном случае.
Основной целью модуля является разрешение модульизации (т. е. повторного использования и абстракции) кода Windows PowerShell. Например, самый простой способ создания модуля — просто сохранить скрипт Windows PowerShell в виде файла .psm1
. Это позволяет управлять (т. е. сделать общедоступными или закрытыми) функции и переменные, содержащиеся в скрипте. Сохранение скрипта в виде файла .psm1
также позволяет управлять областью определенных переменных. Наконец, можно также использовать командлеты, такие как install-Module для упорядочивания, установки и использования скрипта в качестве стандартных блоков для более крупных решений.
Компоненты и типы модулей
Модуль состоит из четырех основных компонентов:
Какой-либо файл кода — обычно скрипт PowerShell или сборка управляемого командлета.
Все остальное, что может потребоваться приведенный выше файл кода, например дополнительные сборки, файлы справки или скрипты.
Файл манифеста, описывающий указанные выше файлы, а также сохраняет метаданные, такие как сведения о авторе и управление версиями.
Каталог, содержащий все приведенное выше содержимое и расположенный, где PowerShell может найти его достаточно.
Примечание.
Ни один из этих компонентов, сами по себе, на самом деле не необходимы. Например, модуль может быть только скриптом, хранящимся в файле
.psm1
. Вы также можете использовать модуль, который не является файлом манифеста, который используется главным образом для организационных целей. Вы также можете написать скрипт, который динамически создает модуль, и, как это, на самом деле, не требуется каталог для хранения ничего в. В следующих разделах описываются типы модулей, которые можно получить, смешивая и сопоставляя различные возможные части модуля вместе.
Модули скриптов
Как подразумевает имя, модуль скрипта — это файл (.psm1
), содержащий любой допустимый код Windows PowerShell. Разработчики скриптов и администраторы могут использовать этот тип модуля для создания модулей, члены которых включают функции, переменные и многое другое. В самом сердце модуль скрипта — это просто скрипт Windows PowerShell с другим расширением, который позволяет администраторам использовать функции импорта, экспорта и управления в нем.
Кроме того, можно использовать файл манифеста для включения других ресурсов в модуль, таких как файлы данных, другие зависимые модули или скрипты среды выполнения. Файлы манифестов также полезны для отслеживания метаданных, таких как создание и управление версиями.
Наконец, модуль скрипта, как и любой другой модуль, который не создается динамически, необходимо сохранить в папке, которую PowerShell может разумно обнаружить. Обычно это находится на пути модуля PowerShell; но при необходимости можно явно описать, где установлен модуль. Дополнительные сведения см. в статье How to Write a PowerShell Script Module.
Двоичные модули
двоичного модуля — это сборка .NET Framework (.dll
), содержащая скомпилированный код, например C#.
Разработчики командлетов могут использовать этот тип модуля для совместного использования командлетов, поставщиков и т. д. (Существующие оснастки также можно использовать в качестве двоичных модулей.) По сравнению с модулем скрипта двоичный модуль позволяет создавать командлеты, которые быстрее или используют функции (например, многопоточность), которые не так просто кодируются в сценариях Windows PowerShell.
Как и в модулях скриптов, можно включить файл манифеста, чтобы описать дополнительные ресурсы, используемые модулем, и отслеживать метаданные о модуле. Аналогичным образом вы, вероятно, должны установить двоичный модуль в папку где-то по пути модуля PowerShell. Дополнительные сведения см. в статье "Как Как записать двоичный модуль PowerShell".
Модули манифеста
Модуль манифеста — это модуль, использующий файл манифеста для описания всех его компонентов, но не имеет какой-либо основной сборки или скрипта. (Формально модуль манифеста оставляет элемент ModuleToProcess
или RootModule
манифеста пустым.) Однако вы по-прежнему можете использовать другие функции модуля, например возможность загружать зависимые сборки или автоматически запускать определенные скрипты предварительной обработки. Вы также можете использовать модуль манифеста как удобный способ упаковки ресурсов, которые будут использовать другие модули, такие как вложенные модули, сборки, типы или форматы. Дополнительные сведения см. в статье Создание манифеста модуля PowerShell.
Динамические модули
динамический модуль — это модуль, который не загружается или не сохраняется в файл. Вместо этого они создаются динамически с помощью скрипта командлета New-Module. Этот тип модуля позволяет скрипту создавать модуль по требованию, который не требуется загружать или сохранять в постоянное хранилище. По своей природе динамический модуль предназначен для кратковременных и поэтому не может быть доступен командлетом Get-Module
. Аналогичным образом, они обычно не нуждаются в манифестах модулей, а также не требуют постоянных папок для хранения связанных сборок.
Манифесты модулей
Манифест модуля — это файл .psd1
, содержащий хэш-таблицу. Ключи и значения в хэш-таблице выполняют следующие действия:
Описание содержимого и атрибутов модуля.
Определите предварительные требования.
Определите способ обработки компонентов.
Манифесты не требуются для модуля. Модули могут ссылаться на файлы скриптов (
.ps1
), файлы модулей скриптов (.psm1
), файлы манифеста (.psd1
), файлы форматирования и типа (.ps1xml
), сборки командлетов и поставщиков (.dll
), файлы ресурсов, файлы справки, файлы локализации или любой другой тип файла или ресурса, который входит в состав модуля. Для международного скрипта папка модуля также содержит набор файлов каталога сообщений. При добавлении файла манифеста в папку модуля можно ссылаться на несколько файлов в виде одной единицы, ссылаясь на манифест.Сам манифест описывает следующие категории информации:
Метаданные о модуле, например номер версии модуля, автор и описание.
Необходимые условия для импорта модуля, например версии 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:PSModulePath Эта переменная среды содержит список каталогов, в которых хранятся модули Windows PowerShell. Windows PowerShell использует значение этой переменной при автоматическом импорте модулей и обновлении разделов справки для модулей.
См. также
PowerShell