所以我一直在研究一个脚本,当一个服务失败时本质上发送一封电子邮件。该脚本工作得很好,因为我从PowerShell手动运行它。我收到了电子邮件,并且所有内容都被检出 我再加入到服务: Service Recovery Options在Windows服务失败时运行Powershell脚本。在手动运行时运行,但在服务失败时运行。需要的建议
我告诉它通过链接到可执行文件运行PowerShell的:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
而执行下面的脚本:
-command C:\Users\andreand\Desktop\Sendmail.ps1
如前所述,我在PowerShell中手动尝试了这一点,并且出现错误。如果我在-command之前附加了PowerShell位置,它将起作用。像这样:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command C:\Users\andreand\Desktop\Sendmail.ps1
所以这个工程,如果我手动运行它,但是当服务失败时,什么都不会发生。 我通过执行/taskkill /F /PID pid
来触发失败,并且我可以看到服务已停止。
我错过了什么?我觉得我如此亲密,令人沮丧!
检查系统事件日志以查看您的恢复脚本是否已执行。我还假设脚本作为服务的用户上下文运行,因此您可能需要检查该用户是否可以成功运行该脚本。 –
正确的做到了这一点。出现错误意味着服务意外终止,并且“纠正措施将在0毫秒内完成;运行已配置的恢复程序”。查看事件查看器的Powershell选项卡我可以看到Powershell似乎也开始了。我已经将PowerShell中的执行策略设置为RemoteSigned,所以脚本应该可以运行。 – Andreas
听起来像是试图执行它。你有没有检查它是否有用户上下文问题? –