更新日:2019/06/11
workflow hoge
{
param($p1)
}
hoge 123
・正確には複数スレッドから変数を処理する場合には排他制御が必要かもしれない。よってこのコードには欠陥があるかもしれない。
・workflow内では配列変数は使用できない。
参考:"PowerShell Workflows: Restrictions"
https://devblogs.microsoft.com/scripting/powershell-workflows-restrictions/
・c:\scripts\success-or-fail.ps1 というシェルを並列して実行している。
・"invoke-command" で powershell プロセスを複数起動する方式もあるが、処理が重たかった。
====================本体の ps1 ===========================
Workflow myloops
{
$running=0
$launched=0
$failed=0
Foreach -parallel -throttlelimit 3 ($i in 1..500)
{
$workflow:running +=1
$Iret = InlineScript
{
c:\scripts\success-or-fail.ps1
}
$workflow:running -=1
if($Iret)
{
#write-output "Success"
$workflow:launched+=1
}
else
{
#write-output "Failed"
$workflow:failed+=1
}
write-output ("running:" +$running)
write-output ("failed:" +$failed)
write-output ("launched:" +$launched)
}
}
myloops
==================== success-or-fail.ps1 ===========================
$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