setup/powershell/CleanLogs.ps1
<# .SYNOPSIS .DESCRIPTION .NOTES dbareports PowerShell module (https://dbareports.io, SQLDBAWithABeard.com) Copyright (C) 2016 Rob Sewell This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. #> [CmdletBinding(SupportsShouldProcess = $true)] Param ( [Alias("ServerInstance", "SqlInstance")] [object]$SqlServer = "--installserver--", [string]$LogFileFolder = "--logdir--", [int]$LogFileRetention = "---logretention--" ) BEGIN { # Load up shared functions $currentdir = Split-Path -Parent $MyInvocation.MyCommand.Definition . "$currentdir\shared.ps1" # Start Transcript $Date = Get-Date -Format ddMMyyyy_HHmmss $transcript = "$LogFileFolder\dbareports_LogFile_Cleanup" + " _" + "$Date.txt" Start-Transcript -Path $transcript -Append try { $filestoremove = Get-ChildItem -Path $LogFileFolder | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays($LogFileRetention) } } catch { Write-Exception $_ Write-Output "Failed to get List of Files from $LogFileFolder" } } PROCESS { If ($Pscmdlet.ShouldProcess($LogFileFolder, "Removing Files older than $LogFileRetention")) { If ($filestoremove) { try { Remove-Item $filestoremove -Force $FileNames = $filestoremove.FullName Write-Output "Removed $FileNames" } catch { Write-Exception $_ Write-Output "Failed to get List of Files from $LogFileFolder" } } else { Write-Output "No Files to remove in $LogFileFolder" } } } END { } |