2017-01-09 4 views
0
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, чтобы получить статус соединения.Устранение имен хостов в сети с использованием PowerShell

Проблема заключается в том, что, когда имя хоста не может быть разрешено, команда возвращает ошибку. Мне нужно сохранить «UNKNOWN» в свойстве HostName для этого конкретного члена, есть ли какая-нибудь конструкция, которую я могу использовать для достижения этой цели?

+0

труба подкладка 8, потому что мой мобильный подключен на 192.168.1.8 –

ответ

2

Положите 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 
+0

Я попробовал это, он держит печать UNKNOWN в конце таблицы, я хочу, чтобы хранить UNKNOWN под HostName –

+0

@SrihariHumbarwadi Код должен делать именно что вы просите. Просьба представить доказательства. –

+0

@SrihariHumbarwadi работает здесь, как и ожидалось. Я определил var '$ IP = "192.168.1. $ _" И заменил 3 вхождения IP на $ IP – LotPings

 Смежные вопросы

  • Нет связанных вопросов^_^