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
。
但是您可能 运行 会遇到身份验证问题(双跳)。
(最简单的)解决方案:首先将所有脚本复制到远程计算机,并确保脚本中使用的路径有效。
[解决方法]
- 创建到远程服务器的会话
- 使用会话加载脚本2
- 使用相同的会话 运行 脚本 1。
例如:- $Session = New-PSSession -ComputerName $Server
Invoke-command -Session $Session -FilePath <script2>
这应该加载函数
Invoke-command -Session $Session -FilePath <script1>
此处 script2
中的函数可供 script1
使用,因此无需参考和点源 script2
.
我在远程计算机上启动本地脚本:
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
。
但是您可能 运行 会遇到身份验证问题(双跳)。
(最简单的)解决方案:首先将所有脚本复制到远程计算机,并确保脚本中使用的路径有效。
[解决方法]
- 创建到远程服务器的会话
- 使用会话加载脚本2
- 使用相同的会话 运行 脚本 1。
例如:- $Session = New-PSSession -ComputerName $Server
Invoke-command -Session $Session -FilePath <script2>
这应该加载函数
Invoke-command -Session $Session -FilePath <script1>
此处 script2
中的函数可供 script1
使用,因此无需参考和点源 script2
.