Такое поведение наблюдается в консоли PowerShell он не генерирует ошибку,когда приложение записывает в stderr,другое поведение наблюдается в powershell ISE и при использовании скажем Job(фоновых заданий),приложение пишет в стандартный поток ошибок и в этом
случае генерируется исключение NativeCommandError.
В прошлой теме ,01MDM, привел решение - $ver_sig
= pgp --verify $a 2>&1 ( Перенаправление потока ошибок в поток вывода,в этом случае генерируется исключение NativeCommandError и мы уже можем работать,как с переменной $ver_sig,так и с $error)
Другой пример использование .Net(исключение не генерируется):
$info = New-Object System.Diagnostics.ProcessStartInfo -Property @{
"FileName" = "pgp"
"Arguments" = "--verbose $a"
"UseShellExecute" = $false
"RedirectStandardError" = $true
}
$pr = New-Object System.Diagnostics.Process
$pr.StartInfo = $info
[void]$pr.Start()
$sig_verif = $pr.StandardError.ReadToEnd()
Еще,как вариант использовать Job:
Start-Job { route -rte}
Get-Job | Receive-Job -Keep
$error