La cache dei browser può occupare spazio prezioso sul disco e contenere dati temporanei potenzialmente inutili od obsoleti. In questa guida ti mostrerò come svuotarla in modo automatico utilizzando PowerShell, lo strumento di scripting avanzato integrato in Windows.

A cosa serve pulire la cache?
- Liberare spazio su disco
- Mantenere il sistema più veloce
- Migliorare la privacy cancellando tracce di navigazione
Browser supportati:
Lo script che andremo a usare gestisce automaticamente la pulizia della cache dei seguenti browser:
- Google Chrome
- Mozilla Firefox
- Microsoft Edge
- Internet Explorer
- Opera
- Yandex Browser
Il codice PowerShell:
Copia questo script e salvalo in formato .ps1. Apri Blocco Note o Visual Studio Code, incolla lo script e salvalo come svuota-cache.ps1
# Browser da chiudere prima della pulizia
$browserProcesses = @('chrome', 'firefox', 'msedge', 'iexplore', 'opera', 'yandex')
# Chiude i browser se attivi
foreach ($browser in $browserProcesses) {
Get-Process -Name $browser -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue
Write-Host "Chiuso il processo del browser: ${browser}"
}
# ----- MODIFICA IL NOME UTENTE QUI -----
$specificUser = "Cristian Gallo" # Sostituisci con il nome dell'utente desiderato
$userProfilePath = "C:\Users\$specificUser" # Percorso del profilo utente
Write-Host "Pulizia della cache per l'utente: ${specificUser}"
# Percorsi delle cache
$cachePaths = @{
'chrome' = 'AppData\Local\Google\Chrome\User Data'
'firefox' = 'AppData\Local\Mozilla\Firefox\Profiles'
'msedge' = 'AppData\Local\Microsoft\Edge\User Data'
'opera' = 'AppData\Roaming\Opera Software\Opera Stable'
'yandex' = 'AppData\Local\Yandex\YandexBrowser\User Data'
}
# Pulizia vera e propria
foreach ($browser in $cachePaths.Keys) {
$basePath = Join-Path -Path $userProfilePath -ChildPath $cachePaths[$browser]
# Verifica se il percorso base esiste
if (Test-Path $basePath) {
Write-Host "Trovato percorso di cache per ${browser}: $basePath"
# Gestione dei profili multipli (se applicabile)
if ($browser -eq 'firefox') {
# Scansiona tutte le cartelle dei profili di Firefox
$profileFolders = Get-ChildItem -Path $basePath -Directory
foreach ($profile in $profileFolders) {
$cacheFolder = Join-Path -Path $profile.FullName -ChildPath 'cache2'
if (Test-Path $cacheFolder) {
try {
Remove-Item -Path $cacheFolder -Recurse -Force
Write-Host "Cache di ${browser} rimossa per il profilo $($profile.Name) dell'utente ${specificUser}"
} catch {
Write-Host "Errore nella rimozione della cache di ${browser} per il profilo $($profile.Name) dell'utente ${specificUser}: $_"
}
} else {
Write-Host "La cartella cache2 di ${browser} è già vuota per il profilo $($profile.Name) dell'utente ${specificUser}"
}
}
} else {
# Rimozione diretta delle cartelle di cache per gli altri browser
$cacheFolders = @('Cache', 'GPUCache', 'Code Cache')
foreach ($folder in $cacheFolders) {
$cachePath = Join-Path -Path $basePath -ChildPath $folder
if (Test-Path $cachePath) {
try {
# Elimina il contenuto della cartella, inclusa Cache_Data
Get-ChildItem -Path $cachePath -Recurse | Remove-Item -Recurse -Force -ErrorAction Stop
Write-Host "Contenuto della cartella $folder di ${browser} rimosso per l'utente ${specificUser}"
} catch {
Write-Host "Errore nella rimozione del contenuto della cartella $folder di ${browser} per l'utente ${specificUser}: $_"
}
} else {
Write-Host "La cartella $folder di ${browser} è già vuota per l'utente ${specificUser}"
}
}
# Gestione esplicita della cartella Cache_Data
$cacheDataPath = Join-Path -Path $basePath -ChildPath 'Default\Cache\Cache_Data'
if (Test-Path $cacheDataPath) {
try {
Remove-Item -Path $cacheDataPath -Recurse -Force -ErrorAction Stop
Write-Host "Cartella Cache_Data di ${browser} rimossa per l'utente ${specificUser}"
} catch {
Write-Host "Errore nella rimozione della cartella Cache_Data di ${browser} per l'utente ${specificUser}: $_"
}
}
# Controllo post-eliminazione
if (Test-Path $cacheDataPath) {
Write-Host "ATTENZIONE: La cartella Cache_Data di ${browser} NON è stata eliminata per l'utente ${specificUser}"
} else {
Write-Host "La cartella Cache_Data di ${browser} è stata eliminata correttamente per l'utente ${specificUser}"
}
}
} else {
Write-Host "Percorso di cache di ${browser} non trovato per l'utente ${specificUser}"
}
}
Dove modificare il nome utente:
Variabile $specificUser
powershellCopia1$specificUser = "Cristian Gallo"# Sostituisci con il nome dell'utente desiderato
- Modifica il valore di questa variabile inserendo il nome dell’utente per cui vuoi eseguire la pulizia.
- Ad esempio, se vuoi eseguire lo script per un utente chiamato
Mario Rossi
, sostituisci"Cristian Gallo"
con"Mario Rossi"
.
Variabile $userProfilePath
:
powershell$userProfilePath = "C:\Users\$specificUser"
Come funziona:
- Quando modifichi il valore di
$specificUser
, lo script calcola automaticamente il percorso del profilo utente (C:\Users\<nome_utente>
) e lo utilizza per cercare e pulire le cartelle di cache. - Tutti i messaggi nel terminale includono il nome dell’utente specificato in
$specificUser
, rendendo chiaro per quale utente sta operando lo script.
Esegui come amministratore:
- Clicca col tasto destro sul file
.ps1
- Seleziona Esegui con PowerShell
Soluzione rapida per eseguire lo script:
Oppure, apri PowerShell come amministratore e lancia:
powershell.exe -ExecutionPolicy Bypass -File "C:\Users\Cristian Gallo\Desktop\svuota-cache.ps1"

Se necessario, abilita temporaneamente l’esecuzione degli script con:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Ulteriori informazioni:
Con pochi passaggi, puoi svuotare la cache dei browser più comuni in maniera sicura e automatizzata. PowerShell è un ottimo alleato per chi vuole mantenere il sistema Windows pulito e performante, riducendo al minimo le operazioni manuali.