# Exchange Connection $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchange.domain.com/PowerShell/ -Authentication Kerberos Import-PSSession $Session -DisableNameChecking #Outpout File: $Date = Get-Date -Format "MM.dd.yyyy-hh.mm-tt" $OutputFile = 'C:\Temp\IISCleanupScript'+$Date+'.txt' $ExchangeServers = ( Get-ExchangeServer ).Name | Sort Name $Output = "Server,Directory,FileCount,LastLogWrite,FilesRemoved" | Out-File $OutputFile Foreach ($ExchangeServer in $ExchangeServers) { $Names = (Get-ChildItem \\$ExchangeServer\C$\inetpub\logs\LogFiles).Name Foreach ($Name in $Names) { $Location = "\\$ExchangeServer\C$\inetpub\logs\LogFiles\$Name" $Filesremoved = 0 $Count = 0 $LastWrite = 'N/A' Try { $Count = (Get-ChildItem $Location -ErrorAction stop).Count If ($Count -gt 0) { $LastWrite = (Get-ChildItem $Location | Sort LastWriteTime | Select -Last 1).LastWriteTime } } Catch { $Count = 0 $LastWrite = 'N/A' } If ($Count -gt 0) { $Today = Get-Date $FourteenDays = ($Today).AddDays(-14) $Names = (Get-ChildItem $Location | Where {$_.LastWriteTime -gt $FourteenDays}).Name $Files = (Get-ChildItem $Location).Name Foreach ($File in $Files) { If ($Names -NotContains $File) { $FileToRemove = $Location+'\'+$File Remove-Item $FileToRemove $Filesremoved++ } } } # Line output # Write-Host "$Line,$Count,$LastWrite,$FilesRemoved $Output = "$ExchangeServer,$Name,$Count,$LastWrite,$FilesRemoved" | Out-File $OutputFile -Append } } # Sort Data $File = Import-CSV $OutputFile $File | Sort Server | ft > IISSortedReport.txt # Send email notification $To = 'damian@domain.com' $From = 'notifications@domain.com' $Subject = 'IIS 14 Day Log File Report' $Body = (Get-Content IISSortedReport.txt) -Join '
' $SMTPServer = 'smtpserver.domain.com' Send-MailMessage -To $To -From $From -Subject $Subject -Body $Body -BodyAsHtml -SmtpServer $SMTPServer # Close PowerShell session off Get-PSSession | Remove-PSSession