Necesito eliminar registros con *.log.*
salidas de extensión en la subcarpeta llamada SessLogs
, WorkflowLogs
en el directorio raízd:\software\Bil
Del mismo modo, tengo las carpetas SessLogs
, WorkflowLogs
en muchos subdirectorios con nombre diferentes Bil
, como lograr esto. Tengo un script de muestra creado como se muestra a continuación, pero necesita alguna actualización.
Estructura de directorio por ejemplo
Software -> Wel -> Software "" SessLogs "y" WorkflowLogs "
-> Gim -> Software" "SessLogs" y "WorkflowLogs"
-> Ren -> "" SessLogs "y" WorkflowLogs "
$Path = "D:\software"
$Daysback = "-30"
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
get-childitem "D:\software*" -include "*.*" -force -recurse |where-object { (-not $_.PSIsContainer) -and ($_.creationtime -lt $DatetoDelete) } |remove-item -whatif
Respuestas:
No estoy seguro si entiendo su requerimiento correctamente, pero si lo hago, ya lo tenía. Lo que cambié:
Get-Childitem
conrecurse
usted, no necesita agregar el Asterisco (*) al final de la ruta de búsqueda.(-not $_.PSIsContainer)
si sabe que ninguna de sus carpetas contiene la cadena ".log". - pero puedes quedarte para estar seguro.Por lo tanto, esto debería hacer lo siguiente: Obtener todos los elementos en D: \ Software y todas sus subcarpetas que contienen la cadena ".log". en el nombre, que no son directorios, y que se crearon hace 30 días o antes, luego bórrelos.
fuente