65 lines
2.0 KiB
PowerShell
65 lines
2.0 KiB
PowerShell
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)
|
|
}
|
|
}
|