2015-03-11 2 views
1

Я просто читал руководство страницу PowerShell Modules и я заметил линию на Import-Module секции:Есть ли причина явно импортировать модуль?

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

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

Поэтому, учитывая, что, почему мы должны постоянно заботиться об использовании Import-Module? Разве это не всегда заботится о нас автоматически? В каком случае мне нужно будет явно выписать Import-Module?

+0

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

+0

@VikasGupta Но он также говорит, что '" Windows PowerShell ищет указанного модуля в каталогах, указанных в PSModulePath переменная ", так ясно powershell уже знает о ее существовании –

+1

Я предполагаю, что именно поэтому VikasGupta специально сказал« какую-то пользовательскую папку », чтобы указать что-то * не * в' PSModulePath'. –

ответ

4

Вы должны использовать Import-Module в следующих случаях:

  • Файл модуля не находится в пути, включенном в $PSModule Пути
  • У вас есть различные модули с тем же именем, но и в разных путях
  • Модуль уже загружен, и вы хотите перезагрузить его после внесения в него изменений. (С -Force)
  • Чтобы импортировать только определенные командлеты, функцию или переменные из этого модуля (с -Cmdlet, -Function и -Variable параметров соответственно)
  • Для предотвращения загрузки командлетов или функции из модуля, которые будут перезаписаны команды с то же самое имя и уже загружены в текущем сеансе (с -NoClobber)
  • Чтобы добавить префикс к существительным командлетов в этом модуле (с -Prefix)
  • Чтобы импортировать модуль с удаленного компьютера (с -PSSession параметр)

Список не является исчерпывающим, но это основные варианты использования командлета Import-Module.

+0

Интересно, как большинство перечисленных выше сценариев являются описаниями для различных параметров 'Импорт-Модуль' :) Неудивительно, что можно было бы также включить ссылку на документацию. –

2

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

  • Чтобы явно указать зависимость сценария от модуля
  • Если $ PSModuleAutoloadingPreference установлен в положение «None», модули должны быть явно загружены. Вы не знаете, отключили ли пользователи это или нет.
+0

Отличная точка. Я столкнулся с этим с кем-то, кто хотел использовать модуль, который я написал, но отключил AutoLoading. Принял меня дольше, чем я хочу признать, чтобы понять это. – StephenP

Смежные вопросы