【问题标题】:PowerShell Import-Module over remote connection通过远程连接的 PowerShell 导入模块
【发布时间】:2015-07-31 15:47:40
【问题描述】:

问题:当我使用一个脚本远程运行另一个依赖于一个模块的脚本时,该模块没有被导入。


我有 3 个相互交互的脚本。一个Controller 脚本、Body 脚本和Functions 模块。

Controller 正在处理远程计算机的身份验证并使用Invoke-Command 在远程计算机上执行body 脚本。

body 依赖于 functions 模块。


如果我直接在远程计算机上运行“body”脚本,模块会正确导入并且脚本完成;但是,如果我使用 `controller` 脚本远程运行 `body` 脚​​本,则永远不会导入该模块。如果我将模块中的函数嵌套在正文脚本中(看起来很乱)并远程运行,脚本就会完成,所以我知道导入模块有问题。我也尝试将模块导入到 `controller` 脚本中。它可以正确导入,但是当 `body` 脚​​本执行时,它仍然找不到模块中的函数。 (我猜它会导入本地 Powershell ... shell) 我尝试使用 `-verbose` 标记运行导入模块以查看它是否正在导入,并且它在所有实例中都有效,除非使用 `controller` 远程运行 `body`。

编辑:我几乎可以肯定这是因为它试图在远程计算机上查找模块路径,并且该路径引用了主机上的一个位置。除了使用从远程计算机返回主机的invoke-command 来导入模块之外,我不确定如何完成此操作。

【问题讨论】:

  • 您是否尝试过进入 ISE 并对其进行调试,如果您进入并检查每个服务器是否存在功能。
  • @Luke 我有。我发现问题是 import-module 命令正在服务器上运行,并且提供的路径引用了主机上的路径。因此脚本无法在服务器上提供的路径中找到模块,因为它不存在。在这一点上,我正在尝试找出包含模块的最佳方式。
  • 没有看到你的脚本我认为你应该能够在远程机器上启动PSsession 并从那里运行它。
  • @Luke 你是说我应该在远程机器上启动一个 PSSession 以连接回主机?这与使用调用命令从服务器连接回主机本质上是一样的吗?
  • 不,相反,使用会话将主机连接到远程,它是相似的,但它会保持会话打开,允许您通过一个会话运行多个脚本。

标签: powershell remote-server powershell-5.0


【解决方案1】:

为什么不在代码中使用网络路径导入模块?如果你知道模块的位置,你可以提供它的路径,即使它在远程机器上

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    相关资源
    最近更新 更多