我有一个运行外部EXE文件的脚本.当该EXE文件失败时(将errorlevel设置为1),PowerShell脚本将失败.
我正在运行curl.exe并得到这个:
- CategoryInfo:NotSpecified:(%Total%... Time Current:String)[],RemoteException + FullyQualifiedErrorId:NativeCommandError
如何忽略/捕获外部EXE文件的失败并继续我的脚本?
Kei*_*ill 19
这与EXE返回的退出代码没有任何关系.EXE写入stderr时会生成错误,但仅在ISE内或远程处理或使用后台作业时生成错误.
写入到标准错误的EXE并不会产生与常规PowerShell命令提示符的错误.我不确定为什么会这样.
Col*_*nic 16
实际上,应用程序运行良好 - PowerShell在报告错误时出错.
当应用程序打印到标准错误时,PowerShell有时会断定应用程序已失败.这实际上是PowerShell开发人员做出的设计决策.恕我直言,这是一个错误,因为许多可靠的应用程序(如卷曲)在正常操作过程中将有用信息打印到标准错误.结果是PowerShell只能与其他PowerShell脚本一起使用,并且不能依赖它与其他应用程序进行互操作.
此线程中的其他读者难以重现行为,因为PowerShell不一致地实现它.是否发生NativeCommandError取决于重定向标准错误的方式(因此,错误发生在vanilla PowerShell ISE中,而不是vanilla PowerShell).
无论您对第一段中的设计决策有什么看法,不一致的实现都是针对某些PowerShell错误 - 请参阅PowerShell中的$ LastExitCode = 0但$?= False.将stderr重定向到stdout会产生NativeCommandError.
| 归档时间: |
|
| 查看次数: |
13111 次 |
| 最近记录: |