У меня возникла странная проблема, я пытаюсь использовать процесс для автоматизации удаления файлов из папки, а также дочерних папок, я пытаюсь удалить только файлы старше 7 дней.
Мой код работает, но он удаляет файлы, которые меньше 7 дней при рекурсивном переходе в дочерние элементы. , Кто-нибудь мог бы здесь помочь? Мне просто нужно удалить в каждой папке / подпапке файлы старше 7 дней.
Param (
[string]$Source = "C:\Users\Loredanes\Downloads\",
[string]$Days = "1"
)
$Files = Get-ChildItem $Source -Recurse | Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -lt (get-date).addminutes(-$($Days)) }
$Files | Remove-Item -Force
if ($Files.count -gt 0)
{
$Folders = @()
ForEach ($Folder in (Get-ChildItem -Path $Source -Recurse -Directory))
{
$Folders += New-Object PSObject -Property @{
Object = $Folder
Depth = ($Folder.FullName.Split("\")).Count
}
}
$Folders = $Folders | Sort Depth -Descending
ForEach ($Folder in $Folders)
{
If ($Folder.Object.GetFileSystemInfos().Count -eq 0)
{
Write-Host "Removing Folder: $($Folder)"
Remove-Item -Path $Folder.Object.FullName -Force
}
}
}
else
{
Write-Host "No Empty folders found after removing files older than $($Days) days."
}