Omogočanje standardnim uporabnikom v Windows Server-ju čiščenje DNS predpomnilnika
DNS predpomnilnik v sistemih Windows se običajno počisti z ukazom
ipconfig /flushdns
. Ta ukaz zahteva skrbniške pravice, kar predstavlja izziv v okoljih Windows Server, kjer morajo standardni uporabniki osvežiti svoj DNS predpomnilnik med odpravljanjem težav ali po omrežnih spremembah.
Za obvladovanje te omejitve bomo ustvarili avtomatiziran sistem, ki sestoji iz:
- Enkratna namestitev s strani Administratorja. Uporabnik s skrbniškimi pravicami ustvari in zažene PowerShell skripto, ki neprekinjeno teče v ozadju s skrbniškimi pravicami. Njen edini namen je spremljanje določene mape za kakršnekoli spremembe. Ko so spremembe zaznane, samodejno izvede ukaz za čiščenje DNS-ja.
- Operacija standardnega uporabnika. Za čiščenje DNS predpomnilnika standardni uporabnik ustvari prazno datoteko ali mapo v mapi, ki jo nadzoruje skripta. Datoteka ali mapa bo izginila v približno 10 sekundah, kar označuje, da je bil ukaz
ipconfig /flushdns
izveden.
Ta sistem ohranja varnost z ohranjanjem skrbniških pravic znotraj PowerShell skripte, medtem ko standardni uporabniki izvajajo le operacije z datotekami v določeni mapi, kjer so jim bile dodeljene pravice dostopa.
1.Namestitveni koraki, ki jih izvede Administrator
Naslednje korake mora izvesti uporabnik s skrbniškimi pravicami. V tem primeru bomo uporabili pogon C:, vendar lahko pot do mape prilagodite po potrebi.
1.1.Ustvarjanje nadzorovane mape
Ustvarite mapo z imenom
flushdns, ki bo uporabljena za sprožitev čiščenja DNS predpomnilnika. Dodelite dostop do mape za standardne uporabnike, običajno v skupini "Users". Uporabite naslednje PowerShell ukaze:
New-Item -Path "C:\flushdns" -ItemType Directory
icacls "C:\flushdns" /grant "Users:(OI)(CI)F"
Drugi ukaz dodeli poln dostop vsem uporabnikom. Za omejitev dostopa na določene uporabnike ali skupine zamenjajte "Users" z ustreznim imenom uporabnika ali skupine.
1.2.Ustvarjanje PowerShell skripte
Ustvarite PowerShell skriptno datoteko na
C:\scriptflushdns.ps1 z naslednjo vsebino:
# Pot do mape za nadzor
$folderPath = "C:\flushdns"
###### NE SPREMINJAJTE POD TO ČRTO
# Naslov okna
$host.UI.RawUI.WindowTitle = "DNS Flush Process"
# Neprekinjeno izvajanje
while ($true) {
$files = Get-ChildItem -Path $folderPath -File -ErrorAction SilentlyContinue
# Če obstajajo datoteke
if ($files.Count -gt 0) {
# Zaženi ipconfig /flushdns
try {
$result = Start-Process "ipconfig.exe" -ArgumentList "/flushdns" -Verb RunAs -WindowStyle Hidden -Wait -PassThru
if ($result.ExitCode -ne 0) {
Write-Host "Napaka: DNS čiščenje ni uspelo s kodo $($result.ExitCode)" -ForegroundColor Red
} else {
Write-Host "DNS predpomnilnik uspešno počiščen ob $(Get-Date)" -ForegroundColor Green
}
}
catch {
Write-Host "Napaka pri izvajanju ipconfig: $($_.Exception.Message)" -ForegroundColor Red
}
# Izbriši vse datoteke
try {
Remove-Item -Path "$folderPath\*" -Force
}
catch {
Write-Host "Napaka pri brisanju datotek: $($_.Exception.Message)" -ForegroundColor Red
}
}
# 10 sekund premora med preverjanji
Start-Sleep -Seconds 10
}
1.3.Zagon skripte
Kot Administrator zaženite
C:\scriptflushdns.ps1. To bo odprlo PowerShell konzolno okno z imenom "DNS Flush Process." Ne zapirajte tega okna, saj se skripta izvaja neprekinjeno, nadzoruje mapo in izvaja čiščenje DNS predpomnilnika, ko je sproženo.
Vsakič ko se DNS predpomnilnik počisti, skripta izpiše sporočilo:
DNS predpomnilnik uspešno počiščen ob ...
Za samodejni zagon po ponovnem zagonu sistema konfigurirajte skripto, da se zažene kot načrtovana naloga.
2.Čiščenje DNS predpomnilnika kot standardni uporabnik
Za čiščenje DNS predpomnilnika kot standardni Windows uporabnik ustvarite prazno datoteko ali mapo v
C:\flushdns.
Po približno 10 sekundah bo ustvarjena datoteka ali mapa izginila, kar označuje, da je bil ukaz
ipconfig.exe /flushdns
izveden.
Vsebina tega dokumenta je licencirana s strani Interspace pod
MIT licenco