<# .SYNOPSIS Cleanup temp files, cookies (Chromium-based browsers), Recycle Bin, and apply basic performance tweaks. .NOTES - Run as Administrator. - Review and customize paths and tweaks before running. - Doesn't uninstall apps or modify registry keys beyond safe performance tweaks shown. #> #region Helper functions function Info($txt){ Write-Host "[*] $txt" -ForegroundColor Cyan } function Warn($txt){ Write-Host "[!] $txt" -ForegroundColor Yellow } function Err($txt){ Write-Host "[X] $txt" -ForegroundColor Red } #endregion if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Err "Script must be run as Administrator. Exiting." exit 1 } # Confirm $consent = Read-Host "This will delete temp files, cookies (Chromium profiles) and apply performance tweaks. Continue? (Y/N)" if ($consent -notin 'Y','y') { Info "Aborted by user."; exit 0 } # Paths to clean (expand as needed) $pathsToClean = @( "$env:TEMP\*", "C:\Windows\Temp\*", "$env:LOCALAPPDATA\Temp\*", "$env:USERPROFILE\AppData\Local\Microsoft\Windows\INetCache\*", "$env:USERPROFILE\AppData\Local\Microsoft\Windows\INetCookies\*" ) # Function: delete files & folders safely function SafeRemove($pattern){ try { $items = Get-ChildItem -Path $pattern -Force -ErrorAction SilentlyContinue if ($items) { foreach ($it in $items) { try { if ($it.PSIsContainer) { Remove-Item -LiteralPath $it.FullName -Recurse -Force -ErrorAction Stop } else { Remove-Item -LiteralPath $it.FullName -Force -ErrorAction Stop } } catch { # skip locked files } } Info "Cleared: $pattern" } else { Info "No items found: $pattern" } } catch { Warn "Unable to enumerate path: $pattern" } } # Clear listed temp paths foreach ($p in $pathsToClean) { SafeRemove $p } # Clear Recycle Bin try { $shell = New-Object -ComObject Shell.Application $shell.Namespace(0xA).Items() | ForEach-Object { $shell.Namespace(0xA).ParseName($_.Name).InvokeVerb("delete") } Info "Recycle Bin emptied." } catch { # fallback using Storage APIs (PowerShell 7+ may use) try { Clear-RecycleBin -Force -ErrorAction Stop Info "Recycle Bin emptied (fallback)." } catch { Warn "Could not empty Recycle Bin." } } # Clear prefetch (optional — Windows manages this; comment out if unsure) try { SafeRemove "C:\Windows\Prefetch\*" Info "Prefetch cleared (Windows will rebuild as needed)." } catch { } # Clear Chromium-based browser cookies/cache for standard profile locations $chromiumRoots = @( "$env:LOCALAPPDATA\Google\Chrome\User Data", "$env:LOCALAPPDATA\Microsoft\Edge\User Data", "$env:LOCALAPPDATA\BraveSoftware\Brave-Browser\User Data" ) foreach ($root in $chromiumRoots) { if (Test-Path $root) { Get-ChildItem -Path $root -Directory -ErrorAction SilentlyContinue | ForEach-Object { $profile = $_.FullName # Clear "Cache", "Code Cache", "GPUCache" @("Cache","GPUCache","Code Cache","Service Worker\\CacheStorage","Storage\\extensiones","CacheStorage") | ForEach-Object { $p = Join-Path $profile $_ if (Test-Path $p) { SafeRemove (Join-Path $p "*") } } # Remove Cookies SQLite file (this will sign you out) $cookieFile = Join-Path $profile "Cookies" if (Test-Path $cookieFile) { try { Remove-Item -LiteralPath $cookieFile -Force -ErrorAction SilentlyContinue; Info "Removed Cookies file in $profile" } catch {} } } } } # Trim pagefile and temp system files by invoking garbage collection style operations (light) try { # Empty Standby list (requires RAMMap Sysinternals or Windows 10+ command) if (Get-Command "Clear-FileCache" -ErrorAction SilentlyContinue) { Clear-FileCache } } catch { } # Basic performance tweaks (safe, reversible) # 1) Set Power Plan to High performance (or Ultimate Performance if available) try { $high = (Get-CimInstance -Namespace root\cimv2\power -ClassName Win32_PowerPlan | Where-Object {$_.ElementName -match "High performance|Ultimate Performance"} | Select-Object -First 1) if ($high) { $high.Activate() | Out-Null Info "Power plan set to: $($high.ElementName)" } else { Warn "High/Ultimate power plan not found." } } catch { Warn "Could not change power plan." } # 2) Adjust visual effects: set to "Adjust for best performance" try { $regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" New-ItemProperty -Path $regPath -Name VisualFXSetting -Value 2 -PropertyType DWord -Force | Out-Null # Also adjust performance options equivalent (HKCU\Control Panel\Performance\VisualEffects) $perfReg = "HKCU:\Control Panel\Performance\" Set-ItemProperty -Path $perfReg -Name "VisualFXSetting" -Value 2 -ErrorAction SilentlyContinue Info "Visual effects set to 'best performance' (may require sign-out to fully apply)." } catch { Warn "Could not change visual effects setting." } # 3) Disable Search Indexing service to reduce I/O (optional and reversible) $disableIndexing = Read-Host "Disable Windows Search indexing service for performance? (Y/N)" if ($disableIndexing -in 'Y','y') { try { Stop-Service -Name "WSearch" -Force -ErrorAction SilentlyContinue Set-Service -Name "WSearch" -StartupType Disabled -ErrorAction SilentlyContinue Info "Windows Search service stopped and disabled." } catch { Warn "Could not change Windows Search service." } } # 4) Enable NTFS short name/case options: ensure write caching (default behavior); skipping risky registry changes. # Run Disk Cleanup (cleanmgr) for system files (prompts UI) try { Start-Process -FilePath "cleanmgr.exe" -ArgumentList "/sagerun:1" -WindowStyle Hidden -ErrorAction SilentlyContinue Info "Triggered Disk Cleanup (cleanmgr)." } catch {} # Final: run Trim on SSDs (optimize) try { Optimize-Volume -DriveLetter C -ReTrim -Verbose -ErrorAction SilentlyContinue | Out-Null Info "Issued retrim (SSD TRIM) on C: (if supported)." } catch { } Info "Finished. Some changes may require sign-out/reboot to take full effect."