如何从另一个模块中的函数全局导入 Powershell cmdlet?

Jun*_*ang 5 powershell

我在从另一个模块中的函数全局导入 cmdlet 时遇到问题。

这是这种情况。假设我试图调用Test-Method一个 dll。当我运行时Import-Module <dll path>,一切正常,我可以Test-Method毫无问题地调用。

然后我把命令放到一个函数中,以简化使用。现在我有类似的东西:

function Import-Cmdlets
{
    Import-Module "<dll path>" -Scope Global -Force
}
Run Code Online (Sandbox Code Playgroud)

现在在 Powershell 中我调用Import-Cmdlets,然后我可以Test-Method毫无问题地调用。

然而,当我把函数到PSM1文件,并导入模块上的PSM1文件,我找不到Test-Method

现在我有一个mymodule.psm1包含以下内容的文件:

function Import-Cmdlets
{
    Import-Module "<dll path>" -Scope Global -Force
}
Run Code Online (Sandbox Code Playgroud)

然后在 PowerShell 中我运行:

Import-Module mymodule.psm1 -Force
Import-Cmdlets
Run Code Online (Sandbox Code Playgroud)

现在我找不到Test-Method更多了。我运行时会显示 dll Get-Module,我可以Test-Method从 ExportedCommands 中看到。但我无法访问它。

这只发生在 dll 导入中。我试过用psm1文件替换dll路径,没有遇到这个问题。

什么是解决此问题的好方法或解决方案?

小智 1

我遇到了同样的问题并添加参数 -Scope Global 修复了它

将您的线路更改为Import-Module <path to your module> **-Scope Global**