Nettoyage des logs Exchange
Truncate DB logs
Diskshadow Add volume d: REM (optional, add one line for each additional drive to include) Add volume X: Begin Backup Create End Backup
Fichiers de journalisation
Sur les serveur Exchange, il n'y a pas de purge automatique des logs. Il est nécessaire de le faire manuellement de façon périodique.
Nous proposons le script suivant :
- ExchangeCleanup.ps1
# Cleanup logs older than the set of days in numbers $days = 30 # 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\" 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" } } If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Start-Process powershell.exe "-File",('"{0}"' -f $MyInvocation.MyCommand.Path),"-ConfFile ",('"{0}"' -f $ConfFile) -Verb RunAs }Else{ Write-Verbose "I AM (Ps>)ROOT" #gci ‘C:\Program Files\Microsoft\Exchange Server\V15\Logging’ -Directory | gci -Include ‘*.log’,’*.blg’ -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-7) | Remove-Item -Recurse -Force -Confirm:$false #gci ‘C:\Inetpub\logs’ -Directory | gci -Include ‘*.log’,’*.blg’ -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-14) | Remove-Item -Recurse -Force -Confirm:$false CleanLogfiles($IISLogPath) CleanLogfiles($ExchangeLoggingPath) CleanLogfiles($ETLLoggingPath) CleanLogfiles($ETLLoggingPath2) }
Les dossiers à nettoyer étant C:\Program Files\Microsoft\Exchange Server\V15\Logging
pour les logs purement Exchange et C:\Inetpub\logs
pour les logs IIS, notamment ceux du webmail.
Tache planifié
Il est possible de planifier le nettoyage avec des taches planifiés, exécuté en tant qu'utilisateur Système. Voilà un script d'installation pour les tâches planifiés. Ces commandes doivent être exécuté en administrateur. Vous pouvez faire un clique droit sur le menu démarrer pour ouvrir un powershell en administrateur ou bien taper “powershell” puis cliquer sur “Executer en tant qu'administrateur”.
Une fois dans la fenêtre PowerShell, vous pouvez copier / coller l'ensemble des commandes ci-dessous.
Import-Module ScheduledTasks $A = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "gci 'C:\Program Files\Microsoft\Exchange Server\V15\Logging' -Directory | gci -Include '*.log','*.blg' -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-7) | Remove-Item -Recurse -Force -Confirm:$false" $T = New-ScheduledTaskTrigger -Daily -At 9pm $P = New-ScheduledTaskPrincipal "NT AUTHORITY\SYSTEM" -RunLevel Highest -LogonType ServiceAccount $S = New-ScheduledTaskSettingsSet $D = New-ScheduledTask -Action $A -Principal $P -Trigger $T -Settings $S -Description "Cleanup Exchange logs" Register-ScheduledTask -TaskName "EXCH Purge exchange logs" -InputObject $D $A = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "gci 'C:\Inetpub\logs' -Directory | gci -Include '*.log','*.blg' -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-14) | Remove-Item -Recurse -Force -Confirm:$false" $T = New-ScheduledTaskTrigger -Daily -At 10pm $D = New-ScheduledTask -Action $A -Principal $P -Trigger $T -Settings $S -Description "Cleanup IIS logs" Register-ScheduledTask -TaskName "EXCH Purge IIS" -InputObject $D
Ces commandes vont créer deux tâches planifiés : EXCH Purge IIS
et EXCH Purge exchange logs
qui nettoieront les logs respectivement à 22h et 21h. Tous les logs de plus de 14 jours seront effacés.