ping服务器时如何查看主机名?

时间:2019-05-17 22:43:54

标签: powershell

我对服务器执行ping操作,并且它正在工作(它向我显示可以ping的IP地址),但我希望它显示主机名和ip地址。 我尝试合并[System.Net.Data.Dns]::GetHostName(),但不知道放在哪里。我是使用PowerShell的初学者。我也曾尝试使用-and,但是它不起作用。
我了解如何使用python,但我不知道如何将其转换为PowerShell。

$columnC = "n1-1mon-i3fp04","n1-1mon-i3fp06","n1-1mon-i3fp07","n1-r-1mon-i3fp09","n1-r-1mon-i3fp10","n1-1mon-i3fp08","n1-1mon-i3fp03","n1-1mon-i3fp02","n1-1mon-i3fp111"
$columnC | % $_ {$Device = Resolve-DnsName -Name $_ 
    $Device.[System.Net.Data.Dns]::GetHostName()
  if (test-connection $Device.("IPAddress")) {write-host Device.("IPAddress") "Ping succeeded." -foreground green} 
   else {write-host $Device.("IPAddress") "Ping failed." -foreground red}}

结果显示错误消息,例如语法错误。我希望它同时显示IP地址和主机名。

1 个答案:

答案 0 :(得分:0)

[编辑-西奥(Theo)指出,GetHostByName已被弃用,而赞成GetHostEntry。当我对其进行测试时,它给出了更一致的结果,因此我将它们交换了。]

这将获得ComputerName,HostName和Online状态。然后将它们保存到自定义对象中,将该对象发送到$ Results集合,最后显示集合中的内容。 [咧嘴]

# fake reading in a text file
#    in real life use Get-Content
$ComputerList = @'
BetterNotBeThere
LocalHost
10.0.0.1
127.0.0.1
'@ -split [environment]::NewLine

$Results = foreach ($CL_Item in $ComputerList)
    {
    try
        {
        $HostName = [System.Net.Dns]::GetHostEntry($CL_Item).HostName 
        }
        catch
        {
        $HostName = '__Not Found__'
        }
    [PSCustomObject]@{
        ComputerName = $CL_Item
        HostName = $HostName
        Online = Test-Connection -ComputerName $CL_Item -Count 1 -Quiet
        }
    }

$Results

输出...

ComputerName     HostName      Online
------------     --------      ------
BetterNotBeThere __Not Found__  False
LocalHost        [MySysName]    True
10.0.0.1         __Not Found__  False
127.0.0.1        [MySysName]    True