【问题标题】:Strange behavior of Import-ModuleImport-Module 的奇怪行为
【发布时间】:2018-12-10 18:13:36
【问题描述】:

我在 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时,结果是:

是否加载了 HelloWorld:False 是否加载了 HelloWorld:True

test2.psm1 被导入时,HelloWorld 模块被卸载。这对我来说似乎不合逻辑......我知道 HelloWorld 模块的范围是test2.psm1 的本地,但我希望他最后不会卸载它,因为它之前已经导入了。

有什么想法吗?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    来自import-modulemsdn。

    “此参数 [-force] 导致在当前模块之上加载或重新加载模块。”

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/import-module?view=powershell-6

    我猜由于 HelloWorld 在您的 test2 中,因此它被强制覆盖当前的 HelloWorld 模块,并且由于它的范围在 test2 内,因此表明它确实存在于当前模块中。

    【讨论】:

    • 是的,你是对的,它在没有 -Force 的情况下也能正常工作!谢谢;)
    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    相关资源
    最近更新 更多