Clear Exchange 2013 Log Files based on age.

Clear logs in a single Exchange 2013 Server:

Set-Executionpolicy RemoteSigned
$days=30 #You
can change the number of days here
$IISLogPath=”C:inetpublogsLogFiles”
$ExchangeLoggingPath=”C:Program
FilesMicrosoftExchange ServerV15Logging”
Write-Host “Removing
IIS and Exchange logs; keeping last” $days
“days”
Function CleanLogfiles($TargetFolder)
{
   
if (Test-Path
$TargetFolder) {
        $Now
= Get-Date
        $LastWrite
= $Now.AddDays(-$days)
        $Files
= Get-ChildItem
$TargetFolder -Include
*.log -Recurse
| Where {$_.LastWriteTime
-le “$LastWrite”}
        foreach
($File in
$Files)
            {Write-Host
“Deleting file $File” -ForegroundColor
“Red”; Remove-Item
$File -ErrorAction
SilentlyContinue |
out-null}
      
}
Else {
   
Write-Host “The
folder $TargetFolder doesn’t exist! Check the folder path!” -ForegroundColor “red”
   
}
}
CleanLogfiles($IISLogPath)
CleanLogfiles($ExchangeLoggingPath)
Clear Logs in multiple Exchange 2013 Servers at the same time:
  
Set-Executionpolicy RemoteSigned
$days=30 #You
can change the number of days here
$ExchangeInstallRoot =
“C”
$IISLogPath=”inetpublogsLogFiles”
$ExchangeLoggingPath=”Program
FilesMicrosoftExchange ServerV15Logging”
Write-Host “Removing
IIS and Exchange logs; keeping last” $days
“days”
Function CleanLogfiles($TargetFolder)
{
   
$TargetServerFolder = “$E15Server$ExchangeInstallRoot$$TargetFolder”
   
Write-Host $TargetServerFolder
   
if (Test-Path
$TargetServerFolder) {
        $Now
= Get-Date
        $LastWrite
= $Now.AddDays(-$days)
        $Files
= Get-ChildItem
$TargetServerFolder -Include *.log -Recurse | Where {$_.LastWriteTime -le
“$LastWrite”}
        foreach
($File in
$Files)
            {
               #
Write-Host “Deleting file $File” -ForegroundColor “Red”
                Remove-Item
$File -ErrorAction
SilentlyContinue |
out-null}
        }
Else {
   
Write-Host “The
folder $TargetServerFolder doesn’t exist! Check the folder path!” -ForegroundColor “red”
   
}
}
$Ex2013 =
Get-ExchangeServer |
Where {$_.IsE15OrLater -eq
$true}
foreach ($E15Server
In $Ex2013)
{
   
CleanLogfiles($IISLogPath)
   
CleanLogfiles($ExchangeLoggingPath)
    }

Author: Harri Jaakkonen

Leave a Reply

Your email address will not be published. Required fields are marked *