Я бы выбрал другую стратегию, начиная с [int](Get-Date).DayOfWeek
(или с того же номера (Get-Date).DayOfWeek.value__
). Например, сегодня (2019-10-31
) вы обрабатываете каждого 4th
, 11th
, 18th
,… пользователя (конечно, с нуля):
(Get-Date).DayOfWeek # Thursday
[int](Get-Date).DayOfWeek # 4
for ($i =[int](Get-Date).DayOfWeek; $i -lt $users.Count; $i+=7) {
# process user $users[$i]
}
В следующем фрагменте кода показанпример: определяет фиктивный массив пользователей и перечисляет их обработку каждый день недели (0..6
):
$users=65..(65+23) | ForEach-Object {
([string][char]$_) +([string][char]$_).ToLower()
}
0..6 | ForEach-Object {
'{0,10}: {1}' -f (
[System.Enum]::GetNames('System.DayOfWeek')[$_]),
( $(for ($i =$_; $i -lt $users.Count; $i+=7) {$users[$i]}) -join ', ' )
}
Результат:
D:\PShell\SO\58640469.ps1
Sunday: Aa, Hh, Oo, Vv
Monday: Bb, Ii, Pp, Ww
Tuesday: Cc, Jj, Qq, Xx
Wednesday: Dd, Kk, Rr
Thursday: Ee, Ll, Ss
Friday: Ff, Mm, Tt
Saturday: Gg, Nn, Uu