通过远程连接的 PowerShell 导入模块
PowerShell Import-Module over remote connection
问题:当我使用一个脚本运行另一个依赖模块的脚本远程时,模块是没有进口。
我有 3 个相互交互的脚本。 Controller
脚本、Body
脚本和 Functions
模块。
Controller
正在处理对远程计算机的身份验证并使用 Invoke-Command
在远程计算机上执行 body
脚本。
body
依赖于functions
模块。
如果我直接在远程计算机上 运行 `body` 脚本,模块会正确导入并且脚本完成;但是,如果我使用 `controller` 脚本远程 运行 `body` 脚本,则永远不会导入该模块。如果我将模块中的函数嵌套在正文脚本中(看起来很乱)并远程 运行 ,脚本就会完成,所以我知道这是导入模块的问题。我还尝试将模块导入到“控制器”脚本中。它导入正确,但是当 body 脚本执行时它仍然找不到模块中的函数。 (我猜它会导入本地 Powershell ... shell)
我已经尝试 运行ning 带有 `-verbose` 标签的导入模块来查看它是否正在导入,并且它在所有情况下都有效,除了当 `controller` 用于远程 运行 `body` 时。
编辑: 我几乎可以肯定这是因为它试图在远程计算机上查找模块路径,而该路径引用了主机上的某个位置。除了使用从远程计算机返回到主机的 invoke-command
来导入模块外,我不确定如何完成此操作。
为什么不在代码中使用网络路径导入模块?如果您知道模块的位置,您可以提供它的路径,即使它在远程机器上
问题:当我使用一个脚本运行另一个依赖模块的脚本远程时,模块是没有进口。
我有 3 个相互交互的脚本。 Controller
脚本、Body
脚本和 Functions
模块。
Controller
正在处理对远程计算机的身份验证并使用 Invoke-Command
在远程计算机上执行 body
脚本。
body
依赖于functions
模块。
编辑: 我几乎可以肯定这是因为它试图在远程计算机上查找模块路径,而该路径引用了主机上的某个位置。除了使用从远程计算机返回到主机的 invoke-command
来导入模块外,我不确定如何完成此操作。
为什么不在代码中使用网络路径导入模块?如果您知道模块的位置,您可以提供它的路径,即使它在远程机器上