web-dev-qa-db-ja.com

PowerShellにカスタムモジュールをリロードさせるにはどうすればよいですか?

Powershellv5のクラスを含むモジュール「ActiveDirectory.psm1」を作成しました。 「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';

出力は「何かをする」ままです

私はそれがモジュールをメモリに保存していて、それをリロードしないので、私が行った変更が欠けていると推測しています。モジュールの最新の保存バージョンをロードするには、どのコマンドを実行する必要がありますか?

31
S. Mitchell

wOxxOm が示唆するように、Import-Module ... -Forceを試すか、それが機能しない場合は、Remove-Moduleで明示的に削除して再インポートしてください。

解決したら質問を閉じることができるように答えを作成しました- wOxxOm が答えを作成する場合、これを削除します。

50
DAXaholic

インポートモジュール 'E:\ xxx.ps1' -Force

この問題に遭遇した他の人については、 https://github.com/PowerShell/PowerShell/issues/2505 をご覧ください。

複雑さの初歩的なレベルを超えるモジュールのインポートに関する既知の長年のバグがあるようです(たとえば、更新に失敗する単一のクラスとクラスメソッドを持つモジュールがあります)。

2