Come svuotare la cache su Windows con Powershell

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.

Lascia un commento