2017-01-09 83 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解析網絡上的主機名

我的問題是,當一個主機名不能解析,該命令返回一個錯誤。我需要在該特定成員的HostName屬性中存儲「UNKNOWN」,是否有任何構造可以用來實現此目的?

+0

管道內襯8,因爲我的手機連接上192.168.1.8 –

回答

2

在開始定義HostName後放置Try/Catch。

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下主機名 –

+0

@SrihariHumbarwadi代碼應該做的正是你在問什麼。請提供證據。 –

+0

@SrihariHumbarwadi按預期工作。我定義了一個var'$ IP =「192.168.1。$ _」',並用$ IP替換了IP的3次出現 – LotPings