Импорт модуля PowerShell

После установки модуля в системе может потребоваться импортировать модуль. Импорт — это процесс, который загружает модуль в активную память, чтобы пользователь мог получить доступ к этому модулю в сеансе PowerShell. В PowerShell 2,0 можно импортировать недавно установленный модуль PowerShell с помощью вызова командлета Import-Module . В PowerShell 3,0 PowerShell может неявно импортировать модуль, когда пользователь вызывает одну из функций или командлетов в модуле. Обратите внимание, что в обеих версиях предполагается, что модуль устанавливается в расположение, где PowerShell может его найти. Дополнительные сведения см. в разделе Установка модуля PowerShell. Манифест модуля можно использовать для ограничения экспортируемых частей модуля, и можно использовать параметры Import-Module вызова, чтобы ограничить импортируемые части.

Импорт Snap-In (PowerShell 1,0)

Модули не существовали в PowerShell 1,0. вместо этого необходимо было зарегистрировать и использовать оснастки. Однако мы не рекомендуем использовать эту технологию на этом этапе, так как модули обычно проще устанавливать и импортировать. дополнительные сведения см. в разделе создание оснастки Windows PowerShell.

Импорт модуля с Import-Module (PowerShell 2,0)

Для импорта модулей в PowerShell 2,0 используется командлет Import-Module с соответствующим именем. при запуске этого командлета Windows PowerShell ищет указанный модуль в каталогах, указанных в PSModulePath переменной. при обнаружении указанного каталога Windows PowerShell выполняет поиск файлов в следующем порядке: файлы манифеста модуля (. psd1), файлы модулей скриптов (. psm1), двоичные файлы модулей (.dll). Дополнительные сведения о добавлении каталогов в поиск см. в разделе about_PSModulePath. В следующем примере кода показано, как импортировать модуль:

Import-Module myModule

Если предположить, что она была размещена в PSModulePath , PowerShell загрузит myModule в активную память. Если она не была расположена по PSModulePath пути, можно по-прежнему указать PowerShell, где его найти:

Import-Module -Name C:\myRandomDirectory\myModule -Verbose

Можно также использовать параметр, -Verbose чтобы определить, что экспортируется из модуля и что импортируется в активную память. Экспорт и импорт ограничивают содержимое, доступное пользователю. разница заключается в том, кто управляет видимостью. По сути, экспорты управляются кодом внутри модуля. В отличие от этого, управление импортом осуществляется с помощью Import-Module вызова. Дополнительные сведения см. в разделе запрещение импортируемых элементов ниже.

Неявный импорт модуля (PowerShell 3,0)

Начиная с Windows PowerShell 3.0, модули импортируются автоматически, когда любой командлет или любая функция из модуля используются в команде. Эта функция работает для любого модуля в каталоге, который включен в значение переменной среды PSModulePath . Если вы не сохраните модуль по действительному пути, вы по-прежнему можете загрузить их с помощью явного параметра Import-Module , описанного выше.

Следующие действия активируют автоматический импорт модуля, также известный как "Автоматическая загрузка модуля".

  • Использование командлета в команде. Например, при вводе Get-ExecutionPolicy импортируется модуль Microsoft. PowerShell. Security, содержащий Get-ExecutionPolicy командлет.

  • Использование командлета Get-Command для получения команды. Например, при вводе Get-Command Get-JobTrigger импортируется модуль PSScheduledJob , содержащий Get-JobTrigger командлет. Get-CommandКоманда, содержащая подстановочные знаки, считается обнаружением и не инициирует импорт модуля.

  • Использование командлета Get-Help для получения справки по командлету. Например, при вводе Get-Help Get-WinEvent импортируется модуль Microsoft. PowerShell. Diagnostics, содержащий Get-WinEvent командлет.

Для поддержки автоматического импорта модулей Get-Command командлет получает все командлеты и функции во всех установленных модулях, даже если модуль не импортируется в сеанс. Дополнительные сведения см. в разделе справки по командлету Get-Command .

Процесс импорта

При импорте модуля для модуля создается новое состояние сеанса, а в памяти создается объект System. Management. Automation. PSModuleInfo . Состояние сеанса создается для каждого импортируемого модуля (включая корневой модуль и все вложенные модули). Элементы, экспортированные из корневого модуля, включая все элементы, экспортированные в корневой модуль любыми вложенными модулями, затем импортируются в состояние сеанса вызывающего.

Метаданные элементов, экспортированных из модуля, имеют свойство ModuleName. Это свойство заполняется именем модуля, в котором они были экспортированы.

Предупреждение

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

По умолчанию командлет Import-Module не возвращает ни одного объекта в конвейер. Однако командлет поддерживает параметр PassThru , который можно использовать для возврата объекта System. Management. Automation. PSModuleInfo для каждого импортируемого модуля. Для отправки выходных данных на узел Пользователи должны запустить командлет Write-Host .

Ограничьте импортируемые элементы

При импорте модуля с помощью командлета Import-Module по умолчанию все экспортированные элементы модуля импортируются в сеанс, включая все команды, экспортированные в модуль вложенным модулем. По умолчанию переменные и псевдонимы не экспортируются. Чтобы ограничить экспортируемые элементы, используйте манифест модуля. Чтобы ограничить импортируемые элементы, используйте следующие параметры Import-Module командлета.

  • Функция: этот параметр разрешает экспорт экспортируемых функций. (Если вы используете манифест модуля, см. раздел FunctionsToExport Key.)

  • `Командлет. Этот параметр позволяет ограничивать экспортируемые командлеты (если вы используете манифест модуля, см. раздел CmdletsToExport).

  • Переменная. Этот параметр позволяет ограничивать экспортируемые переменные (если используется манифест модуля, см. раздел вариаблестоекспорт).

  • Псевдоним. Этот параметр позволяет ограничивать экспортируемые псевдонимы (если вы используете манифест модуля, см. раздел алиасестоекспорт).

См. также:

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