Domanda

Il seguente script eliminerà i file in una directory denominata che sono più vecchi di 14 giorni e scriveranno in un .txt con il percorso e i file eliminati (trovato questo script su un altro forum..credito per shay):

dir c:\tmp -recurse | where {!$_.PsIsContainer -AND $_.lastWriteTime -lt (Get-Date).AddDays(-14) } | select LastWriteTime,@{n="Path";e={convert-path $_.PSPath}} | tee c:\oldFiles.txt | Remove-Item -force -whatif

Ho 3 domande:

  1. Che cos'è -lt e che cos'è -le e che cos'è -gt? Quando dovrei usarli ciascuno
  2. Lo script sopra elimina solo il file ... come posso eliminare anche le cartelle?
  3. Lo script sopra è basato su LastWriteTime .. che dire di CreatedDate o LastAccessed ora?
È stato utile?

Soluzione

Ok, eccoci qui:

  1. -lt, -le e -gt sono operatori di confronto. Significa meno di, le significa minore o uguale di e gt significa maggiore di.

  2. La rimozione delle cartelle può diventare pericolosa se non si ha il controllo su ciò che vi si trova dentro. Potresti avere problemi e tenere presente la perdita di dati. È possibile eliminare le cartelle utilizzando lo stesso cmdlet Rimuovi elemento, semplicemente giocando con le sue opzioni. Consulta questo articolo, contiene ottime istruzioni su come raggiungerlo: http://searchwindowsserver.techtarget.com/generic/0,295582,sid68_gci1275887 , 00.html

  3. Di solito, per i file che sono rimasti lì per un po ', LastWriteTime e CreatedDate e LastAccessTime saranno gli stessi. In un file di sola lettura, come una DLL, LastAccessTime potrebbe essere più recente delle altre due. In un file di lettura / scrittura (come il file pst di Outlook) WriteTime e AccessTime potrebbero essere gli stessi. Fondamentalmente, dipende da te. Funzionano allo stesso modo di LastWriteTime. Considera la natura dei file che desideri eliminare e vai avanti!

Altri suggerimenti

-lt -le e -gt sono operatori di confronto anziché < ;, < =, > ;. Digita & Quot; help about_Comparison_Operators & Quot; al prompt dei comandi di PowerShell per i dettagli su ciascun tipo e il motivo dell'utilizzo di questi invece di quelli che si conoscono da altre lingue.

Per eliminare anche le cartelle è necessario rimuovere la parte ! $. PsIsContainer AND del filtro where. Ciò sta rimuovendo tutti gli elementi dagli elenchi che sono directory.

Non sono sicuro di cosa stai cercando con la domanda " che dire di CreatedDate o LastAccessed time " ma puoi semplicemente usare queste proprietà in modo simile a LastWriteTime ma devi decidere la logica che stai cercando di raggiungere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top