PowerShell - Scripting

Pulire Cache, Cookie e Cronologia di Google Chrome con PowerShell

Nel corso dell’utilizzo quotidiano del browser, Google Chrome accumula una grande quantità di dati locali: cache, cookie e cronologia di navigazione. Questi elementi hanno una funzione utile, velocizzare il caricamento delle pagine, mantenere le sessioni attive e migliorare l’esperienza utente, ma al tempo stesso possono diventare un problema.

Questi i principali motivi per cui è consigliabile una pulizia periodica

  • Prestazioni degradate: una cache troppo grande può rallentare il browser
  • Problemi di privacy: i cookie possono tracciare le abitudini di navigazione
  • Errori di caricamento: file corrotti in cache possono causare malfunzionamenti

Tuttavia, una cancellazione indiscriminata può risultare controproducente. Eliminare tutti i cookie, ad esempio, comporta la perdita delle sessioni di login, mentre la rimozione completa dei dati può influire sull’esperienza utente.

Per questo motivo, una soluzione più evoluta consiste nel cancellare solo i dati più vecchi di un certo numero di giorni, mantenendo quelli recenti. Questo approccio bilancia prestazioni, sicurezza e continuità operativa.

Script PowerShell per la pulizia

Di seguito uno script PowerShell progettato per:

  • Eliminare cache, cookie e cronologia più vecchi di X giorni
  • Mantenere i dati recenti
  • Non toccare i segnalibri (Bookmarks)
  • Accettare il numero di giorni come parametro
param (
    [int]$GiorniDaConservare = 7
)

# Encoding UTF-8 per evitare problemi con accenti
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

Write-Host "=== Pulizia Google Chrome ===" -ForegroundColor Cyan
Write-Host "Giorni da conservare: $GiorniDaConservare" -ForegroundColor Yellow

# Chiusura processi Chrome
Write-Host "Chiusura processi Chrome..." -ForegroundColor Yellow
Get-Process chrome -ErrorAction SilentlyContinue | Stop-Process -Force
Start-Sleep -Seconds 2

# Percorso Chrome
$ChromePath = "$env:LOCALAPPDATA\Google\Chrome\User Data\Default"

if (!(Test-Path $ChromePath)) {
    Write-Host "Percorso Chrome non trovato!" -ForegroundColor Red
    exit
}

# Funzione pulizia file vecchi
function CancellaVecchiFile($Path, $Giorni) {
    if (Test-Path $Path) {
        try {
            $files = Get-ChildItem -Path $Path -Recurse -Force -ErrorAction SilentlyContinue

            $oldFiles = $files | Where-Object {
                $_.LastWriteTime -lt (Get-Date).AddDays(-$Giorni)
            }

            if ($oldFiles.Count -gt 0) {
                $oldFiles | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
                Write-Host "Puliti $($oldFiles.Count) file vecchi in: $Path" -ForegroundColor Green
            } else {
                Write-Host "Nessun file vecchio da eliminare in: $Path" -ForegroundColor DarkGray
            }
        }
        catch {
            Write-Host "Errore durante la pulizia di $Path" -ForegroundColor Red
        }
    }
}

# Pulizia cache
Write-Host "`n[Cache]" -ForegroundColor Cyan
$CachePath = Join-Path $ChromePath "Cache"
CancellaVecchiFile -Path $CachePath -Giorni $GiorniDaConservare

# Pulizia Cookies
Write-Host "`n[Cookies]" -ForegroundColor Cyan
$CookiesPath = Join-Path $ChromePath "Cookies"

if (Test-Path $CookiesPath) {
    try {
        Remove-Item $CookiesPath -Force -ErrorAction SilentlyContinue
        Write-Host "File Cookies rimosso." -ForegroundColor Green
    }
    catch {
        Write-Host "Impossibile rimuovere Cookies (probabilmente in uso)" -ForegroundColor Red
    }
} else {
    Write-Host "File Cookies non trovato." -ForegroundColor DarkGray
}

# Pulizia cronologia
Write-Host "`n[Cronologia]" -ForegroundColor Cyan

$HistoryFiles = @("History", "History Provider Cache")

foreach ($file in $HistoryFiles) {
    $path = Join-Path $ChromePath $file

    if (Test-Path $path) {
        try {
            Remove-Item $path -Force -ErrorAction SilentlyContinue
            Write-Host "$file rimosso." -ForegroundColor Green
        }
        catch {
            Write-Host "Errore rimozione $file" -ForegroundColor Red
        }
    } else {
        Write-Host "$file non trovato." -ForegroundColor DarkGray
    }
}

Write-Host "`nPulizia completata con successo!" -ForegroundColor Cyan

Lo script consente di definire il numero di giorni da conservare, rendendolo riutilizzabile in diversi scenari. Se non viene specificato nessun parametro viene utilizzato un valore di default pari a 7 giorni.

La funzione “CancellaVecchiFile” scansiona file e sottocartelle, filtra per data di modifica ed elimina solo ciò che è più vecchio della soglia specificata. All’interno della funzione, -ErrorAction SilentlyContinue, previene interruzioni dello script in caso di file bloccati o non accessibili.

Questi sono alcuni esempio di utilizzo

# Default (7 giorni)
.\PulisciChromeParam.ps1

# Mantieni ultimi 15 giorni
.\PulisciChromeParam.ps1 -GiorniDaConservare 15

# Mantieni ultimi 30 giorni
.\PulisciChromeParam.ps1 -GiorniDaConservare 30

# Cancella tutto
.\PulisciChromeParam.ps1 -GiorniDaConservare 0

Questo script può essere facilmente utilizzato con il Task Scheduler di Windows o script di logon/logoff. Eseguito settimanalmente o mensilmente, garantisce un sistema sempre pulito senza intervento manuale.