我有一个简单的模块:varExp.psm1
$var1 = 20
导出模块成员-变量 var1
我将此模块导入到 PS 会话中:
PS> 导入模块 .\varExp.psm1
then
PS> $var1
20
但是当我第二次导入它之后
PS> 导入模块 .\varExp.psm1
PS> $var1
PS>
$var1 变为空...
有人知道这是怎么回事吗? (PS2.0)
编辑:有解决方法:强制重新加载Import-Module .\varExp.psm1 -Force
,并测试模块是否之前已加载:if(-not (Get-Module varExp)) { Import-Module .\varExp.psm1 }
。但我希望在简单的情况下得到 $null 值背后的一些原因。
我不知道到底发生了什么,但是当你重新导入模块时,你必须使用-Force
.
当你包括-verbose
你可以看到两者之间的区别:
PS> import-module .\test -Verbose
VERBOSE: Importing variable 'var1'.
用力:
PS> import-module .\test -Verbose -Force
VERBOSE: Removing the imported "var1" variable.
VERBOSE: Loading module from path 'C:\test\test.psm1'.
VERBOSE: Importing variable 'var1'.
该文档确实说了以下内容:
如果您将具有相同名称和相同类型的成员导入到您的
会话中,Windows PowerShell 默认使用最后导入的成员。变量和别名被替换,原来的不被替换
无障碍。
我觉得originals are not accessible
意思是在这$var1
重新导入模块时将无法访问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)