Exchange Server

Exchange Server için Log Silme Script

Merhalar, ortamınızda bir Exchange Server yapısı var bazen log dosyalarını manuel silmek durumunda kalabilirsiniz. Bildiğiniz üzere Exchange Server 2013 ve sonraki sürümlerde LOG dosyaları daha fazla yer kaplamaktadır. Bugün sizinle bu LOG dosyalarını PowerShell aracılığıyla silebilmeniz için gerekli Scripti paylaşacağım.

Not: Silinen bu LOG dosyaları veritabanlarına ait LOG dosyaları değildir. Eğer yapınızda VEEAM kullanıyorsanız VEEAM ile LOG Backup alabilir ve veritabanına ait LOG dosyalarını VSS ile silebilirsiniz.

İlgili Scripti buradan indirebilirsiniz, yada aşağıda paylaşmış olduğum kodları bilgisayarınıza CleanupLogs.ps1 olarak kaydedebilirsiniz.

# Set execution policy if not set
$ExecutionPolicy = Get-ExecutionPolicy
if ($ExecutionPolicy -ne "RemoteSigned") {
    Set-ExecutionPolicy RemoteSigned -Force
}

# Cleanup logs older than the set of days in numbers
$days = 3

# Path of the logs that you like to cleanup
$IISLogPath = "C:\inetpub\logs\LogFiles\"
$ExchangeLoggingPath = "C:\Program Files\Microsoft\Exchange Server\V15\Logging\"
$ETLLoggingPath = "C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces\"
$ETLLoggingPath2 = "C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\Logs\"

# Clean the logs
Function CleanLogfiles($TargetFolder) {
    Write-Host -Debug -ForegroundColor Yellow -BackgroundColor Cyan $TargetFolder

    if (Test-Path $TargetFolder) {
        $Now = Get-Date
        $LastWrite = $Now.AddDays(-$days)
        $Files = Get-ChildItem $TargetFolder -Recurse | Where-Object { $_.Name -like "*.log" -or $_.Name -like "*.blg" -or $_.Name -like "*.etl" } | Where-Object { $_.lastWriteTime -le "$lastwrite" } | Select-Object FullName
        foreach ($File in $Files) {
            $FullFileName = $File.FullName  
            Write-Host "Deleting file $FullFileName" -ForegroundColor "yellow"; 
            Remove-Item $FullFileName -ErrorAction SilentlyContinue | out-null
        }
    }
    Else {
        Write-Host "The folder $TargetFolder doesn't exist! Check the folder path!" -ForegroundColor "red"
    }
}
CleanLogfiles($IISLogPath)
CleanLogfiles($ExchangeLoggingPath)
CleanLogfiles($ETLLoggingPath)
CleanLogfiles($ETLLoggingPath2)

Scripti çalıştırmadan önce aşağıda belirtmiş olduğum adımları kontrol etmenizde fayda var;

8. satırda bulunun $days= için değişiklik yapabilirsiniz, kaç günlük LOG silmeniz gerekiyorsa o şekilde değişiklik yapabilirsiniz.

İlgili dosyayı C:/Scripts altında kaydetmeniz gerekmektedir.

Silme işlemi yaparken hesabınız da aşağıda ki klasörlere erişim izni olması gerekmektedir. İlgili kullanıcıyı Active Directory üzerinden oluşturduktan sonra okuma/yazma yetkisi vermeniz yeterli olacaktır.

Umarım faydası olur,

Cengiz YILMAZ

5 Yıldır IT Sektörü içerisindeyim, Microsoft ürünleri ve Sanallaştırma teknoloji ile ilgilenmekteyim. 2021 yılı içerisinde VMware tarafından vExpert ve vExpert Pro olarak seçildim. Cengiz YILMAZ | vExpert, MCT |

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu