Ceci est une ancienne révision du document !
−Table des matières
DNS
Par cet exemple du DNS, je souhaite remontrer la différence entre une chaîne de caractères et un objet.
Demande initiale
Supposons que vous ayez à faire énormément de modifications DNS à cause d'un fournisseur qui change de serveur. On vous donne une liste d'enregistrements DNS de type A et il faut les modifier. Comme vous avez les bons réflexes, vous vous lancez dans deux opérations:
- Vérifier les données fournies par le demandeur: la confiance n'exclut jamais le contrôle.
- Fournir le rapport preCheck à votre commanditaire.
Pour l'exemple, partons de fichier initial suivant:
A_Record | Provider |
---|---|
google.ca | p1 |
google.com | p1 |
google.fr | p2 |
google.toto | p3 |
Le piège
Si on décide d'aborder le défi en utilisant powershell, alors bien des gens seraient tenter de partir ainsi en utilisant nslookup:
- dns_v1.ps1
Import-Csv -Path input_dns.csv | foreach { nslookup $_.A_Record 8.8.8.8 }
On obtient des choses horribles.
nslookup : Non-authoritative answer: At line:1 char:1 + nslookup google.ca 8.8.8.8 + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (Non-authoritative answer::String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError Server: dns.google Address: 8.8.8.8 Name: google.ca Addresses: 2607:f8b0:4020:805::2003 172.217.13.131
Cela pose les problèmes suivants:
- Les résultats s'affichent sur l'écran mais c'est très dur d'en extraire les informations.
- nslookup n'est pas une commande Powershell alors on n'obtient pas d'objet adapté à notre requête DNS
- Impossible d'utiliser les résultats pour créer notre fichier de preCheck
Le bon outil
Nous allons donc utiliser la commande DNS PowerShell: Resolve-Dns
<file powershell dns_v1.ps1 > Import-Csv -Path input_dns.csv | foreach {
nslookup $_.A_Record
}