Effectuer une requête DNS (nslookup) en PowerShell avec [System.Net.DNS]
En Powershell, comme en VBA ou dans d’autres langages, on peut s’appuyer sur l’espace de nom System.NET, ses classes et ses méthodes.
Pour faire un nslookup en Powershell, nous allons donc nous appuyer sur la classe Dns.
Actuellement, la version du Framework .NET est la 4.8, et on peut trouver toutes les class ici .
En Powershell, pour faire un nslookup (Name Server lookup) de nom Dns ou d’une adresse IP, on peut donc utiliser les méthodes suivante :
-
- [System.Net.DNS]::Resolve(« IPouNomDns »)
- [System.Net.DNS]::GetHostByAddress(« IP »)
- [System.Net.DNS]::GetHostByName(« NomDns »)
Pour faire un Nslookup avec la méthode [System.Net.DNS]::Resolve(« IPouNomDns »), il faut indiquer au choix l’adresse IP ou le nom DNS.
[System.Net.DNS]::Resolve(« 8.8.8.8 »)
ou
[System.Net.DNS]::Resolve(« google-public-dns-a.google.com »)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
. PS E:\> [System.Net.DNS]::Resolve("8.8.8.8") HostName Aliases AddressList -------- ------- ----------- dns.google {} {8.8.8.8} OU PS E:\> [System.Net.DNS]::Resolve("google-public-dns-a.google.com") HostName Aliases AddressList -------- ------- ----------- google-public-dns-a.google.com {} {8.8.8.8} . |
Pour récupérer uniquement la valeur de l’adresse IP, on peut utiliser la commande :
[System.Net.DNS]::Resolve(« google-public-dns-a.google.com »).AddressList | Where-Object { $_.AddressFamily -eq ‘interNetwork’ } | Select-Object -ExpandProperty IPAddressToString
1 2 3 4 5 6 7 |
. PS E:\> [System.Net.DNS]::Resolve("8.8.8.8").AddressList | Where-Object { $_.AddressFamily -eq 'interNetwork' } | Select-Object -ExpandProperty IPAddressToString 8.8.8.8 . |
Pour faire un Nslookup avec la méthode [System.Net.DNS]::GetHostByAddress(« IP »), il faut indiquer l’adresse IP :
[System.Net.DNS]::GetHostByAddress(« 8.8.8.8 »)
1 2 3 4 5 6 7 8 9 10 |
. PS E:\Powershell\AlerteOneView> [System.Net.DNS]::GetHostByAddress("8.8.8.8") HostName Aliases AddressList -------- ------- ----------- dns.google {} {8.8.8.8} . |
Pour faire un Nslookup avec la méthode [System.Net.DNS]::GetHostByName(« NomDns »), il faut indiquer le nom DNS :
[System.Net.DNS]::GetHostByName(« dns.google »)
1 2 3 4 5 6 7 8 9 10 |
. PS E:\> [System.Net.DNS]::GetHostByName("dns.google") HostName Aliases AddressList -------- ------- ----------- dns.google {} {8.8.8.8, 8.8.4.4} . |
A lire :
Pingback: Powershell - Nslookup avec Resolve-DnsName - Mon Post-It