diff --git a/Cleanup-RevitTempFilesOnFileServerCalcOnly.ps1 b/Cleanup-RevitTempFilesOnFileServerCalcOnly.ps1 new file mode 100644 index 0000000..3572236 --- /dev/null +++ b/Cleanup-RevitTempFilesOnFileServerCalcOnly.ps1 @@ -0,0 +1,79 @@ +# $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 ( $DaysWithoutModification -gt 0 ) { Write-Output "Modified : ${DaysWithoutModification} 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 { + ( + # 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(-$DaysWithoutModification)) +} + +# 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++ + } + } + + $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 '-------------------------------------------------------------------------------' \ No newline at end of file