function Remove-OldArchivedLogFiles { <# .SYNOPSIS Deletes Archived Log Files Older than a Number of Days in the Past #> [CmdletBinding()] Param( [Parameter(Mandatory=$false)] [Alias("ArchivePath")] [string]$archiveDirectory, [Parameter(Mandatory=$false)] [Alias("CutoffThreshold")] [int]$cutoffDays = 1 ) $logLead = (Get-LogLeadName) if ([string]::IsNullOrEmpty($archiveDirectory)) { $archiveDirectory = (Join-Path (Get-OrbLogsPath) "Archive") } $absoluteCutoff = [System.Math]::Abs($cutoffDays) $cutoffDate = (Get-Date).AddDays($absoluteCutoff * -1) $cutoffUtc = [System.TimeZoneInfo]::ConvertTimeToUtc($cutoffDate) if (!(Test-Path $archiveDirectory)) { (New-Item -ItemType Directory -Path $archiveDirectory -Force) | Out-Null } $archivedFolders = Get-ChildItem $archiveDirectory -Directory Write-Output ("$logLead : Looking for old files to delete") foreach ($archivedFolder in $archivedFolders) { try { $itemsToRemove = Get-ChildItem $archivedFolder.FullName -File | Where-Object { $_.CreationTimeUtc -lt $cutoffUtc } $itemsToRemove | ForEach-Object { Write-Verbose ("$logLead : Removing Old Item {0}" -f $_.FullName) Remove-Item $_.FullName -Force } } catch { Write-Warning ("$logLead : An error occured while trying to evaluate/delete old log files: {0}" -f $_.Exception.Message) } } Write-Output ("$logLead : Looking for empty folders to delete") try { Get-ChildItem $archiveDirectory -Recurse -Directory | Where-Object { $_.GetFiles().Count -eq 0 } | ForEach-Object { Write-Verbose ("$logLead : Removing Empty Folder {0}" -f $_.FullName) Remove-Item $_.FullName -Recurse -Force } } catch { Write-Warning ("$logLead : An error occured while trying to evaluate/delete empty folders: {0}" -f $_.Exception.Message) } }