gpt4 book ai didi

powershell - 命令失败时,如何让 topshelf 返回错误代码?

转载 作者:行者123 更新时间:2023-12-02 00:09:59 25 4
gpt4 key购买 nike

我正在尝试使用 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 语句,而在发生错误时不会执行。

最佳答案

PowerShell 中的

try/catch 不适用于 exe。myservice.exe 调用后,您需要检查自动变量 $LastExitCode。尝试这样的事情:

$out = & $cmd start
if ($LastExitCode -ne 0) # if exe returns 0 on success, if not change the condition accordingly
{
"ERROR: $out"
return # to exit script or do something else.
}

关于powershell - 命令失败时,如何让 topshelf 返回错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15897173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com