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
'programing' 카테고리의 다른 글
jQuery를 사용하여 쿠키를 30분 안에 만료하는 방법은 무엇입니까? (0) | 2023.08.26 |
---|---|
Jquery에서 Ajax 요청을 최적화하는 방법은 무엇입니까? (0) | 2023.08.26 |
텍스트 보기에서 왼쪽 그리기 가능하도록 프로그래밍 방식으로 설정 (0) | 2023.08.26 |
전체 레이아웃 보기 새로 고침을 강제로 적용하는 방법은 무엇입니까? (0) | 2023.08.26 |
Swift를 사용한 하위 클래스 UIA 애플리케이션 (0) | 2023.08.26 |