因此,我有一个 powershell 脚本来将 NServiceBus 服务安装为 Windows 服务。
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
. 此外,其他几个执行相同操作的示例在线脚本也省略了任何错误传播。
有什么建议么?