远程执行另一个 powershell 的 Powershell 脚本

远程执行另一个 powershell 的 Powershell 脚本

说来话长,但我需要创建一个 SQL 触发器,远程执行一个脚本,然后该脚本又远程执行另一个脚本(是的,我知道)。我正在使用 PowerShell。

我从最后开始:

Get-Service –Name “service” –ComputerName “Server2” | Set-service –Status Stopped

Get-Service –Name “service” –ComputerName “Server2” | Set-service –Status Running

这很好用。然后,将在触发器上执行的脚本:

Invoke-Command –computername “cluster” –command {d:\adminscripts\RestartServer2Service.ps1}    

(是的,我使用 NLB 群集,它正在读取脚本)
但是,我得到了这个:

找不到服务名称为“service”的任何服务。

有什么想法吗?任何帮助都将不胜感激。谢谢

答案1

这几乎肯定是一个两跳问题。如果我使用 Enter-PSSession 连接到 ServerA,然后运行Get-Service spooler -ComputerName ServerB,我会得到完全相同的“找不到任何具有服务名称的服务”错误。

但是,如果我运行Enter-PSSession ServerA -Authentication CredSSP -Credential (Get-Credential),则 Get-Service 命令可以正常运行。

问题在于第二跳——从第一台远程计算机到第二台(和第三台)远程计算机;对于 PS 远程使用的默认身份验证协议来说,这是一个“太远的桥”。我为这类问题使用的解决方案是 CredSSP。

您可以在以下位置找到有关该问题以及如何启用/使用 CredSSP 的更多详细信息这篇脚本专家文章。

答案2

-command不是 的有效参数Invoke-Command。请-FilePath改用 来触发您的第二个脚本。
此外,请确保您拥有执行这些脚本的正确凭据。

相关内容