När du tar bort AD-datorobjekt finns DNS-poster kvar i Windows Server DNS. Det bästa sättet är att ställa in DNS-åldring och rensning. Men om dessa poster är statiska kommer de inte att tas bort automatiskt. Och vad händer om du inte kan vänta och vill ta bort de inaktuella posterna omedelbart? Det är då PowerShell kommer till undsättning. I den här artikeln kommer du att lära dig hur du rensar upp gamla DNS-poster med PowerShell.
Vad är DNS-poster
DNS-resursposter innehåller informationen som en zon har om resurserna (som värdar) som zonen innehåller. En typisk resurspost består av följande:
- Namn (värd) för resursposten.
- Information om hur länge resursposten kan finnas kvar i cachen.
- Resursposttyp, till exempel en värdresurspost (A).
- Data som är specifik för posttypen, till exempel värdens IPv4-adress.
Du kan lägga till resursposter direkt, eller så kan de läggas till automatiskt när Windows-baserade, DHCP-aktiverade klienter ansluter till ett nätverk med dynamisk uppdatering.
Följande typer av resursposttyper är välkända:
- Värdposter (A, AAAA).
- Alias (CNAME) poster
- Postväxlarposter (MX).
- Pointer (PTR) poster
- SRV-poster
- Namnserverposter (NS).
- Text (TXT) post
- Delegationsnamn (DNAME) post
- Start av auktoritet (SOA) post
Kontrollera gamla poster i DNS Manager
StartDNS Manageroch leta efter den gamla DNS-posten som innehållervärdnamn,FQDN, ochIP-adress.
I vårt exempel vill vi hitta den domänkontrollant som vi degraderat:
- Värdnamn:DC01-2019
- FQDN:DC01-2019.exoip.local.
- IP-adress:192.168.1.51
Högerklicka på en zon och klickaEgenskaper.

KlickNamnservrar.
Den gamla servern visas i listan, vilket är NS-posten (Name Server).

Värd (A)-posten finns.

SRV-posten (Service Location) finns.

Om vi går igenom fler zoner kommer vi att hitta alla inaktuella DNS-poster för just det AD-datorobjektet.
Att gå igenom alla zoner och ta bort de gamla DNS-posterna tar tid. Det kan också hända att du inte ser en post, och den stannar där.
Istället för att gå igenom alla DNS-serverzoner och ta bort DNS-posterna för AD-datorobjektet manuellt, kommer vi att automatisera processen med PowerShell och rensa upp alla inaktuella poster.
SLÄKT:Konfigurera DNS-rensning för att rensa upp gamla DNS-poster i AD
Notera:Du bör ställa in DNS-åldring och rensning i Active Directory, så att det tar bort de inaktuella dynamiska DNS-posterna. Även om detta kommer att rensa upp de inaktuella posterna i DNS, kommer det inte att ta bort gamla statiska DNS-poster, och det är vad PowerShell-skriptet nedan kommer att göra.
Ta bort inaktuella DNS-poster med PowerShell-skript
Ett utmärkt sätt att ta bort gamla DNS-poster är med Remove-DNSRecords.ps1 PowerShell-skriptet som använder följande tre cmdlets:
- Get-DnsServerZonecmdlet för att hämta de primära zonerna.
- Get-DnsServerResourceRecordcmdlet för att hitta alla resursposter som är lika med FQDN, värdnamn och IP-adress.
- Remove-DnsServerResourceRecordför att ta bort de hämtade DNS-posterna.
Steg 1. Ladda ner Remove-DNSRecords PowerShell-skript
Ladda ner och placera Remove-DNSRecords.ps1 PowerShell-skriptet på domänkontrollantenC:skriptmapp. Om du inte har enmanusmapp, skapa en.
Se till att filen är avblockerad för att förhindra fel när du kör skriptet. Läs mer i artikeln Inte digitalt signerat fel vid körning av PowerShell-skript.
Ett annat alternativ är att kopiera och klistra in koden nedan i Anteckningar. Ge det namnetRemove-DNSRecords.ps1och placera den iC:skriptmapp.
<#
.SYNOPSIS
Remove-DNSRecords.ps1
.DESCRIPTION
Clean up stale DNS records with PowerShell.
.LINK
www.alitajran.com/clean-up-dns-records-powershell/
.NOTES
Written by: ALI TAJRAN
Website: www.alitajran.com
LinkedIn: linkedin.com/in/alitajran
.CHANGELOG
V1.00, 01/20/2024 - Initial version
#>
$ServerFQDN = "dc01-2019.exoip.local." #Keep the dot (.) at the end
$ServerHostname = "dc01-2019"
$IPAddress = "192.168.1.51"
$Zones = Get-DnsServerZone | Where-Object { $_.ZoneType -eq "Primary" } |
Select-Object -ExpandProperty ZoneName
foreach ($Zone in $Zones) {
Get-DnsServerResourceRecord -ZoneName $Zone | Where-Object {
$_.RecordData.IPv4Address -eq $IPAddress -or
$_.RecordData.NameServer -eq $ServerFQDN -or
$_.RecordData.DomainName -eq $ServerFQDN -or
$_.RecordData.HostnameAlias -eq $ServerFQDN -or
$_.RecordData.MailExchange -eq $ServerFQDN -or
$_.HostName -eq $ServerHostname
} | Remove-DnsServerResourceRecord -ZoneName $Zone -Force -WhatIf
}- Rad 20, 21, 22:Ändra värdena för ServerFQDN, ServerHostname och IPAddress till AD-datorobjektet från vilket du vill ta bort de inaktuella DNS-posterna.
Steg 2. Kör Remove-DNSRecords PowerShell-skript
Starta Windows PowerShell och körRemove-DNSRecords.ps1manus.
Notera:Ingenting kommer att hända med miljön när du kör skriptet eftersom parametern -WhatIf läggs till i skriptet. När du har identifierat och bekräftat de inaktuella posterna tar du bort parametern -WhatIf och kör skriptet igen.
C:scripts.Remove-DNSRecords.ps1Så här ser det ut i vårt exempel.
What if: Removing DNS resource record @ of type NS from zone _msdcs.exoip.local on DC01-2022 server.
What if: Removing DNS resource record @ of type NS from zone autodiscover.exoip.com on DC01-2022 server.
What if: Removing DNS resource record dc01-2019 of type A from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record @ of type NS from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record DomainDnsZones of type A from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record _ldap._tcp.Default-First-Site-Name._sites.DomainDnsZones of type SRV from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record _ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones of type SRV from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record _ldap._tcp.DomainDnsZones of type SRV from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record ForestDnsZones of type A from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record _ldap._tcp.ForestDnsZones of type SRV from zone exoip.local on DC01-2022 server.
What if: Removing DNS resource record @ of type NS from zone TrustAnchors on DC01-2022 server.När du har verifierat de gamla DNS-posterna för det specifika AD-datorobjektet tar du bort-Vad omparameter och kör skriptet igen.
C:scripts.Remove-DNSRecords.ps1Alla DNS-poster har raderats för det specifika AD-datorobjektet från Windows Server DNS.
Det är det!
Slutsats
Du lärde dig hur du rensar upp gamla DNS-poster med PowerShell. Nästa gång du vill ta bort en DNS-post från DNS, använd PowerShell-skriptet för att radera DNS-posterna och spara tid.
Gillade du den här artikeln? Du kanske också gillar Hur man inaktiverar åtkomst för att installera Office-tillägg. Glöm inte att följa oss och dela den här artikeln.













