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?的主要内容,如果未能解决你的问题,请参考以下文章
powershell 评论解析器unfichierorganisé“en lignes”plutôtqu'en“colonnes”