Питер Шнайдер полезный ответ правильный, хотя вы обычно используете его, когда вам нужен набор ошибок для большего количества командлетов. Если вы хотите подавить вывод ошибок только для этой одной команды, вы также можете сразу указать для нее параметр -ErrorAction SilentlyContinue
, например:
$currentRules = Get-NetFirewallRule -CimSession computer4 -Direction Inbound -ErrorAction SilentlyContinue
Существует также параметр -ErrorVariable
, с которым вы можете иметь код фиксирует любое исключение внутри собственной переменной и проверяет это позже:
$currentRules = Get-NetFirewallRule -CimSession computer4 -Direction Inbound -ErrorAction SilentlyContinue -ErrorVariable MyErrorVar
# display the error if any
$MyErrorVar
Иногда командлет выводит исключение, даже если для ErrorAction установлено значение «SilentlyContinue». В этих случаях вы также можете использовать блок a try{}..catch{}
. Затем вам нужно установить ErrorAction на 'Stop', чтобы также непрекращающиеся ошибки направлялись в блок catch:
try {
$currentRules = Get-NetFirewallRule -CimSession computer4 -Direction Inbound -ErrorAction Stop
}
catch {
# write custom message on screen or write to log file or..
Write-Warning "Failed to get Firewall rules.."
}