Note: script looks at when file was last modified and also removes if any file exists in sub folders recursively.
$path="C:\app" $NumDaysToRetain=3 $extension ="*.bak" Get-ChildItem -Path $path -Filter $extension -Recurse | Where-Object{ $_.lastwritetime -lt (get-date).adddays(-$NumDaysToRetain)} | ForEach-Object { Remove-item $_.FullName; write-host "File" $_.FullName "deleted"}