Powershell:Remove Module不会卸载嵌套模块中定义的全局[常量]变量

时间:2012-04-25 17:04:34

标签: powershell powershell-v2.0

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

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

当我执行psd1文件的删除模块时然后再次尝试在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

表示其中一个嵌套模块中定义的变量尚未卸载。

我必须明确做一个删除变量吗?我以为remove-module会卸载所有内容

1 个答案:

答案 0 :(得分:3)

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