# $CleanupPath must be set by RMM # $DaysWithNoModification must be set by RMM # Exit if the source path does not exist If ( !(Test-Path $CleanupPath) ) { Write-Output "The specified path does not exist: ""${CleanupPath}""" ; Return } # Running total of the size of all directories and files $TotalSize = 0 # Running total of the number of all identified directories $TotalDirectories = 0 # Running total of the number of all identified files $TotalFiles = 0 $StartDate = Get-Date $StartTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss" Write-Output '-------------------------------------------------------------------------------' Write-Output "Started at : ${StartTime}" Write-Output "Run on : ${Env:COMPUTERNAME}" Write-Output "Source : ${CleanupPath}" If ( $DaysWithNoModification -gt 0 ) { Write-Output "Modified : ${DaysWithNoModification} day(s) ago" } Write-Output '-------------------------------------------------------------------------------' # Identify all files and folders that match the criteria for what we're looking for $TEMPORARY_REVIT_OBJECTS = Get-ChildItem -Path $CleanupPath -Recurse | Where-Object { ( # Revit model backup folder $_.Name -match '_backup$' -or # Revit backup models $_.Name -match '\.\d\d\d\d\.rvt$' # Files and folders not recently modified ) -and ($_.LastWriteTime -lt $StartDate.AddDays(-$DaysWithNoModification)) } # Loop thru each path to get its size and Foreach ( $obj in $TEMPORARY_REVIT_OBJECTS ) { # Skip the object if it no longer exists or is otherwise inaccessible If ( !(Test-Path $obj.FullName) ) { Continue } Else { $item = $obj.FullName } Switch ( $obj.PSIsContainer ) { # Get the size of the directory and update counter $true { $size = (Get-ChildItem -Path $item -Recurse | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum $TotalDirectories++ } # Get the size of the file and update counter $false { $size = (Get-Item $item | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum $TotalFiles++ } } Write-Output $item $TotalSize += $size } # Record stats $EndTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss" $Duration = "{0:g}" -f (New-TimeSpan -Start $StartTime -End $EndTime) Switch ( $TotalSize ) { { $_ -ge 1TB } { $GrandTotal = "{0}TB" -f ([Math]::Round(($TotalSize / 1TB),2)) ; break } { $_ -ge 1GB } { $GrandTotal = "{0}GB" -f ([Math]::Round(($TotalSize / 1GB),2)) ; break } { $_ -ge 1MB } { $GrandTotal = "{0}MB" -f ([Math]::Round(($TotalSize / 1MB),2)) ; break } { $_ -ge 1KB } { $GrandTotal = "{0}KB" -f ([Math]::Round(($TotalSize / 1KB),2)) ; break } { $_ -lt 1KB } { $GrandTotal = "${TotalSize} bytes" ; break } } Write-Output '-------------------------------------------------------------------------------' Write-Output "Finished at: ${EndTime}" Write-Output "Duration : ${Duration}" Write-Output "Directories: ${TotalDirectories}" Write-Output "Files : ${TotalFiles}" Write-Output "Total size : ${GrandTotal}" Write-Output '-------------------------------------------------------------------------------'