Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1018 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Powershell] Supprimer un type de record DNS (windows server)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Powershell] Supprimer un type de record DNS (windows server)

n°2466295
renaud072
Posté le 22-03-2024 à 13:27:09  profilanswer
 

Bonjour,
 
Je préviens tout de suite, Powershell n'est pas vraiment ma tasse de thé. Mais je pense que ça ne devrait pas trop être complexe.
 
Je cherche à supprimer des records AAAA dans le DNS de windows server. Si ça marche très bien entrée par entrée, ce n'est pas viable de le faire à la main (active directory avec actualisation des records). Il faudrait que le script me supprime toutes les entrées avec des GUA, toutes 5 min par exemple (j'ajusterais en fonction).
 
Je suppose qu'il faut lister toutes les entrées et filtrer celles qui commencent par le bon préfixe et ensuite passer tout ça dans une boucle pour exécuter la commande entière avec à chaque fois le hostname correspondant ?
 
Du genre :  

Get-DnsServerResourceRecord -Zonename "contoso.com" | Where-Object { $_.RecordData -like "2001*" }
Boucle
Remove-DnsServerResourceRecord -ZoneName "contoso.com" -RRType "AAAA" -Name "$Hostname" -RecordData "$GUA"

Sauf que j'ai déjà un soucis : le filtre ne semble pas fonctionner sur la colonne RecordData (ça me revoie le prompt vide), alors que ça marche avec Hostname ou RecordType par exemple.
 
 
La commande Get-DnsServerResourceRecord retourne ce format :  

HostName                  RecordType Type       Timestamp            TimeToLive      RecordData
--------                  ---------- ----       ---------            ----------      ----------
DESKTOP-1P37QTS           A          1          01/02/2023 23:00:00  00:20:00        192.168.1.49
DESKTOP-43837UG           A          1          05/09/2022 13:00:00  00:20:00        192.168.1.47
DESKTOP-43837UG           AAAA       28         05/09/2022 13:00:00  00:20:00        fd63:13cf:cda4:0:50cc:2f0c:1a47:41c2
DESKTOP-43837UG           AAAA       28         05/09/2022 13:00:00  00:20:00        2001:470:1f13:629:50cc:2f0c:1a47:41c2


 
Dans cet exemple je veux donc virer le record 2001:470[...]
 
Merci
 
 


---------------
MSI B450 Tomahawk MAX - R7 3700X - Ballistix 2x8 + 2x16 Go 3200 Mhz CL16 - RX570 4 Go / Laptop : Lenovo Gaming 3 - R5 5600H - RX Vega 8/GTX 1650 - 32 Go
mood
Publicité
Posté le 22-03-2024 à 13:27:09  profilanswer
 

n°2466383
renaud072
Posté le 23-03-2024 à 21:36:37  profilanswer
 

J'avance.
 
Apparemment la syntaxe n'était pas bonne il fallait ajouter $_.RecordData.IPv6Address
 
Et cette fois ça fonctionne, les GUA sont bien listées. Maintenant faut créer cette boucle... J'essaie de trouver un bout de script déjà fait à adapter, mais pas facile.


---------------
MSI B450 Tomahawk MAX - R7 3700X - Ballistix 2x8 + 2x16 Go 3200 Mhz CL16 - RX570 4 Go / Laptop : Lenovo Gaming 3 - R5 5600H - RX Vega 8/GTX 1650 - 32 Go
n°2466478
renaud072
Posté le 25-03-2024 à 16:16:47  profilanswer
 

Après pas mal de google, je viens de trouver sur stackoverflow quelqu'un qui voulait faire exactement la même chose.
 
Il faut juste que je bypass la confirmation de suppression à chaque entrée et que je crée une tache et ça sera bon (enfin je pense). Ce qui donne dans mon cas :
 

Code :
  1. Get-DnsServerResourceRecord -ZoneName $ZoneName -ComputerName $DNSServer -RRType AAAA -ErrorAction SilentlyContinue |
  2. Where-Object {$_.RecordData.IPv6Address.IPAddressToString -match '2a01' -and `
  3. $_.RecordData.IPv6Address.IPAddressToString -notmatch '^fd00'
  4. } | Remove-DnsServerResourceRecord -ZoneName $ZoneName


---------------
MSI B450 Tomahawk MAX - R7 3700X - Ballistix 2x8 + 2x16 Go 3200 Mhz CL16 - RX570 4 Go / Laptop : Lenovo Gaming 3 - R5 5600H - RX Vega 8/GTX 1650 - 32 Go
n°2466685
renaud072
Posté le 26-03-2024 à 20:48:45  profilanswer
 

Après quelques recherches, j'ai trouvé où était logué les MAJ des records dans l'observateur (Applications and service logs > Microsoft > Windows > DNS-Server > Audit).
 
J'y ai associé le script (event 519) et plus aucune GUA n'est remontée dans le DNS.


---------------
MSI B450 Tomahawk MAX - R7 3700X - Ballistix 2x8 + 2x16 Go 3200 Mhz CL16 - RX570 4 Go / Laptop : Lenovo Gaming 3 - R5 5600H - RX Vega 8/GTX 1650 - 32 Go

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Powershell] Supprimer un type de record DNS (windows server)

 

Sujets relatifs
[PowerShell]Récupérer la disposition clavier active (résolu)[Powershell] Nom sur une boucle foreach ?
[Powershell] Passer un tableau de paramètres plutôt qu'une énumérationsupprimer les lignes dont la cellule ne commence pas par...
Comparaison de chaine en php (type match against sql)[Powershell] Commande Enter-PSSession OK, Invoke-Command NOK
[Powershell] Résultat RegExp incorrect (bug?)Script powershell programmes au démarrage
Calculer une position x et y sur un écran avec un zoom Win? [Resolu]Cree un bouton parcourir pour ajouter un raccourci dossier windows
Plus de sujets relatifs à : [Powershell] Supprimer un type de record DNS (windows server)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR