programing

PowerShell을 사용하여 호스트 이름에서 IP 주소 확인

topblog 2023. 8. 26. 10:16
반응형

PowerShell을 사용하여 호스트 이름에서 IP 주소 확인

Powershell을 사용하여 호스트 이름에서 ipaddress를 가져오려고 하는데 방법을 알 수가 없습니다.

도와드릴까요?

다음과 같이 GetHostAddresses를 사용하여 모든 IP 주소를 가져올 수 있습니다.

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

다음과 같이 반복할 수 있습니다.

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

서버는 둘 이상의 IP를 가질 수 있으므로 IP 배열을 반환합니다.

이것은 멋지고 단순하며 모든 노드를 가져옵니다.

$ip = Resolve-DNSName google.com
$ip

또한 도메인 이름 대신 IP를 입력해보고 그 결과도 확인해보세요!

Resolve-DnsName cmdlet을 사용합니다.

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

vcsjons의 솔루션을 사용할 수 있지만 주소 배열이 필요하고 하나만 필요하기 때문에 추가 ping/tracert 명령에 문제가 발생할 수 있습니다.

적절한 주소를 선택하려면 ICMP 에코 요청을 하고 에코 응답의 속성을 읽습니다.

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

문서에서 언급한 내용은 다음과 같습니다.

오버로드에 의해 반환된 데이터는 악의적인 원격 컴퓨터에서 발생할 수 있습니다.이 주소를 사용하여 원격 컴퓨터에 연결하지 마십시오.DNS를 사용하여 연결할 시스템의 IP 주소를 결정합니다.

집합에서 단일 결과를 원하는 경우 하나의 라이너 작업:

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

hth

서브넷의 일부(예: 이 예에서는 10.3)를 알고 있으면 지정된 서브넷에 있는 모든 주소를 가져옵니다.

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

이것은 나의 목적에 잘 맞았습니다.

$ping = ping -4 $env:COMPUTERNAME
$ip = $ping.Item(2)
$ip = $ip.Substring(11,11)
$computername = $env:computername    
[System.Net.Dns]::GetHostAddresses($computername)  | where {$_.AddressFamily -notlike "InterNetworkV6"} | foreach {echo $_.IPAddressToString }

Test-Connection 명령은 유용한 대안으로 보이며 Win32_PingStatus 개체 또는 부울 값을 제공할 수 있습니다.

설명서: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.management/test-connection

텍스트 파일에 호스트가 여러 개 있는 경우 이 코드를 사용할 수 있습니다.

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

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

}

가장 간단한 방법:

ping hostname

예.

ping dynlab938.meng.auth.gr

32바이트의 데이터가 포함된 Ping dynlab938.meng.auth.gr [155.165.29.38]이 인쇄됩니다.

$address = '호스트 이름'을 사용해 보십시오.

Resolve-DnsName $address | 선택-객체 이름, IP 주소 | 내보내기-csv "C:\온도\완료NSLookup.csv" -append - 유형 없음

언급URL : https://stackoverflow.com/questions/8660865/resolving-ip-address-from-hostname-with-powershell

반응형