在Powershell中,生成范围间隔的最有效方法是什么?

时间:2013-10-28 19:24:46

标签: powershell range modulus

这是一个例子,但必须有一个更有效的方法:

1..100|%{$temp=$_;$temp%=3;if ($temp -eq 0){$_} }

2 个答案:

答案 0 :(得分:3)

1..100 | Where-Object {$_ % 3 -eq 0}

答案 1 :(得分:2)

我猜想“最有效”的方法是使用普通的旧循环:

for($i=3; $i -le 100; $i +=3){$i}

虽然那不是很优雅。你可以创建一个函数:

function range($start,$end,$interval) {for($i=$start; $i -le $end; $i +=$interval){$i}}

针对您的方法进行计时(使用其他答案的更精简版本):

# ~> measure-command {1..100 | Where-Object {$_ % 3 -eq 0}}

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 7
Ticks             : 76020
TotalDays         : 8.79861111111111E-08
TotalHours        : 2.11166666666667E-06
TotalMinutes      : 0.0001267
TotalSeconds      : 0.007602
TotalMilliseconds : 7.602

# ~> measure-command{range 3 100 3}

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 0
Ticks             : 6197
TotalDays         : 7.1724537037037E-09
TotalHours        : 1.72138888888889E-07
TotalMinutes      : 1.03283333333333E-05
TotalSeconds      : 0.0006197
TotalMilliseconds : 0.6197