2

我有一个模块清单文件 [.psd1 文件],通过它我导入嵌套模块[.psm1 文件]。其中一个模块 [.psm1] 文件在全局范围内定义了一个常量变量,如下所示 -

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

当我删除psd1 文件的模块然后再次尝试在 Powershell ISE 的同一会话中执行导入模块时,我收到以下错误 -

+ 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

这意味着在嵌套模块之一中定义的变量尚未卸载。

我必须明确做一个 remove-variable 吗?我认为 remove-module 会卸载所有内容

4

1 回答 1

4

Remove-Module将卸载模块范围内定义的所有内容。只有定义变量的模块才能删除它。卸载模块时不会删除全局变量。此外,在模块范围之外,您不能使用Remove-Variable. 您可以尝试的一件事是在尝试创建变量之前测试变量是否已经存在。

于 2012-04-25T18:00:00.630 回答