使用PowerShell解析网络上的主机名

时间:2017-01-09 15:51:29

标签: powershell hostname psobject

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来获取连接状态。

我的问题是,当无法解析主机名时,该命令会返回错误。我需要存储" UNKNOWN"在该特定成员的HostName属性中,是否有可用于实现此目的的构造?

1 个答案:

答案 0 :(得分: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