Разрешение имен хостов в сети с помощью PowerShell

8 | foreach {
    New-Object PSObject -Prop @{
        Address ="192.168.1.$_";
        Status = (Test-Connection "192.168.1.$_" -Quiet -Count 1);
        try {HostName=[System.Net.Dns]::GetHostEntry("192.168.1.$_").HostName} catch {HostName="UNKNOWN"}
    }
} | Format-Table -Auto

Я хочу разрешить имена хостов используя [System.Net.Dns]::GetHostEntry(), я использую Test-Connection чтобы получить статус подключения.

Моя проблема в том, что когда имя хоста не может быть разрешено, команда возвращает ошибку. Мне нужно хранить "НЕИЗВЕСТНО" в HostName свойство для этого конкретного члена, есть ли конструкция, которую я могу использовать для достижения этой цели?

1 ответ

Поставьте Try/Catch после того, как вы начнете определять HostName.

8 | foreach {
    new-object psobject -prop @{
        Address = "192.168.1.$_"
        Status = Test-connection "192.168.1.$_" -quiet -count 1
        HostName = Try {[System.Net.Dns]::gethostentry("192.168.1.$_").HostName} Catch {"UNKNOWN"}
    }
} | format-table -auto
Другие вопросы по тегам