Der DNS-Cache in Windows-Systemen wird üblicherweise mit dem Befehl
ipconfig /flushdns
geleert. Dieser Befehl erfordert Administratorrechte, was in Windows Server-Umgebungen eine Herausforderung darstellt, wenn Standardbenutzer ihren DNS-Cache während der Fehlerbehebung oder nach Netzwerkänderungen aktualisieren müssen.
Um diese Einschränkung zu umgehen, erstellen wir ein automatisiertes System, das aus folgenden Komponenten besteht:
- Einmalige Einrichtung durch den Administrator. Ein Benutzer mit Administratorrechten erstellt und führt ein PowerShell-Skript aus, das kontinuierlich im Hintergrund mit Administratorrechten läuft. Sein einziger Zweck ist es, einen bestimmten Ordner auf Änderungen zu überwachen. Wenn Änderungen erkannt werden, wird automatisch der DNS-Löschbefehl ausgeführt.
- Standardbenutzer-Betrieb. Um den DNS-Cache zu leeren, erstellt ein Standardbenutzer eine leere Datei oder einen Ordner in dem vom Skript überwachten Ordner. Die Datei oder der Ordner verschwindet nach etwa 10 Sekunden, was anzeigt, dass der Befehl
ipconfig /flushdns
ausgeführt wurde.
Dieses System gewährleistet die Sicherheit, indem die Administratorrechte im PowerShell-Skript verbleiben, während Standardbenutzer nur Dateioperationen in einem bestimmten Ordner ausführen, für den ihnen Zugriffsrechte gewährt wurden.
1.Installationsschritte durch den Administrator
Die folgenden Schritte müssen von einem Benutzer mit Administratorrechten durchgeführt werden. In diesem Beispiel verwenden wir das C:-Laufwerk, aber Sie können den Ordnerpfad nach Bedarf anpassen.
1.1.Erstellen des überwachten Ordners
Erstellen Sie einen Ordner namens
flushdns, der zum Auslösen der DNS-Cache-Löschung verwendet wird. Gewähren Sie Zugriff auf den Ordner für Standardbenutzer, typischerweise in der Gruppe "Users". Verwenden Sie die folgenden PowerShell-Befehle:
New-Item -Path "C:\flushdns" -ItemType Directory
icacls "C:\flushdns" /grant "Users:(OI)(CI)F"
Der zweite Befehl gewährt allen Benutzern Vollzugriff. Um den Zugriff auf bestimmte Benutzer oder Gruppen zu beschränken, ersetzen Sie "Users" durch den entsprechenden Benutzer- oder Gruppennamen.
1.2.Erstellen des PowerShell-Skripts
Erstellen Sie eine PowerShell-Skriptdatei unter
C:\scriptflushdns.ps1 mit folgendem Inhalt:
# Pfad zum zu überwachenden Ordner
$folderPath = "C:\flushdns"
###### NICHT UNTERHALB DIESER LINIE MODIFIZIEREN
# Fenstertitel
$host.UI.RawUI.WindowTitle = "DNS Flush Process"
# Kontinuierliche Schleife
while ($true) {
$files = Get-ChildItem -Path $folderPath -File -ErrorAction SilentlyContinue
# Wenn Dateien vorhanden sind
if ($files.Count -gt 0) {
# Führe ipconfig /flushdns aus
try {
$result = Start-Process "ipconfig.exe" -ArgumentList "/flushdns" -Verb RunAs -WindowStyle Hidden -Wait -PassThru
if ($result.ExitCode -ne 0) {
Write-Host "Fehler: DNS-Löschung fehlgeschlagen mit Code $($result.ExitCode)" -ForegroundColor Red
} else {
Write-Host "DNS-Cache erfolgreich geleert am $(Get-Date)" -ForegroundColor Green
}
}
catch {
Write-Host "Fehler beim Ausführen von ipconfig: $($_.Exception.Message)" -ForegroundColor Red
}
# Lösche alle Dateien
try {
Remove-Item -Path "$folderPath\*" -Force
}
catch {
Write-Host "Fehler beim Löschen der Dateien: $($_.Exception.Message)" -ForegroundColor Red
}
}
# 10 Sekunden Pause zwischen den Überprüfungen
Start-Sleep -Seconds 10
}
1.3.Ausführen des Skripts
Führen Sie als Administrator
C:\scriptflushdns.ps1 aus. Dies öffnet ein PowerShell-Konsolenfenster mit dem Namen "DNS Flush Process." Schließen Sie dieses Fenster nicht, da das Skript kontinuierlich läuft, den Ordner überwacht und die DNS-Cache-Löschung bei Auslösung ausführt.
Wann immer der DNS-Cache geleert wird, gibt das Skript die Meldung aus:
DNS-Cache erfolgreich geleert am ...
Für automatischen Start nach Systemneustarts konfigurieren Sie das Skript als geplante Aufgabe.
2.Leeren des DNS-Cache als Standardbenutzer
Um den DNS-Cache als Standard-Windows-Benutzer zu leeren, erstellen Sie eine leere Datei oder einen Ordner in
C:\flushdns.
Nach etwa 10 Sekunden verschwindet die erstellte Datei oder der Ordner, was anzeigt, dass der Befehl
ipconfig.exe /flushdns
ausgeführt wurde.
Der Inhalt dieses Dokuments ist von Interspace unter der
MIT-Lizenz lizenziert