2

ネストされたモジュール[.psm1 ファイル]をインポートするためのモジュール マニフェスト ファイル [.psd1 ファイル] があります。モジュールの 1 つ [.psm1] ファイルは、次のようにグローバル スコープで定数変数を定義します -

set-variable -name DataDirectory -option Constant -value "DataSources" -scope global -description "Data Directory"

psd1 ファイルのremove-moduleを実行してから、Powershell ISE の同じセッションで再度import-moduleを実行しようとすると、次のエラーが発生します -

+ set-variable <<<<  -name DataDirectory -option Constant -value "DataSources" -scope global -description "Data Directory"
    + CategoryInfo          : WriteError: (DataDirectory:String) [Set-Variable], SessionStateUnauthorizedAccessException
    + FullyQualifiedErrorId : VariableNotWritable,Microsoft.PowerShell.Commands.SetVariableCommand

これは、ネストされたモジュールの 1 つで定義された変数がアンロードされていないことを意味します。

remove-variable を明示的に行う必要がありますか? remove-module はすべてをアンロードすると思いました

4

1 に答える 1

4

Remove-Moduleモジュールスコープで定義されたすべてをアンロードします。変数を定義したモジュールのみがそれを削除できます。モジュールがアンロードされるとき、グローバル変数は削除されません。さらに、モジュール スコープの外では、定数変数を で削除することはできませんRemove-Variable。試すことができることの 1 つは、変数を作成する前に、変数が既に存在するかどうかをテストすることです。

于 2012-04-25T18:00:00.630 に答える