[FAQ CENTER トップ]
[Powershell FAQ トップへ]



【Powershell】ワークフローで複数のps1を並列処理するサンプル



更新日:2019/06/11


ワークフローで複数のps1を並列処理するサンプルコードです。

sub.ps1を100回呼び出します。最大で3本平行して実行します。成功数、失敗数をカウントします。正しくはカウントする変数の排他が必要かもしれません。

-throttlelimit パラメータで同時実行数を制限することが可能です。


本体.ps1




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