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:

  1. Qué es -lt Y lo que es -le Y lo que es -gt?¿Cuándo usaría cada uno?
  2. El script anterior sólo elimina archivos... ¿cómo puedo eliminar carpetas también?
  3. El guión anterior se basa en LastWriteTime ..qué pasa CreatedDate o LastAccessed ¿tiempo?
¿Fue útil?

Solución

Ok, aquí vamos:

  1. -lt, -le y -gt son operadores de comparación. Significa menos que, le significa menos o igual que, y gt significa más que.

  2. 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

  3. 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top