NServicebus服務時,所以,我有一個PowerShell腳本安裝一個NServiceBus服務作爲Windows服務。捕獲錯誤安裝在PowerShell中
Invoke-Expression "$fullNsbHostPath $arguments"
爲了完整起見,我都試過Invoke-Expression
和Start-Process
:
Start-Process -Wait -NoNewWindow -FilePath $fullNsbHostPath -ArgumentList $arguments -RedirectStandardOutput $tempFileName -ErrorVariable $errvar
它會調用安裝就好了,這在某些情況下報告異常例如:
Failed to execute installers: System.Data.SqlClient.SqlException
(0x80131904): A connection was successfully established with the
server, but then an error occurred during the login process.
(provider: Shared Memory Provider, error: 0 - No process is on the
other end of the pipe.) ---> System.ComponentModel.Win32Exception
(0x80004005): No process is on the other end of the pipe ... Error
....
Number:233,State:0,Class:20
我對此感到滿意。我想預計的例外。然而,這個過程本身並沒有表明它失敗了。的確,Powershell腳本本身成功完成。
我可以解析爲一個錯誤代碼或者一些「例外」文本輸出文本,但這似乎可悲的不盡人意。
我不認爲這是一個PowerShell的問題。當我通過命令行運行它並檢查%errorlevel%
時,我得到0
。此外,其他幾個執行相同操作的示例聯機腳本也會忽略任何錯誤傳播。
有什麼建議嗎?
NServiceBus.Host.exe包含捕獲所有的異常,然後異常詳細信息寫入控制檯(標準輸出,而不是標準錯誤),不設置退出代碼,這麼短解析所有輸出的代碼,我想你」重新卡住了。 –