从模块导入的变量在再次导入同一模块后变为$null

2023-11-21

我有一个简单的模块: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(使用前将#替换为@)

从模块导入的变量在再次导入同一模块后变为$null 的相关文章

随机推荐