我在PowerShell中有一个非常奇怪的行为。
我使用以下脚本:
HelloWorld.psm1
:
function Write-HelloWorld {
"Hello world"
}
Export-ModuleMember -Function Write-HelloWorld
test2.psm1
:
Import-Module .\HelloWorld.psm1 -Force
test1.ps1
:
Import-Module .\HelloWorld.psm1 -Force
"Is HelloWorld loaded: " + ($null -eq (Get-Module HelloWorld))
Import-Module .\test2.psm1 -Force
"Is HelloWorld loaded: " + ($null -eq (Get-Module HelloWorld))
当我运行test1.ps1
时,结果是:
Is HelloWorld loaded: False Is HelloWorld loaded: True
导入test2.psm1
时将卸载HelloWorld模块。在我看来,这似乎不合逻辑...我知道HelloWorld模块的作用域在test2.psm1
中是本地的,但是我希望他最后不会卸载它,因为它以前已经被导入了。
有什么想法吗?
答案 0 :(得分:1)
来自import-module
msdn。
“此参数[-force]使模块在当前模块的顶部加载或重新加载。”
我猜测是因为HelloWorld在您的test2中,所以它被强加在当前的HelloWorld模块上,并且由于其范围在test2内,因此它表明它确实存在于当前模块中。