使用PowerShell从主机名解析IP地址

Sun*_*une 39 powershell

我试图使用Powershell从主机名获取ipaddress,但我真的无法弄清楚如何.

有帮助吗?

vcs*_*nes 53

如果您想获取IP地址以便可以使用该地址,则可以执行以下操作:

$ips = [System.Net.Dns]::GetHostAddresses("yourhosthere")
Run Code Online (Sandbox Code Playgroud)

您可以像这样迭代它们:

[System.Net.Dns]::GetHostAddresses("yourhosthere") | foreach {echo $_.IPAddressToString }
Run Code Online (Sandbox Code Playgroud)

服务器可能有多个IP,因此这将返回一个IP数组.

  • $ ip = [System.Net.Dns] :: GetHostAddresses("yourhosthere")[0]将确保只有一个IP地址,如果你确定它解决了 (3认同)

小智 21

这很简单,并获得所有节点.

$ip = Resolve-DNSName google.com
$ip
Run Code Online (Sandbox Code Playgroud)

也尝试输入IP而不是域名,并检查这些结果!

  • 最好的答案在这里! (2认同)

小智 9

使用Resolve-DnsName cmdlet.

Resolve-DnsName computername | FT Name, IPAddress -HideTableHeaders | Out-File -Append c:\filename.txt
Run Code Online (Sandbox Code Playgroud)
PS C:\> Resolve-DnsName stackoverflow.com

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
stackoverflow.com                              A      130   Answer     151.101.65.69
stackoverflow.com                              A      130   Answer     151.101.129.69
stackoverflow.com                              A      130   Answer     151.101.193.69
stackoverflow.com                              A      130   Answer     151.101.1.69

PS C:\> Resolve-DnsName stackoverflow.com | Format-Table Name, IPAddress -HideTableHeaders

stackoverflow.com 151.101.65.69
stackoverflow.com 151.101.1.69
stackoverflow.com 151.101.193.69
stackoverflow.com 151.101.129.69
Run Code Online (Sandbox Code Playgroud)
PS C:\> Resolve-DnsName -Type A google.com

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
google.com                                     A      16    Answer     216.58.193.78


PS C:\> Resolve-DnsName -Type AAAA google.com

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
google.com                                     AAAA   223   Answer     2607:f8b0:400e:c04::64
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可能会回答问题,但提供有关此代码为什么和/或如何回答问题的附加上下文可提高其长期价值。 (2认同)

Rob*_*e P 5

我会使用vcsjones评论的解决方案,但由于在具有多个IP地址的主机名上使用他的解决方案的结果将是一个IP数组,这将导致进一步ping/tracert的问题.

我使用的解决方案如下:

$ping = New-Object System.Net.NetworkInformation.Ping
$ips = $($ping.Send("yourhosthere").Address).IPAddressToString
Run Code Online (Sandbox Code Playgroud)

这将显示单个IP字符串(在$ips变量中),从单个ICMP回复中解析,从而阻止具有多个IP的主机名的IP阵列.