Скрипт Powershell для удаления старых файлов
-
06-07-2019 - |
Вопрос
Следующий скрипт удалит файлы в именованном каталоге старше 14 дней и запишет в .txt
путь с удаленными файлами (нашёл этот скрипт на другом форуме .. кредит для шей):
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
У меня есть 3 вопроса:
<Ол>-lt
, а что -le
, а что -gt
? Когда я буду использовать каждый из них LastWriteTime
.. а как насчет CreatedDate
или LastAccessed
времени? Решение
Хорошо, поехали:
<Ол>-lt, -le и -gt являются операторами сравнения. lt означает меньше чем, le означает меньше или равно чем, а gt означает больше чем.
Удаление папок может стать опасным, если у вас нет контроля над тем, что в нем находится. У вас могут быть проблемы и, пожалуйста, помните о потере данных. Вы можете удалять папки, используя тот же командлет Remove-Item, просто играя с его параметрами. Проверьте эту статью, в ней есть отличные инструкции о том, как этого добиться: http://searchwindowsserver.techtarget.com/generic/0,295582,sid68_gci1275887 , 00.html р>
Обычно для файлов, которые находились там некоторое время, LastWriteTime и CreatedDate и LastAccessTime будут одинаковыми. В файле только для чтения, таком как DLL, LastAccessTime может быть новее двух других. В файле для чтения / записи (например, в pst-файле outlook) WriteTime и AccessTime могут быть одинаковыми. По сути, это полностью ваше дело. Они работают так же, как LastWriteTime. Подумайте о природе файлов, которые вы хотите удалить, и продолжайте!
Другие советы
-lt -le и -gt являются операторами сравнения вместо < ;, < =, > ;. Введите & Quot; help about_Comparison_Operators & Quot; в командной строке powershell для получения подробной информации о каждом типе и причинах их использования вместо тех, с которыми вы знакомы по другим языкам.
Чтобы также удалить папки, вам нужно удалить часть ! $. PsIsContainer AND из фильтра where. Это удаляет все элементы из списков, которые являются каталогами.
Я не уверен, что вы ищете после вопроса " как насчет CreatedDate или LastAccessed time " но вы можете просто использовать эти свойства аналогично LastWriteTime, но вам нужно определиться с логикой, которую вы пытаетесь достичь.