Stergeti de la distanță fișierele log și temp de pe serverele bazate pe Windows cu PowerShell.

Configurare noua (How To)

Situatie

Este mult mai ușor să configurați o sarcină sau un job programat pe un server proiectat pentru gestionare si pentru a curăța de la distanță fișierele dorite pe toate serverele.

Următorul script de curățare a fișierului log și temp este furnizat ca o dovadă a conceptului și ar trebui să fie testat temeinic înainte de rularea acestuia pe oricare sistem de producție. De asemenea, ar trebui să vă testați backup-urile realizând o restaurare într-un mediu nou chiar și după ce ați testat un script ca acesta. Cu alte cuvinte, sa aveți întotdeauna un plan de întoarcere.

Acest script poate fi setat ca o sarcină sau o sarcină programată. Acesta preia o listă de nume de server dintr-un fișier text situat pe un server de fișiere centralizat. Se adaugă diferiți parametri bazați pe dacă calea este pentru fișiere log sau temp. De asemenea, testează căile specificate, deoarece nu toate serverele vor fi servere web, dar dacă rolul serverului web este adăugat la un server existent, acele fișiere de jurnal vor fi eliminate fără modificări suplimentare. Când se adaugă noi servere, pur și simplu adăugați-le în fișierul text. Acest lucru ar putea fi, de asemenea, automatizat, în funcție de structura mediului Active Directory, prin interogarea adreselor Active Directory pentru o listă de nume de server.

Solutie

   $Paths = “$env:SystemDriveinetpublogs”, “$env:windirSystem32LogFiles”, “$env:windirTemp”
            
    foreach ($Path in $Paths) {
        $Params = @{
            Path = $Path
            Recurse = $true
        }
        
        if ($Path -match ‘log’) {
            $Params.Include = ‘*.log’
            $Date = (Get-Date -OutVariable Now).AddDays(-90)
        }
        else {
            $Date = (Get-Date -OutVariable Now).AddDays(-7)
        }
    
        if (Test-Path -Path $Path -PathType Container) {
            Get-ChildItem @Params |
            Where-Object {$_.CreationTime -le $Date} -OutVariable Results |
            Remove-Item -Force -ErrorAction SilentlyContinue
            
            $Results | Export-Csv -Path “$env:windirTempfiles-removed-$($($Now).ToString(‘MMddyy’)).csv” -Append -NoTypeInformation
            
        }
    }
Rezultatele sunt stocate într-un fișier CSV aflat în dosarul temp de pe serverul de unde au fost eliminate fișierele. Fișierele care conțin rezultatele sunt curățate împreună cu celelalte fișiere temporare pe baza intervalului specificat în script.

Tip solutie

Permanent

Voteaza

(14 din 32 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?