Подтвердить что ты не робот

Разрешение IP-адреса с имени хоста с помощью PowerShell

Я пытаюсь получить ipaddress из имени хоста, используя Powershell, но я действительно не могу понять, как это сделать.

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

4b9b3361

Ответ 1

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

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

Вы можете перебирать их так:

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

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

Ответ 2

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

$ip = Resolve-DNSName google.com
$ip

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

Ответ 3

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

Решение, которое я использую, следующее:

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

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

Ответ 4

Использовать командлет 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

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

Ответ 6

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

PS C:\> [System.Net.Dns]::GetHostAddresses("MyPC") | foreach { $_.IPAddressToString | findstr "10.3."}

Ответ 7

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

ping hostname

например.

ping dynlab938.meng.auth.gr

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

Ответ 8

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

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

HTH

Ответ 10

Это сработало для моей цели

$ping = ping -4 $env:COMPUTERNAME
$ip = $ping.Item(2)
$ip = $ip.Substring(11,11)

Ответ 11

$computername = $env:computername    
[System.Net.Dns]::GetHostAddresses($computername)  | where {$_.AddressFamily -notlike "InterNetworkV6"} | foreach {echo $_.IPAddressToString }

Ответ 12

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

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

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

}