更新日:2019/06/11
ワークフローで複数のps1を並列処理するサンプルコードです。
sub.ps1を100回呼び出します。最大で3本平行して実行します。成功数、失敗数をカウントします。正しくはカウントする変数の排他が必要かもしれません。
-throttlelimit パラメータで同時実行数を制限することが可能です。
Workflow mainloop
{
$running=0
$launched=0
$failed=0
Foreach -parallel -throttlelimit 3 ($i in 1..100)
{
$workflow:running +=1
$retval = InlineScript
{
c:\scripts\sub.ps1
}
$workflow:running -=1
if($retval)
{
#success
$workflow:launched+=1
}
else
{
#failed
$workflow:failed+=1
}
write-output ("running:" +$running)
write-output ("failed:" +$failed)
write-output ("launched:" +$launched)
}
}
mainloop
sub.ps1
呼ばれる側のシェルです。
Sleep 5
$r = Get-Random -Minimum 0 -Maximum 5
if ($r -eq 1)
{
return $False
}
else
{
return $True
}
[Powershell FAQ トップへ]
[FAQ CENTER トップ]
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018