Script de Powershell para eliminar archivos antiguos
-
06-07-2019 - |
Pregunta
El siguiente script eliminará archivos en un directorio con nombre que tengan más de 14 días y los escribirá en un .txt
con la ruta y los archivos eliminados (encontré este script en otro foro... crédito a 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
Tengo 3 preguntas:
- Qué es
-lt
Y lo que es-le
Y lo que es-gt
?¿Cuándo usaría cada uno? - El script anterior sólo elimina archivos... ¿cómo puedo eliminar carpetas también?
- El guión anterior se basa en
LastWriteTime
..qué pasaCreatedDate
oLastAccessed
¿tiempo?
Solución
Ok, aquí vamos:
-
-lt, -le y -gt son operadores de comparación. Significa menos que, le significa menos o igual que, y gt significa más que.
-
Eliminar carpetas puede ser peligroso si no tienes control sobre lo que hay dentro. Es posible que tenga problemas y tenga en cuenta la pérdida de datos. Puede eliminar carpetas usando el mismo cmdlet Remove-Item, simplemente jugando con sus opciones. Consulte este artículo, tiene excelentes instrucciones sobre cómo lograrlo: http://searchwindowsserver.techtarget.com/generic/0,295582,sid68_gci1275887 , 00.html
-
Por lo general, para los archivos que han estado allí por un tiempo, LastWriteTime y CreatedDate y LastAccessTime serán los mismos. En un archivo de solo lectura, como una DLL, LastAccessTime podría ser más nuevo que los otros dos. En un archivo de lectura / escritura (como el archivo pst de Outlook), WriteTime y AccessTime podrían ser iguales. Básicamente, eso depende totalmente de ti. Funcionan de la misma manera que LastWriteTime. ¡Considere la naturaleza de los archivos que desea eliminar y continúe!
Otros consejos
-lt -le y -gt son operadores de comparación en lugar de < ;, < =, > ;. Escriba & Quot; ayuda about_Comparison_Operators & Quot; en el símbolo del sistema de PowerShell para obtener detalles sobre cada tipo y la razón para usarlos en lugar de los que conoce de otros idiomas.
Para eliminar carpetas también debe eliminar la parte ! $. PsIsContainer AND del filtro where. Esto elimina todos los elementos de las listas que son directorios.
No estoy seguro de lo que buscas con la pregunta " ¿qué pasa con CreatedDate o LastAccessed time " pero simplemente puede usar estas propiedades de manera similar a LastWriteTime, pero debe decidir la lógica que está tratando de lograr.