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.