Powershellでセマフォもどき

まとまった処理単位でsleepを入れる部品ですw start-jobもありますが、色々あり使えないのでこうなったww

# カウント変数初期化
$script:counting = 0

# 100ブロック処理するごとに2秒待つセマフォもどき関数
function do-one-hundred-block ([scriptblock]${scriptbl}) { 
    $script:counting++
        switch ($script:counting) { 
            {$_ % 100 -ne 0} {& $scriptbl} 
            default          {& $scriptbl;sleep 2}  
        }
}

# 300回echoする処理をセマフォもどきに渡し、100回ごとに2秒待ってみる
for ($i=1;$i -le 300;$i++) {
    do-one-hundred-block {echo $i}
}