我正在尝试使用 powershell 启动我的服务,但目前它失败了。我不知道它为什么会失败,但这不是重点。尝试启动主机时,我没有得到正确的退出代码,因此我的自动部署会静默失败。
我想做的是:
$cmd = "$folder" + "\MyService.exe"
try
{
& $cmd stop
& $cmd uninstall
& $cmd install
& $cmd start
}
catch
{
Write-Host "Error: Update of service failed"
exit 1
}
该start
命令失败并显示以下消息:
Topshelf.Hosts.StartHost Error: 0 : The service failed to start., System.InvalidOperationException: Cannot start service MyService on computer '.'. ---> System.ComponentModel.Win32Exception: The service cannot be started, either because it is disabled or because it has no enabled devices associated with it
--- End of inner exception stack trace ---
at System.ServiceProcess.ServiceController.Start(String[] args)
at System.ServiceProcess.ServiceController.Start()
at Topshelf.Runtime.Windows.WindowsHostEnvironment.StartService(String serviceName)
at Topshelf.Hosts.StartHost.Run()
而且我从来没有进入我的 powershell 脚本的 catch 语句。
更新:
请注意,我问的是如何获取 catch 语句的方法,而不是实际异常的解决方案。我已经解决了实际的异常,但是如果它失败了,我希望将来有更好的反馈,那就是希望执行 catch 语句,而不是在出错的情况下。