I'm having trouble figuring out how to both echo to the standard error stream and redirect the error stream of an executable.
I have come from a Bourne shell and Korn shell background, of which I would use;
# Write to stderr
echo "Error Message!" >&2
# Redirect stderr to file
/do/error 2>/tmp/err.msg
Use Write-Error
to write to stderr. To redirect stderr to file use:
Write-Error "oops" 2> /temp/err.msg
or
exe_that_writes_to_stderr.exe bogus_arg 2> /temp/err.msg
Note that PowerShell writes errors as error records. If you want to avoid the verbose output of the error records, you could write out the error info yourself like so:
PS> Write-Error "oops" -ev ev 2>$null
PS> $ev[0].exception
oops
-EV
is short (an alias) for -ErrorVariable
. Any errors will be stored in the variable named by the argument to this parameter. PowerShell will still report the error to the console unless we redirect the error to $null
.