коды исключений перехватчика powershell для запроса wmi
Я проверяю сервисы с использованием WMI на группе компьютеров, но с некоторыми я получаю ошибки. Как мне зафиксировать эти ошибки, чтобы я мог предпринять соответствующие действия?
Запрос
$listOfServices = Get-WmiObject -credential $wsCred -ComputerName $comp.name -Query "Select name, state from win32_Service"
Если я получу следующее, я хочу попробовать альтернативные учетные данные
Get-WmiObject : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Если я получуGet-WmiObject : User credentials cannot be used for local connections
Я хочу удалить учетные данные
Если я получуGet-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
или любая другая ошибка, я просто хочу сообщить об ошибке.
Я знаю, что должен использовать блок try catch, но я не знаю, как указать catch для каждого исключения.
Вот то, что я до сих пор -
try {
$listOfServices = Get-WmiObject -credential $wsCred -ComputerName $comp.name -Query "Select name, state from win32_Service" -ErrorAction Stop
}
catch {
$e = $_.Exception
switch ($e.ErrorCode) {
0x80070005 {
$listOfServices = Get-WmiObject -credential $svrCred -ComputerName $comp.name -Query "Select name, state from win32_Service" -ErrorAction Stop
}
default {
write "Error code: $e.ErrorCode"
write "Error details: $e.ErrorDetails"
write "Full error: $e"
}
}
}