Files
management-scripts/Remove-OldRevitLocals.ps1

30 lines
1.3 KiB
PowerShell

# Set the maximum allowed age of Revit local files
$FileAllowedAge = (Get-Date).AddMonths(-1)
# Build all Revit local paths
$RevitLocalPaths = @()
ForEach ( $userProfile in (Get-ChildItem -Path "${Env:SystemDrive}\Users" | Where-Object { $_.PSIsContainer }) ) {
$profilePath = $userProfile.FullName
If ( Test-Path "${profilePath}\Documents\Revit Locals" ) { $RevitLocalPaths += ,@("${profilePath}\Documents\Revit Locals") }
If ( Test-Path "${profilePath}\Documents" ) { $RevitLocalPaths += ,@("${profilePath}\Documents") }
}
ForEach ( $path in $RevitLocalPaths ) {
$RevitFiles = Get-ChildItem -Path "${path}\*.*" -Filter '*.rvt' | Where-Object {$_.LastWriteTime -lt $FileAllowedAge}
If ( $RevitFiles ) {
ForEach ($revitfile in $RevitFiles) {
$parentDir = $revitfile.DirectoryName
$baseName = $revitfile.BaseName
$BackupDir = "${parentDir}\${basename}_backup"
# Only remove Revit local files that have worksharing enabled
If ( (Test-Path "${revitfile}") -and (Test-Path "${BackupDir}")) {
Write-Output "Deleting ""${revitfile}"" and backup directory ""${BackupDir}"""
Remove-Item "${revitfile}" -Force -ErrorAction SilentlyContinue
Remove-Item "${BackupDir}" -Recurse -ErrorAction SilentlyContinue
}
}
}
}