3
我想用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
命令失敗,出現以下的messge:
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語句。
UPDATE:
請注意,我詢問如何獲取方法的catch語句,而不是解決實際的異常。我已經解決了實際的異常,但是如果它失敗了,我希望在未來有更好的反饋,那就是要執行catch語句,而不是在出錯的情況下執行。
我也試過,以及它沒有工作。我不認爲最後的退出代碼設置正確。 – 2013-04-09 10:32:49
但是'$ LastExitCode'在錯誤之後得到了一些值? – 2013-04-09 10:34:26
'$ LastExitCode'的值被設置爲0. – 2013-04-09 10:49:04