Разрешение IP-адреса из имени хоста с помощью PowerShell - PullRequest
38 голосов
/ 29 декабря 2011

Я пытаюсь получить IP-адрес от имени хоста с помощью Powershell, но я действительно не могу понять, как.

Любая помощь?

Ответы [ 12 ]

50 голосов
/ 29 декабря 2011

Если вы хотите получить IP-адрес, чтобы вы могли работать с этим адресом, вы можете сделать это:

$ips = [System.Net.Dns]::GetHostAddresses("yourhosthere")

Вы можете перебирать их следующим образом:

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

Сервер может иметь более одного IP-адреса, поэтому он вернет массив IP-адресов.

20 голосов
/ 24 июня 2015

это красиво и просто и получает все узлы.

$ip = Resolve-DNSName google.com
$ip

также попробуйте ввести ip вместо имени домена и проверить эти результаты тоже!

8 голосов
/ 07 января 2016

Использование Resolve-DnsName командлет.

Resolve-DnsName computername | FT Name, IPAddress -HideTableHeaders | Out-File -Append c:\filename.txt

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

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
5 голосов
/ 25 сентября 2013

Я бы использовал решение, которое прокомментировал vcsjones, но поскольку результатом его решения при использовании имени хоста с несколькими IP-адресами будет массив IP-адресов, это вызовет проблемы с дальнейшим ping / tracert.

Я использую следующее решение:

$ping = New-Object System.Net.NetworkInformation.Ping
$ips = $($ping.Send("yourhosthere").Address).IPAddressToString

Это будет отображать одну строку IP (в переменной $ips), разрешенную из одного ответа ICMP, предотвращая массив IP-адресов для имен хостов с несколькими IP-адресами.

3 голосов
/ 27 июля 2012

Получение адресов IPv4 и IPv6 из имени хоста в powershell поясняется здесь . Кроме того, вы можете получить скрипт, нажав Разрешить IP-адрес от имени хоста в вышеупомянутой статье.

1 голос
/ 04 мая 2017

Команда Test-Connection представляется полезной альтернативой, и она может предоставлять либо объект Win32_PingStatus, либо логическое значение.

Документация: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/test-connection

1 голос
/ 26 августа 2015

Работа с одним вкладышем, если вы хотите получить один результат из коллекции:

$ipAddy = [System.Net.Dns]::GetHostAddresses("yahoo.com")[0].IPAddressToString; 

НТН

1 голос
/ 24 июня 2014

Самый простой способ:

ping hostname

например

ping dynlab938.meng.auth.gr

он напечатает: Pinging dynlab938.meng.auth.gr [155.207.29.38] с 32 байтами данных

1 голос
/ 12 ноября 2013

Если вам известна часть подсети (т. Е. 10.3 в этом примере), тогда будут получены все адреса, которые находятся в данной подсети:

PS C:\> [System.Net.Dns]::GetHostAddresses("MyPC") | foreach { $_.IPAddressToString | findstr "10.3."}
0 голосов
/ 13 января 2017

Вы можете использовать этот код, если у вас есть несколько хостов в текстовом файле

$a = get-content "C:\Users\host.txt"(file path) 

foreach ($i in $a )
    {
$i + "`n" + "==========================";[System.Net.Dns]::GetHostAddresses($i) 

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...