Powershell 根据一周中的哪一天拆分数组最简单?

Powershell 根据一周中的哪一天拆分数组最简单?,powershell,Powershell,我有一组用户,我希望每周每天都在powershell脚本中处理其中的一部分 要获取阵列的前1/7,我可以使用以下方法: Foreach($Users中的用户[0..($Users.count/7)]) 这是我想在周一处理的部分。是否有一种简单的编码方法,以便在脚本在星期一运行时处理第一个第七个,在脚本在星期二运行时处理第二个第七个,依此类推?既然.Net有一个很好的索引,让我们用索引模来利用它 假设您不关心处理哪些元素,只要处理了大约1/7的元素,我们就可以处理每N个单元。n通过取工作日的模数来

我有一组用户,我希望每周每天都在powershell脚本中处理其中的一部分

要获取阵列的前1/7,我可以使用以下方法:

Foreach($Users中的用户[0..($Users.count/7)])

这是我想在周一处理的部分。是否有一种简单的编码方法,以便在脚本在星期一运行时处理第一个第七个,在脚本在星期二运行时处理第二个第七个,依此类推?

既然.Net有一个很好的索引,让我们用索引模来利用它

假设您不关心处理哪些元素,只要处理了大约1/7的元素,我们就可以处理每N个单元。n通过取工作日的模数来拾取。例如,让我们处理星期四输入的单元格。因为星期四枚举值是4,通过取索引和星期四的模,我们将每四个元素选取一个。这样,

function do_stuff {
  param([DayOfWeek]$dd, $item)
  $daytoday=(get-date).DayOfWeek
  if($dd -ne $daytoday) { "$dd is not $daytoday, not processing!"} 
  else { write-host "doing $dd stuff for $item" }
}
# Sample array that's long enough
$array= @(1..31)

for([int]$i = 0; $i -lt $array.Length; ++$i){
  # When $i>6, modulo is needed to convert the index into weekday
  do_stuff $($i%6)  $array[$i]
}

我会选择另一种策略,从
[int](获取日期).DayOfWeek
(或者从相同的数字
(获取日期).DayOfWeek.value\uuu
)开始。例如,今天(
2019-10-31
)您处理每个
4th
11th
18th
,…用户(当然是从零开始):

下面的代码片段显示了一个示例:定义一个虚构的用户数组并枚举他们每周每天的处理过程(
0..6
):

结果:

D:\PShell\SO\58640469.ps1
$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