这是一个很长的故事,但我需要创build一个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群集,它正在阅读脚本)
但是,我得到这个:
无法find服务名称为“服务”的任何服务。
有什么想法吗? 任何帮助将不胜感激。 谢谢
这几乎肯定是一个两跳的问题。 如果我使用Enter-PSSession连接到ServerA,然后运行Get-Service spooler -ComputerName ServerB ,我得到完全相同的“无法find具有服务名称的任何服务”错误。
但是,如果我运行Enter-PSSession ServerA -Authentication CredSSP -Credential (Get-Credential) ,则Get-Service命令运行良好。
问题是第二跳 – 从第一台远程计算机到第二台(和第三台)。 对于PS远程处理所使用的默认身份validation协议来说,这是一个“太远的桥梁”。 我为这类问题使用的解决scheme是CredSSP。
您可以在本“脚本专家”文章中find有关此问题以及如何启用/使用CredSSP的更多详细信息。
-command不是Invoke-Command的有效参数。 使用-FilePath而不是触发你的第二个脚本。
另外,确保您拥有执行这些脚本的正确凭据。