2013-12-17 3 views
1

У меня есть сценарий Powershell, который должен удалять элементы, возраст которых составляет X дней. Он не работает полностью. Он удаляет некоторые файлы, но не все файлы. Когда я запускаю скрипт без | Remove-Item -Force, отображаются все файлы, соответствующие требованиям. Итак, я знаю, что инструкция where работает.Powershell Remove-Item не удаляет все элементы

Почему Remove-Item -Force не удаляет все элементы, соответствующие установленным требованиям, оператору where и как его можно исправить?

$deleteFiles = Get-Childitem $fullTargetPath -Recurse 
| Where {$_.LastWriteTime -lt (Get-Date).AddDays(-10)} | Remove-Item -Force 
+0

пожалуйста, попробуйте разместить -whatif параметр после удаления-элемента, чем вы видите, что действие. – RayofCommand

+0

'Что делать: Выполнение операции« Удалить файл »в« Целевом »на всех элементах, но они не удаляются из папки. –

+0

Получены ли ошибки для файлов, которые он пропускает? –

ответ

1

Перед тем, как «Удалить элемент» добавить «Foreach».

Так, например:

$deleteFiles = Get-Childitem $fullTargetPath -Recurse | 
    Where {$_.LastWriteTime -lt (Get-Date).AddDays(-10)} | 
    Foreach { Remove-Item $_.FullName -Force} 
+1

Это, похоже, трюк! но я все еще путаюсь, почему ваше решение сработало, а мое - нет. «WhatIf» показал, что действие происходит, но на самом деле этого никогда не было. –

Смежные вопросы