Function Remove-Item-withLogging { <# .SYNOPSIS Function will delete Items selected by Path, Name and Age. .DESCRIPTION Function will delete Items selected by Path, Name and Age, with logging this. For a successful performed deletion, Function will Return $True, for unccessful $False. .REQUIREMENT General PowerShell V2 .REQUIREMENT Variables Path, FileKeepTime, FileBaseName, Item, Items .REQUIREMENT Assembly .REQUIREMENT Functions Write-LogFile .VERSION Number: 1.1.1.1 / Date: 25.04.2017 .PARAMETER Path Give the Full Path, where the Item(s) located, which should be deleted. .PARAMETER FileKeepTime Give the time in Days, which Items should be deleted, which are older than... .PARAMETER FileBaseName Give the which will be selected, the Item(s) to delete. Given will be set with Wildcards: **. .PARAMETER FileExtension Give the FileExtension which Files will be selected for deletion (Default: log). .EXAMPLE Remove-Item-withLogging -Path "E:\LogFiles" -FileKeepTime 5 -FileBaseName Filename #> [cmdletbinding()] Param ( [Parameter(Mandatory=$True,HelpMessage='Give the Full Path, where the Item(s) located, which should be deleted.')] [ValidateNotNullOrEmpty()] [String]$Path=$NULL, [Parameter(Mandatory=$True,HelpMessage='Give the time in Days, which Item(s) should be deleted, which are older than...')] [ValidateRange(0,1000)] [Int]$FileKeepTime=$NULL, [Parameter(Mandatory=$True,HelpMessage='Give the Filename which will be selected, the Item(s) to delete. Given will be set with Wildcards: **.')] [ValidateNotNullOrEmpty()] [String]$FileBaseName=$NULL, [Parameter(Mandatory=$False,HelpMessage='Give the FileExtension which Files will be selected for deletion (Default: log).')] [ValidateNotNullOrEmpty()] [String]$FileExtension="log" ) #end param #Checking if "Write-LogFile" Module was loaded IF (Get-Module -Name "Write-LogFile") { IF ($FileKeepTime -gt 0) { Write-Logfile -LogLine "Files should be removed which are older than $FileKeepTime Day(s)." [Array]$Items = (Get-ChildItem -Path "$Path\*" -Filter *.$FileExtension | where {$_.Name -like "*$FileBaseName*" -and $_.lastwritetime -lt $((Get-Date).AddDays(-$FileKeepTime)) -and -not $_.psiscontainer}) IF ($Items.count -le 0) { Write-Logfile -LogLine "Found no old Files." Return $False } #end if ELSE { Write-Logfile -LogLine "Deleting old Files (Found: $($Items.count)) :" Try { $Items | Remove-Item -Path $Item -Force -Verbose -ErrorAction Stop Write-Logfile -LogLine "Files were removed!" Return $True } #end try Catch { Write-Logfile -LogLine "Cannot remove Files!" Write-Logfile -LogLine "Please check your privileges!" Return $False } #end catch } #end else } #end if ELSE { Write-Logfile -LogLine "You disabled File deletion, they all will be kept." Return $False } #end else } #end if ELSE { Write-Host "" Write-Host "DEBUG Info: Write-LogFile - Module does not exist!" Write-Host "DEBUG Info: Please load the Module and try again, running this Function/Module!" Write-Host "DEBUG Info: Exiting, because of this Issue." EXIT } #end else } #end function