Com pequenas alterações, envolver o loop em outro loop for deve fazer o truque - por exemplo:
for ($i = 0; $i -lt $folderItems.Count; $i += 5) {
$items = $folderItems[$i..($i+4)]
foreach ($item in $items) {
Write-Verbose "Modifying [$($item.FullName)]"
# Modify LastWriteTime here
}
Write-Host "Modified [$($items.Count)] files. " -NoNewline
Read-Host -Prompt 'Please press any key to continue...'
}
Isso define $i para zero, faz um loop enquanto $i é menor que a quantidade de itens em $folderItems (a Contagem) e incrementa $i em 5 cada loop.
Em seguida, ele obtém itens em $folderItems com um índice de $i a $i+4 e os processa.
Em seguida, ele grava algum texto e usa Read-Host para aguardar a entrada do usuário antes de continuar.
No entanto, você deve saber que o seu loop original não modifica o LastWriteTime do arquivo - em vez disso, modifica a propriedade do PSObject que você armazenou em $folderItems .
Você provavelmente deve usar Set-ItemProperty ou ler o comentário feito por romeo-ninov sobre emulação de touch .
Exemplo:
Set-ItemProperty -Path $itemPath -Name LastWriteTime -Value $currentTime
Você pode até mesmo substituir o foreach ($item in $items) {...} simplesmente por canalizar $items em Set-ItemProperty !
Exemplo:
$items = $folderItems[$i..($i+4)]
$items | Set-ItemProperty -Name LastWriteTime -Value $currentTime