Powershell 是不是忘记在解析器错误上设置 ERRORLEVEL?

Posted

技术标签:

【中文标题】Powershell 是不是忘记在解析器错误上设置 ERRORLEVEL?【英文标题】:Does Powershell forget to set ERRORLEVEL on parser errors?Powershell 是否忘记在解析器错误上设置 ERRORLEVEL? 【发布时间】:2012-01-21 11:26:53 【问题描述】:

在命令提示符下,试试这个:

powershell aaa

echo ErrorLevel 为 %errorlevel%

Powershell 将失败(出现错误)。您还将看到“ErrorLevel 为 1”。这是因为它将 aaa 作为脚本运行,这会产生未处理的错误,从而设置错误级别。

但是,现在试试这个:

电源外壳'

echo ErrorLevel 为 %errorlevel%

Powershell 将失败(出现错误)。这一次,您还会看到 ErrorLevel 为 0

我意识到这是一个不同的问题。 Powershell 甚至会说这是一个ParserError,这是因为我搞砸了命令行参数。不过,这并不酷

我不清楚它为什么会这样。我猜这是一个疏忽。那里的其他程序忽略了在失败时设置错误级别,但在这种情况下,就好像他们走了一半。它甚至在此处将其设置为 0,而不是根本不设置。

【问题讨论】:

一个小的更正:控制台应用程序无法设置错误级别。这仅适用于内部命令。 Windows Script Host (cscript) 也有类似的问题。据推测,MS 将 Powershell 和 WSH 视为命令 shell 的替代品,而不是客户端。 一种解决方法是让您的 Powershell/WSH 脚本在成功时返回一个特定的非零值; -1 可能是一个不错的选择。 如果需求足够大并且情况允许,我同意 Harry Johnston 提到的“-1”想法将是一个不错的选择。 【参考方案1】:

嗯,我认为我同意解析错误应该将返回码设置为非零。我建议在 Powershell 连接站点上提交此文件。 http://connect.microsoft.com/PowerShell

【讨论】:

我认为我们已经尽可能多地选择了社区大脑。如果有充分的理由,我不介意必须处理“0”返回码,但我认为这种情况的行为并不是故意定义的。

以上是关于Powershell 是不是忘记在解析器错误上设置 ERRORLEVEL?的主要内容,如果未能解决你的问题,请参考以下文章

XML 解析器错误:未定义实体

解析器抛出错误时的 GraphQL 重定向

powershell 评论解析器unfichierorganisé“en lignes”plutôtqu'en“colonnes”

颤振打开 Hive 框会给出错误 - 说找不到框,您是不是忘记调用 Hive openbox()

powershell ParameterSet解析

powershell 各种Windows桌面和资源管理器设置,但PowerShell