Как я могу импортировать модуль в powershell, не дожидаясь его завершения?

У меня есть файл psm1, который я хочу загрузить в свой $profile, но он загружается долго. Я бы предпочел загрузить его «в фоновом режиме», где это не мешает немедленным действиям в моем приглашении powershell. Если я запускаю его как задание, я не получаю функции из файла psm1. Любые идеи, как я могу это сделать? Не похоже, что есть какие-либо флаги для «загрузки в фоновом режиме» из Import-Module.


person EGr    schedule 29.04.2015    source источник


Ответы (2)


Задания PowerShell выполняются в собственном сеансе. Я предполагаю, что импорт модуля работает нормально, но не в том сеансе PowerShell, который вам нужен. См. about_Job_Details.

Почему ваш модуль так долго загружается? Может быть, вы можете улучшить это?

person Rob    schedule 29.04.2015
comment
PSM1 загружает кучу других модулей (вероятно, 50-70). Меня не волнует, будут ли они доступны сразу, но я бы хотел, чтобы они были в конечном итоге - person EGr; 29.04.2015
comment
@EGr. Вместо того, чтобы загружать их при запуске в вашем профиле, вы можете просто определить (в своем профиле) легко запоминающуюся вспомогательную функцию, чтобы загружать их, когда вы хотите. Принимайте удар только тогда, когда он вам действительно нужен, а не каждый раз, когда вы запускаете PowerShell. - person Rob; 30.04.2015

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

person Ansgar Wiechers    schedule 29.04.2015
comment
Кажется, это не работает для моего варианта использования. Я добавил сетевой путь, где находится psm1; но, похоже, они не загружаются. - person EGr; 29.04.2015
comment
Это, вероятно, не будет работать с сетевым путем; Я предполагаю, что это должно быть сохранено локально. - person briantist; 29.04.2015
comment
@briantist Возможно. Политика исполнения также может иметь влияние. - person Ansgar Wiechers; 29.04.2015