User Tools

Site Tools


en:powershell:dns

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
en:powershell:dns [2021/04/05 13:52] – created lonclegren:powershell:dns [2021/04/12 20:26] (current) lonclegr
Line 1: Line 1:
-FIXME **This page is not fully translated, yet. Please help completing the translation.**\\ //(remove this paragraph once the translation is finished)// 
- 
 ====== DNS ====== ====== DNS ======
  
-Here I want to show how huge is the difference between a string and an object.+Here I want to show how huge the difference is between a string and an object.
  
 ===== Initial request ===== ===== Initial request =====
  
 +Let's suppose you have to perform a lot of DNS modifications because a service provider of yours has changed IP server. Since you are wise, you are going to follow the rule: Trust but verify.
  
 +  - Check input: maybe some mistakes in the request
 +  - Provide a preCheck report to the requester
  
-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: +This is the example we are going to deal with:
- +
-  - 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:+
  
 <csv> <csv>
Line 25: Line 20:
 </csv> </csv>
  
-===== Le piège =====+===== Trap to avoid =====
  
-Si on décide d'aborder le défi en utilisant powershell, alors bien des gens seraient tenter de partir ainsi en utilisant nslookup:+Sysadmins are used to execute nslookup command to query DNS servers. Let's put it into a powershell script.
  
 <file powershell dns_v1.ps1 > <file powershell dns_v1.ps1 >
Line 35: Line 30:
 </file> </file>
  
-On obtient des choses horribles.+Output is a nightmare.
  
 <code> <code>
Line 53: Line 48:
 </code> </code>
  
-Cela pose les problèmes suivants: +Here is an issues list:
-  - 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 =====+  - Quite difficult to parse results 
 +  - nslookup is not a built-in Powershell command, as a result we don't get answer as kind of DNS object 
 +  - Really hard to create preCheck output file
  
-Nous allons donc utiliser la commande DNS PowerShell: Resolve-Dns+===== the right tool for the right problem ===== 
 + 
 +Recent versions of PowerShell includes the perfect command for this request: Resolve-Dns.
  
 <file powershell dns_v2.ps1 > <file powershell dns_v2.ps1 >
Line 68: Line 64:
 </file> </file>
  
-Cette fois-ci on obtient quelque chose de beaucoup plus sympa avec des objets que nous allons pouvoir manipuler.+Now script outputs something we can easily manage and export.
  
 <code> <code>
Line 84: Line 80:
 </code> </code>
  
-On obtient toujours une exception pour l'enregistrement qui n'existe pas, mais avec un bloc "try" et une redirection de sortie d'erreurs, on va s'en sortir. +We still raise an exception from google.toto record. We are going to use a try-catch block to handle this.
  
 <file powershell dns_v3.ps1> <file powershell dns_v3.ps1>
Line 100: Line 95:
 </file> </file>
  
-On obtient des objets que nous allons pouvoir manipuler et exporter.+When the DNS A record exists, we get an object from Microsoft.DnsClient.Commands.DnsRecord_A class. Otherwise we catch the exception properly. 
  
 <code> <code>
Line 115: Line 111:
 </code> </code>
  
-===== Script final =====+===== Final script =====
  
-On se rappelle ce que l'on souhaiteprendre tous les enregistrements DNS A demandés et s'assurer qu'il n'y a pas d'erreurs dans la demande du client.+Reminderwe want to verify if all DNS A records provided by the requester are correct.
  
 <file powershell dns_final.ps1> <file powershell dns_final.ps1>
Line 145: Line 141:
 </file> </file>
  
-Le résultat permet de mettre en valeur un domaine qui n'a pas d'entrée connue. C'est ce que l'on souhaitait découvrir.+From the result we can easily identify names without DNS recordsMission accomplished :-)
  
 <csv> <csv>
en/powershell/dns.1617645176.txt.gz · Last modified: 2021/04/05 13:52 by lonclegr