Импорт модуля 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).
Переменная. Этот параметр позволяет ограничивать экспортируемые переменные (если используется манифест модуля, см. раздел вариаблестоекспорт).
Псевдоним. Этот параметр позволяет ограничивать экспортируемые псевдонимы (если вы используете манифест модуля, см. раздел алиасестоекспорт).
См. также:
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по