ps/Modules/Alkami.PowerShell.Common/Public/Remove-OldArchivedLogFiles.ps1

65 lines
2.0 KiB
PowerShell
Raw Normal View History

2023-05-30 22:51:22 -07:00
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)
}
}