Вы можете использовать $ LASTEXITCODE , чтобы получить код выхода из внешней программы или логическое значение $? , чтобы проверить, была ли последняя операция успешной или неудачной. Запустите Get-Help about_Automatic_Variables -ShowWindow из консоли PowerShell, чтобы увидеть больше деталей.
Возможно, вы захотите проверить команду & (call) в качестве альтернативы Invoke-Expression при запуске внешних программ. Запустите Get-Help about_Automatic_Variables -ShowWindow из консоли PowerShell для получения подробной информации.
Также помните, что вы можете просто вызывать внешнюю программу, не используя одну из команд выше. Смотрите пример ниже:
param($Hostname="127.0.0.1", $Tries=1, $Wait=1000)
$output = ping.exe $Hostname -n $Tries -w $Wait # captures anything written to stdout
$output|? {$_ -match 'Request timed out'}|Write-Warning
$LASTEXITCODE # returns the exit code from ping.exe
Вы можете скопировать его в файл test.ps1 и запустить его из окна консоли PowerShell (например,. \ Test.ps1 8.8.8.8), чтобы посмотреть, как он работает.