На сервере под управлением Windows 2012 R2, версия
PS C:\Users\admin> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
Мне нужно удалить файлы старше 180 дней в папке с большим количеством подпапок.Это довольно просто, НО не тогда, когда существуют сотни тысяч файлов и папка размером около 800 ГБ.Использование Get-ChildItem, который сначала рекурсивно читает все файлы при проверке даты, а затем начинает их удалять ... ну, это занимает вечно, а серверу в конце не хватило памяти.
Итак - любой, кто хочет помочь мне ускорить мой код, текущая скорость которого такова (часть удаления)
...
...
foreach ($i in Get-ChildItem $TargetFolder -recurse -exclude
$skipFilePatterns | where { ! $i.PSIsContainer }) {
if (! $i.PSIsContainer -and $i.LastWriteTime -lt ($(Get-Date).AddDays(-$keepForDays))) {
# Add -WhatIf to test the script, remove it when confirmed
$timeStamp = $i.LastWriteTime
$fullName = $i.FullName
$log.Info("Deleting: $fullName with timestamp (LastWriteTime): $timeStamp")
Remove-Item $i.FullName -force -ErrorVariable errVar -ErrorAction SilentlyContinue
...
...