All versions
Here is yet another approach that you can use to detect errors emitted by console applications:
$ErrorActionPreference = 'Continue' $result = net.exe user UserDoesNotExist 2>&1 # $? is $false when something went wrong if ($? -eq $false) { # read last error: $errMsg = $result.Exception.Message -join ',' Write-Host "Something went wrong: $errMsg" } else { Write-Host 'All is fine.' }
Note the use of $ErrorActionPreference: when it is set to ‘Stop’, the error would be converted into a .NET exception. The default setting for $ErrorActionPreference is ‘Continue’. With this setting, the script can receive the error in $err.
The built-in variable $? Returns $false if the last call fails. In this case, the code returns an error message (or could do other things, like adding information to a log file).