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,