Как заставить PowerShell перезагрузить пользовательский модуль?
Я создал модуль "ActiveDirectory.psm1", который содержит класс в powershellv5. Я импортирую этот модуль в другой файл с именем "test.ps1", а затем вызываю метод из класса.
test.ps1 содержит следующее:
using module '\\ser01\Shared\Scripts\Windows Powershell\modules\ActiveDirectory\ActiveDirectory.psm1'
Set-StrictMode -version Latest;
$AD = [ActiveDirectory]::New('CS');
$AD.SyncGroupMembership($True);
Все работает так, как ожидалось, но когда я вношу изменения в ActiveDirectory.psm1 и сохраняю изменения, они не отражаются немедленно. т.е. если ActiveDirectory.psm1 содержит:
write-verbose 'do something';
Если я изменю это на
write-verbose 'now the script does something else';
выход остается "сделать что-то",
Я предполагаю, что он сохранил модуль в памяти и не перезагружает его, поэтому пропускает изменения, которые я сделал. Какую команду мне нужно выполнить для загрузки последней сохраненной версии модуля?
Ответы
Ответ 1
Как было предложено wOxxOm, попробуйте Import-Module... -Force
или если это не работает, попробуйте явно удалить его с помощью Remove-Module
и повторно импортировать его
Я просто создал ответ, чтобы вопрос можно было закрыть, если он был решен - если wOxxOm создаст ответ, я удалю его.
Ответ 2
Для всех, кто сталкивается с этой проблемой, см. Https://github.com/PowerShell/PowerShell/issues/2505
Похоже, что существует известная давняя ошибка в отношении импорта модулей, которые являются чем-то выше рудиментарного уровня сложности (например, у меня есть модуль с единственным методом класса и класса, который не обновляется).
Ответ 3
Импорт-модуль 'E:\xxx.ps1' -Force