我注意到,在脚本失败的情况下,我的PowerShell脚本开始报告无效的行号,这大大增加了错误诊断的难度。我已将问题固定在以下示例脚本中:
param(
[Parameter(Mandatory=$True)]$foo
)
$ErrorActionPreference = "Stop"
"Line 5"
Systax Error here
"Line 7"
正确报告没有'Mandatory'关键字或没有'$ ErrorActionPreference =“ Stop”'错误行号:
Systax : The term 'Systax' is not recognized ...
At C:\scripts\1.ps1:6 char:1
但是,如果运行提供的示例脚本,则会在PowerShell控制台中收到此错误:
C:\scripts\1.ps1 : The term 'Systax' is not recognized ...
At line:1 char:1
,并且在PowerShell ISE编辑器中运行示例脚本时根本没有行号。 在控制台错误中,行号始终报告为行:1。对于大型脚本,不知道哪一行包含错误是一个真正的问题。
描述的行为看起来像PowerShell中的错误。有谁知道一种解决方法,可以在保留强制性参数和'$ ErrorActionPreference =“ Stop”'的同时获取正确的错误行号?我正在使用的PowerShell版本是5.1。