ClearCache.ps1
|
<#
.SYNOPSIS Clears various caches on the system and empties the Recycle Bin. .DESCRIPTION Prompts the user for admin priveledges. Creates a restore point before making any changes to the device. Creats a log file and path, if one isnt present. Identifies if the system is Windows, Mac or Linux then clears temporary files and caches based on system. Empties recycle bin to free up disk space. Self-destructs once the process has been complete. #> if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { # If not running as administrator, re-launch the script with administrative privileges Start-Process -FilePath "powershell" -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs exit } Read-Host -p "Press 'ENTER' to continue" function Backup { $date = Get-Date Checkpoint-Computer -Description $date -RestorePointType MODIFY_SETTINGS } Backup function ClearCache { [CmdletBinding()] param ( [string[]] $windowsPaths = @( "$env:LOCALAPPDATA/Temp/*", "$env:SystemRoot/Temp/*", "$env:LOCALAPPDATA/Microsoft/Windows/Explorer/*", "$env:APPDATA/Microsoft/Windows/Recent/*", "$env:SystemRoot/prefetch/*", "$env:SystemRoot/SoftwareDistribution/*", "$env:LOCALAPPDATA/Microsoft/Windows/INetCache/*", "$env:APPDATA/Microsoft/Windows/Cookies/*", "$env:LOCALAPPDATA/Microsoft/Edge/User Data/Default/Cache/Cache_Data/*", "$env:LOCALAPPDATA/Microsoft/Edge/User Data/Default/Cache/Cookies/*", "$env:LOCALAPPDATA/Google/Chrome/User Data/Default/Cache/*", "$env:LOCALAPPDATA/Google/Chrome/User Data/Default/Cookies/*", "$env:LOCALAPPDATA/Mozilla/Firefox/Profiles/aieex4lw.default/cache2/*", "$env:LOCALAPPDATA/Mozilla/Firefox/Profiles/aieex4lw.default/cookies.sqlite/*", "$env:LOCALAPPDATA/Packages/Microsoft.WindowsStore_8wekyb3d8bbwe/LocalState/Cache/*", "$env:LOCALAPPDATA/BraveSoftware/Brave-Browser/User Data/Default/Cache/Cache_Data/*", "$env:APPDATA/Opera Software/Opera Stable/Cache/*", "$env:APPDATA/Opera Software/Opera Stable/Cookies/*" ), [string[]] $darwinPaths = @( "/tmp/*", "/var/folders/...", "~/Library/Application Support/Google/Chrome/Default/Cache/*", "~/Library/Application Support/Google/Chrome/Default/Cookies/*", "~/Library/Application Support/Firefox/Profiles/aieex4lw.default/cache2/*", "~/Library/Application Support/Firefox/Profiles/aieex4lw.default/cookies.sqlite", "~/Library/Application Support/BraveSoftware/Brave-Browser/Default/Cache/Cache_Data/*", "~/Library/Application Support/com.operasoftware.Opera/Cache/*", "~/Library/Application Support/com.operasoftware.Opera/Cookies/*" ), [string[]] $linuxPaths = @( "/tmp/*", "/var/tmp/*", "~/.cache/google-chrome/Default/Cache/*", "~/.config/google-chrome/Default/Cookies/*", "~/.mozilla/firefox/aieex4lw.default/cache2/*", "~/.mozilla/firefox/aieex4lw.default/cookies.sqlite", "~/.config/BraveSoftware/Brave-Browser/Default/Cache/Cache_Data/*", "~/.config/opera/Opera Stable/Cache/*", "~/.config/opera/Opera Stable/Cookies/*" ), [string] $logPath = "$env:USERPROFILE/Documents/Logs/CC.log" ) $ErrorActionPreference = "SilentlyContinue" $logsDir = Split-Path -Path $logPath if (-not (Test-Path -Path $logsDir -PathType Container)) { New-Item -Path $logsDir -ItemType Directory -Force } $isWindows = $env:OS -like '*Windows_NT*' $isDarwin = $env:OS -like '*Darwin*' $isLinux = $env:OS -like '*Linux*' try { if ($isWindows) { foreach ($path in $windowsPaths) { Remove-Item -Path $path -Force -Recurse } Clear-RecycleBin -Force } elseif ($isDarwin) { foreach ($path in $darwinPaths) { Remove-Item -Path $path -Force -Recurse } } elseif ($isLinux) { foreach ($path in $linuxPaths) { Remove-Item -Path $path -Force -Recurse } } else { Write-Output "Unsupported operating system." } $successMessage = "Caches cleared successfully on $currentDate" Write-Output $successMessage if ($logPath) { $successMessage | Out-File -Append -FilePath $logPath } } catch { $errorMessage = "Error: $_" Write-Output $errorMessage -ForegroundColor Red if ($logPath) { $errorMessage | Out-File -Append -FilePath $logPath } } } ClearCache $scriptPath = $MyInvocation.MyCommand.Path function selfDestruct { Start-Sleep -Seconds 5 Remove-Item -Path $scriptPath -Force } selfDestruct |