У меня есть сценарий Powershell, который должен удалять элементы старше X дней. Не работает полностью. Он удаляет некоторые файлы, но не все файлы. Когда я запускаю сценарий без | Remove-Item -Force
, отображаются все файлы, соответствующие требованиям. Итак, я знаю, что инструкция where
работает.
Почему Remove-Item -Force
не удаляет все элементы, которые соответствуют требованиям, установленным в операторе where
, и как это можно исправить?
$deleteFiles = Get-Childitem $fullTargetPath -Recurse
| Where {$_.LastWriteTime -lt (Get-Date).AddDays(-10)} | Remove-Item -Force
1 ответ
Непосредственно перед «Remove-Item» добавьте «Foreach».
Так например:
$deleteFiles = Get-Childitem $fullTargetPath -Recurse |
Where {$_.LastWriteTime -lt (Get-Date).AddDays(-10)} |
Foreach { Remove-Item $_.FullName -Force}
WhatIf
показал, что действие имеет место, но на самом деле этого не произошло.
Похожие вопросы
Новые вопросы
powershell
PowerShell - это кроссплатформенная утилита командной строки и сценариев от Microsoft. Используйте этот тег только для вопросов о написании и выполнении сценариев PowerShell. Вопросы программирования, относящиеся к кроссплатформенной версии PowerShell Core (Windows, macOS и Linux), должны быть помечены [powershell-core]. Вопросы о системном администрировании следует задавать в случае сбоя суперпользователя или сервера.
What if: Performing operation "Remove File" on Target
для всех элементов, но они не удаляются из папки.Remove-Item -Force
прямо на одном из пропускаемых файлов.