Você pode adicionar uma cláusula where adicional para ignorar pastas como esta:
Where-Object{!($_.PSIsContainer)}
No trecho de código acima;
-
!
significa não, -
$_
significa o valor atual do objeto no canal, -
PSIsContainer
é uma propriedade do objeto atual que retornatrue
oufalse
dependendo se é uma pasta ou não.
Portanto, !($_.PSIsContainer)
significa que o valor atual do objeto no pipe não é uma pasta,
que é avaliado por Where-Object{}
Então o seu script seria assim:
$TargetFolder = “C:\Temp\ifc\”
$NumberRange = "-1"
Get-ChildItem $TargetFolder -Recurse | Where-Object{!($_.PSIsContainer)} | Where {$_.lastwritetime -lt (Get-Date).AddHours($NumberRange)} | Remove-Item
Outra abordagem é ignorar as pastas na chamada para Get-ChildItem
usando o parâmetro -File
como este:
$TargetFolder = “C:\Temp\ifc\”
$NumberRange = "-1"
Get-ChildItem $TargetFolder -File -Recurse | Where {$_.lastwritetime -lt (Get-Date).AddHours($NumberRange)} | Remove-Item
Essa abordagem tem a vantagem de retornar os objetos de arquivo em um ponto mais rápido no ciclo de execução e tornar a linha de comando mais curta. Dependendo do número de objetos no caminho, isso também pode ter uma melhoria de velocidade mensurável.