11/01/2008
Eliminare i file più vecchi di un certo numero di giorni
Come molti di voi ben sanno, la maggior parte degli applicativi server memorizza i propri log degli eventi all'interno del file system, tipicamente utilizzando un file diverso al giorno (oppure all'ora). IIS, ad esempio, memorizza di default i propri log all'interno di un file, diverso ogni giorno, nella cartella %SystemRoot%\system32\Logfiles.
Chi svolge un'attività di manutenzione di su file di questo tipo spesso ha la necessità di spostare (oppure di rimuovere, nel caso in cui le informazioni vengano analizzate e memorizzate su supporti alternativi) i file in base alla data a cui risale l'ultima scrittura sul file.
Recuperare i file in base a criteri di questo tipo è davvero molto semplice con PowerShell. Ecco, ad esempio, come recuperare i file più vecchi di trenta giorni dalla cartella corrente:
Get-ChildItem |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }
Ed ecco come, mettendo in pipe un ulteriore cmdlet, sia possibile spostare gli elementi corrispondenti al criterio nella cartella W:\Archive:
Get-ChildItem |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Move-Item -Destination 'W:\Archive' -WhatIf
Si noti la presenza del parametro -WhatIf del cmdlet Move-Item, che si limita a riportare a video la descrizione dell'effetto del comando, senza realmente eseguirlo.