Falls man die Logs eines Exchange (2016/2019/SE) auf die C:-Partition gelegt hat und diese vollzulaufen droht, kann das Verschieben und/oder Löschen (bzw. Reduzieren) der Logdateien helfen. Zum Verschieben siehe einen anderen Beitrag, hier kurz, wie wir die Logs bis auf die letzten fünf (5) Tage löschen.
Dazu die PowerShell mit erhöhten Rechten öffnen und folgendes darin ausführen:
Set-ExecutionPolicy RemoteSigned -Force
= es dürfen also Scripte ausgeführt werden
Get-ExecutionPolicy
= überprüfen, ob das akzeptiert wurde („RemoteSigned“ sollte angezeigt werden)
New-Item -Path „C:\Scripts“ -ItemType Directory -Force
= einen Ordner für die Scripte anlegen
Set-Location „C:\Scripts“
= diesen Ordner auswählen
Test-Path „C:\Scripts“
= überpüfen, ob der Ordnerpfad gültig ist (es sollte „True“ ausgegeben werden). Jetzt das Script herunterladen:
Invoke-WebRequest -Uri „https://raw.githubusercontent.com/SammyKrosoft/Clean-Exchange-Log-Files/master/CleanExchangeLogFiles.ps1“ -OutFile „C:\Scripts\CleanExchangeLogFiles.ps1“
= der Pfad lautet also https://raw.githubusercontent.com/SammyKrosoft/Clean-Exchange-Log-Files/master/CleanExchangeLogFiles.ps1
Liegen sollte das Script dann hier:
Get-ChildItem „C:\Scripts*.ps1“
Nun führen wir einen Testlauf durch („DoNotDelete“):
C:\Scripts\CleanupExchangeLogs.ps1 -Days 7 -DoNotDelete
Es sollte noch einmal eine Sicherheitsabfrage aufploppen:

Und so in etwa sollte das Ergebnis aussehen:

Wenn alles OK ist, kann das Script ohne den Parameter „-DoNotDelete“ ausgrführt werden. Ausserdem kann natürlich Tageszahl variiert werden.
Das gesamte Script noch einmal hier:
Exchange Log Cleanup Script
param(
[int]$Days = 7,
[switch]$DoNotDelete
)
$LogPaths = @(
„$env:SystemDrive\inetpub\logs\LogFiles“,
„$env:ExchangeInstallPath\Logging“,
„$env:ExchangeInstallPath\Bin\Search\Ceres\Diagnostics\Logs“
)
$CutoffDate = (Get-Date).AddDays(-$Days)
$TotalSize = 0
foreach ($Path in $LogPaths) {
if (Test-Path $Path) {
$Files = Get-ChildItem -Path $Path -Recurse -File | Where-Object {$_.LastWriteTime -lt $CutoffDate}
$PathSize = ($Files | Measure-Object -Property Length -Sum).Sum
$TotalSize += $PathSize
Write-Host „Found $($Files.Count) files in $Path ($(‚{0:N2}‘ -f ($PathSize/1MB)) MB)“
if (-not $DoNotDelete) {
$Files | Remove-Item -Force -ErrorAction SilentlyContinue
Write-Host „Deleted files older than $Days days from $Path“
}
}
}
Write-Host „Total space that would be freed: $(‚{0:N2}‘ -f ($TotalSize/1MB)) MB“
