Automatizzare Task di Windows con PowerShell: Un Esempio Pratico

Script PowerShell

PowerShell è lo strumento definitivo per automatizzare l'amministrazione di un sistema Windows. Vediamo un esempio pratico e utile: uno script che pulisce una cartella dai file temporanei troppo vecchi.

Lo Script di Pulizia

Questo script cerca tutti i file nella cartella Temp dell'utente, seleziona quelli non modificati da più di 30 giorni e li elimina, mostrando un riepilogo.

File: `pulisci_temp.ps1`

# --- CONFIGURAZIONE ---
$CartellaTemp = $env:TEMP
$GiorniVecchi = 30
$DataLimite = (Get-Date).AddDays(-$GiorniVecchi)

# --- ESECUZIONE ---
Write-Host "Cerco i file in $CartellaTemp più vecchi di $DataLimite..." -ForegroundColor Yellow

# Get-ChildItem (alias: gci, ls) ottiene i file
# Where-Object (?) li filtra
# Remove-Item (alias: rm) li elimina
$FileDaEliminare = Get-ChildItem -Path $CartellaTemp -Recurse -File | Where-Object { $_.LastWriteTime -lt $DataLimite }

if ($FileDaEliminare) {
    Write-Host "Trovati $($FileDaEliminare.Count) file da eliminare."
    
    foreach ($file in $FileDaEliminare) {
        Write-Host "Elimino: $($file.FullName)"
        Remove-Item -Path $file.FullName -Force
    }

    Write-Host "Pulizia completata con successo." -ForegroundColor Green
} else {
    Write-Host "Nessun file vecchio da eliminare." -ForegroundColor Green
}

# Per eseguire questo script, potrebbe essere necessario prima lanciare:
# Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Analisi dello Script

  • `$env:TEMP`: Accede a una variabile d'ambiente di sistema per ottenere il percorso della cartella Temp dell'utente corrente.
  • `(Get-Date).AddDays(-$GiorniVecchi)`: Calcola la data limite.
  • `Get-ChildItem -Path ... -Recurse -File`: Ottiene una lista di tutti i file (non le cartelle) all'interno della cartella Temp e di tutte le sue sottocartelle.
  • `| Where-Object { $_.LastWriteTime -lt $DataLimite }`: Filtra la lista, mantenendo solo i file la cui data di ultima modifica (`LastWriteTime`) è precedente alla data limite. Questo è un esempio perfetto di come si usano gli oggetti nella pipeline.
  • `foreach ($file in $FileDaEliminare)`: Itera sui file trovati ed esegue il comando di eliminazione `Remove-Item`.

Questo script può essere schedulato per essere eseguito automaticamente tramite l'Utilità di pianificazione (Task Scheduler) di Windows, mantenendo il sistema pulito senza alcun intervento manuale.

Hai bisogno di una soluzione su misura?

Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.

Richiedi una consulenza