Function Get-PCCleanup($ComputerName){ Write-Host 'Starting PC Cleanup' Write-Host 'Clearing Windows Temp' if(Test-Path \\$ComputerName\C$\Windows\Temp){ Get-ChildItem -Path \\$ComputerName\C$\Windows\Temp -Recurse -Force | Remove-Item -Force -Recurse Write-Host "Cleaned up files in \\$ComputerName\C$\Windows\Temp " -ForegroundColor Green }else{ Write-Host "Could not access \\$ComputerName\C$\Windows\Temp" -ForeGround Red } Write-Host 'Clearing PACS Web Cache' if(Test-Path \\$ComputerName\C$\DRS\LocalCache\PACS-Web){ Get-ChildItem -Path \\$ComputerName\C$\DRS\LocalCache\PACS-Web -Recurse -Force | Remove-Item -Force -Recurse Write-Host "Cleaned all files in \\$ComputerName\C$\DRS\LocalCache\PACS-Web" -ForegroundColor Green }else{ Write-Host "Could not access \\$ComputerName\C$\DRS\LocalCache\PACS-Web" -ForeGround Red } Write-Host 'Clearing Brance cache' try { Clear-BCCache -Force Write-Host 'Cleared branch cache' -ForegroundColor Green } catch {Write-Host 'Unable to clear branch cache' -ForegroundColor Yellow} } Function Get-PCProfileCleanup($ComputerName){ $diskspace = Get-FreeDiskSpace $ComputerName $out1 = "Free Space on " + $computerName + ": " $out2 = $diskspace.'Free Space' $out3 = " GB/" + $diskspace.'Total Space' + ' GB' Write-Host $out1 -NoNewline if($diskspace.'Free Space' -lt 5){ Write-Host $out2 -ForegroundColor Red -NoNewline } elseif($diskspace.'Free Space' -lt 10){ Write-Host $out2 -ForegroundColor Yellow -NoNewline } else{ Write-Host $out2 -NoNewline } Write-Host $out3 if($null -eq $ComputerName){ $ComputerName = $env:COMPUTERNAME } $userInput = Read-Host "Do you wish to proceed with removing inactive user profiles older than X days? (y/n)" if($userInput -ne "y"){ Write-Host "No user profiles deleted" return } $days = Read-Host "Clean up user profiles inactive for more than x days" $allProfiles = Get-LastLoginTimes -ComputerName $ComputerName $userProfiles = $allProfiles | Where-Object {$_.LastLoginTime -lt $(Get-Date).Date.AddDays(-$days)} $userProfiles += $allProfiles | Where-Object LastLoginTime -eq 'Unknown' #$userProfiles = Get-CIMInstance -ComputerName $ComputerName -Class Win32_UserProfile | Where {$_.LastUseTime -lt $(Get-Date).Date.AddDays(-$days)} $userAmount = 0 foreach ($user in $userProfiles) { $output = "{0} | {1:MM}/{1:dd}/{1:yyyy}" -f $user.Name, $user.LastLoginTime Write-Host $output $userAmount++ } Write-host "There are $userAmount profiles inactive more than $days days" if($userProfiles){ Write-Host "WARNING: ALL PROFILES DELETED ARE UNRETRIEVABLE" -ForegroundColor Yellow $delChoice = Read-Host "Delete these users (y/n)" } else { Write-Host "No users inactive for more than $days days" } if ($delChoice -eq 'y'){ $current = 0 foreach ($user in $userProfiles){ $current++ Write-Progress -Activity "Deleting Profiles" -Status "$current / $userAmount" -PercentComplete ($current/$userAmount*100) -CurrentOperation $user.LocalPath Write-Host "Deleting " $user.LocalPath " | " $user.LastLoginTime Get-CIMInstance -Class Win32_UserProfile -ComputerName $ComputerName | Where-Object { $_.LocalPath -eq $user.LocalPath } | Remove-CIMInstance -Verbose } Write-Host "$current profiles have been deleted" $newDiskspace = Get-FreeDiskSpace $ComputerName [int]$percentFreed = (($newDiskspace.'Free Space' - $diskspace.'Free Space') / $diskspace.'Total Space') * 100 $out = "Free Space on " + $computerName + ": " + $newDiskspace.'Free Space' + "GB/" + $newDiskspace.'Total Space' + 'GB' + " ($percentFreed% Freed)" Write-Host $out } }