在远程服务器上启动服务失败

时间:2018-01-30 13:40:34

标签: powershell windows-services remote-desktop powershell-remoting

尝试远程启动服务时遇到奇怪的行为。

服务器A上的

我正在运行此行(它是名为RunRemoteService.ps1的较大脚本的一部分):

Invoke-Command -ComputerName $B_comp -ScriptBlock {Powershell.exe -File "run_service.ps1"} -Credential $cred

脚本run_service.ps1包含以下行(它也是更大脚本的一部分):

$my_service_name.Start()

现在这里有一个奇怪的事情,如果我在打开远程连接(mstsc)到服务器RunRemoteService.ps1时运行B,那么脚本工作正常,B上所需的服务是真的开始了。

但是,如果我在与服务器RunRemoteService.ps1没有mstsc连接时运行B,则脚本失败(服务无法启动)。

为什么会发生这种情况?如何解决?

编辑:我更多地探讨了这个问题,发现只有在尝试运行我的特定服务时才会发生这种情况。 这意味着我的服务必须从已经登录的用户的会话中运行(这就是为什么如果我以前在服务器上工作它的原因)。 所以我想我的新问题是 - 有没有办法从PowerShell登录到远程机器?

感谢。

2 个答案:

答案 0 :(得分:0)

如果您不能使用@EBGreen建议的凭证授权。尝试使用psexec.exe来调用脚本而不是PowerShell远程处理。

psexec \\server "cmd /c powershell.exe -f c:\script.ps1"

从sysinternals.com获取psexec

答案 1 :(得分:0)

好的,所以我的问题已经得到了改进和修改,所以这个解决方案是针对最新的问题 - 如果没有用户登录到远程计算机,我无法远程启动我的服务。

解决方案是一种解决方法:

  1. 我在远程服务器上配置了自动登录(使用sysinternals自动登录工具)。

  2. 我在测试开始时使用了Restart-Computer cmdlet。

  3. 现在重启完成并恢复ps-session后,用户自动登录到服务器,我可以远程启动服务。

  4. 感谢。