Files
management-scripts/Remove-OldRevitLocals.ps1
T

30 lines
1.5 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 }) ) {
If ( Test-Path "${userProfile}\Documents\Revit Locals" ) { LogMsg "Adding search path: ""${userProfile}""" ; $RevitLocalPaths.Add("${userProfile}\Documents\Revit Locals") }
If ( Test-Path "${userProfile}\Documents" ) { LogMsg "Adding search path: ""${userProfile}""" ; $RevitLocalPaths.Add("${userProfile}\Documents") }
}
ForEach ( $path in $RevitLocalPaths ) {
LogMsg "Searching ""${path}"" for Revit files"
$RevitFiles = Get-ChildItem -Path "${path}\*.*" -Filter '*.rvt' | Where-Object {$_.LastWriteTime -lt $FileAllowedAge}
If ( $RevitFiles ) {
LogMsg "Revit files found. Searching for Revit files with worksharing enabled"
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}")) {
LogMsg "Deleting ""${revitfile}"" and backup directory ""${BackupDir}"""
Remove-Item "${revitfile}" -Force -ErrorAction SilentlyContinue
Remove-Item "${BackupDir}" -Recurse -ErrorAction SilentlyContinue
}
}
}
}