Powershell Remoting:在脚本中加载本地脚本

Powershell Remoting: Load local script inside script

我在远程计算机上启动本地脚本:

Invoke-Command -ComputerName RemoteServer -FilePath C:\myFolder\Script1.ps1

此脚本点源另一个脚本 (Script2),它也位于我的本地计算机上 "C:\myFolder"。这失败了,因为 Script1 试图从远程计算机加载 Script2

有没有办法从我的本地计算机在远程处理会话中的 Script1 中加载 Script2

我不认为这可以按照您概述的方式工作,因为远程计算机上的代码 运行ning 找不到与本地计算机相关的文件。

实现此目的的唯一方法是共享您的脚本并将其包含在 UNC 路径或管理共享中,例如 \localmachine\c$\users\test\script\a.ps1
但是您可能 运行 会遇到身份验证问题(双跳)。

(最简单的)解决方案:首先将所有脚本复制到远程计算机,并确保脚本中使用的路径有效。

[解决方法]

  1. 创建到远程服务器的会话
  2. 使用会话加载脚本2
  3. 使用相同的会话 运行 脚本 1。

例如:- $Session = New-PSSession -ComputerName $Server

Invoke-command -Session $Session -FilePath <script2> 这应该加载函数

Invoke-command -Session $Session -FilePath <script1>

此处 script2 中的函数可供 script1 使用,因此无需参考和点源 script2 .