ian*_*ank 7 powershell powershell-2.0
我有一个简单的模块:varExp.psm1
$ var1 = 20
Export-ModuleMember -Variable var1
我将此模块导入PS会话:
PS> Import-Module.\ varExp.psm1
然后
PS> $ var1
20
但在我第二次导入它之后
PS> Import-Module.\ varExp.psm1
PS> $ var1
PS>
$ var1变为null ...
谁知道这里发生了什么?(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'.
Run Code Online (Sandbox Code Playgroud)
用力:
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'.
Run Code Online (Sandbox Code Playgroud)
文档确实说了以下内容:
如果将具有相同名称和相同类型的成员导入会话,则Windows PowerShell将默认使用最后导入的成员. 替换变量和别名,并且无法访问原始文件.
我认为重新导入模块时无法访问originals are not accessible此$var1方法.
| 归档时间: |
|
| 查看次数: |
4008 次 |
| 最近记录: |