我对服务器执行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地址和主机名。
答案 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