Как заставить 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