Powershell: Launch multiple scripts in parallel using Start-Job

Below is the example:


$scriptBlock = { param( [string]$name, [string]$gender, [int]$seconds )
		Start-Sleep -Seconds $seconds; Echo "$name `t`t $gender"
	}

$jobsList = @()
$jobsList += Start-Job -ScriptBlock $scriptBlock -ArgumentList "Xueyi", "Male",7
$jobsList += Start-Job -ScriptBlock $scriptBlock -ArgumentList "ABC", "Male",4
$jobsList += Start-Job -ScriptBlock $scriptBlock -ArgumentList "DEF", "Male",11
$jobsList += Start-Job -ScriptBlock $scriptBlock -ArgumentList "EFF", "Male",9
$jobsList += Start-Job -ScriptBlock $scriptBlock -ArgumentList "PPPP", "Male",6

while ($true)
{
	$allExit = $true; 
	foreach ($proc in $jobsList)
	{
		$allExit = $allExit -and ($proc.State -eq "Completed")
	}

	if ($allExit -eq $true)
	{
		$jobsList | % { Receive-Job $_ }; 
		break; 
	}
	else
	{
		Echo "Some processes still running, wait 1 second..."
	}

	Start-Sleep -seconds 1
}


Test output:


Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Some processes still running, wait 1 second...
Xueyi            Male
ABC              Male
DEF              Male
EFF              Male
PPPP             Male

<The End>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值