-ErrorAction参数被忽略,有利于$ ErrorActionPreference

Ant*_*rin 5 error-handling powershell

无论,$ErrorActionPreference变量和-ErrorActioncmdlet的参数应该定义的行为是非终止错误.

由于变量是全局的,并且参数特定于cmdlet调用,因此我希望该参数覆盖变量.事实上,我找不到任何情况,哪里-ErrorAction做任何事情.

$expression = 'Write-Error "non-terminating error"'

# No exception
$ErrorActionPreference = 'Continue'
Invoke-Expression -Command $expression

# Exception
$ErrorActionPreference = 'Stop'
Invoke-Expression -Command $expression

# No exception, why?
$ErrorActionPreference = 'Continue'
Invoke-Expression -Command $expression -ErrorAction Stop

# Exception, why?
$ErrorActionPreference = 'Stop'
Invoke-Expression -Command $expression -ErrorAction Continue
Run Code Online (Sandbox Code Playgroud)

PS - 我发现了这个问题,但它更侧重于相关问题而非优先级问题.

Χpẘ*_*Χpẘ 5

-ErrorAction参数适用于由其应用的命令生成的错误.在这种情况下,Invoke-Expression (iex)这意味着在准备调用传递的表达式时遇到错误或在处理结果后遇到错误.但是,它不适用于表达式/命令本身.

在OP中,如果您申请-ErrorActionWrite-Error命令,您将获得预期的结果,无论您是否使用iex.