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