Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

-ErrorAction argument ignored in favor of $ErrorActionPreference

Both, $ErrorActionPreference variable and -ErrorAction cmdlet argument should define behavior for non-terminating errors.

Since variable is global and argument is specific to cmdlet invocation I expect that argument overrides variable. In fact, I can't find a situation, where -ErrorAction does anything at all.

$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

P.S. - I've found this question but it is more focused on related issue rather on priority.

like image 251
Anton Avatar asked Feb 09 '16 11:02

Anton


1 Answers

The -ErrorAction parameter applies to errors generated by the command it is applied to. In the case of Invoke-Expression (iex) that means errors encountered while preparing to invoke the passed expression or errors encountered post processing the results. It doesn't, however, apply to the expression/command itself.

In the OP if you apply -ErrorAction to the Write-Error command you will get the expected results, whether or not you use iex.

like image 152
Χpẘ Avatar answered Oct 14 '22 08:10

Χpẘ