PowerShell v2.0相当于;获取作业“接收作业-自动删除作业-等待”吗;?
PowerShell v2.0与此v3.0代码snippt的等效版本是什么:PowerShell v2.0相当于;获取作业“接收作业-自动删除作业-等待”吗;?,powershell,jobs,Powershell,Jobs,PowerShell v2.0与此v3.0代码snippt的等效版本是什么: for($i=0; $i -lt $num_jobs; $i++) { Write-Host -ForegroundColor Darkgreen "[i] Job" $i "starting..." Start-Job -ScriptBlock $insert_data -ArgumentList 'host', 'user', 'pass', 'db', $i, $log_out[$i] | Out
for($i=0; $i -lt $num_jobs; $i++) {
Write-Host -ForegroundColor Darkgreen "[i] Job" $i "starting..."
Start-Job -ScriptBlock $insert_data -ArgumentList 'host', 'user', 'pass', 'db', $i, $log_out[$i] | Out-Null;
}
get-job | receive-job -AutoRemoveJob -Wait
我尝试了以下方法,但运气不好
for($i=0; $i -lt $num_jobs; $i++) {
Write-Host -ForegroundColor Darkgreen "[i] Job" $i "starting..."
Start-Job -ScriptBlock $insert_data -ArgumentList 'host', 'user', 'pass', 'db', $i, $log_out[$i] | Out-Null;
}
get-job | receive-job -Wait
get-job | remove-job
它在PowerShell v2.0上失败,原因是:
Remove-Job : The command cannot remove the job with the 3 session identifier be
cause the job is not finished. To remove the job, first stop the job, or use th
e Force parameter.
请在两行中尝试此操作:
get-job | wait-job | receive-job
get-job | remove-job
请在两行中尝试此操作:
get-job | wait-job | receive-job
get-job | remove-job
对于V2,我能想到的最佳方案是:
Get-Job | % {while ($_.HasMoreData) { Receive-Job $_; Sleep 1 }; Remove-Job $_}
注意:我建议在运行多个作业时使用Get Job-Id参数。此外,1秒钟的睡眠可能有点长,你可以调整为250毫秒
对于多个作业,您可以执行以下操作:
while ($jobs = Get-Job) { $jobs | %{if ($_.HasMoreData) {Receive-Job $_} else {Remove-Job $_}}; Sleep 1};
对于V2,我能想到的最佳方案是:
Get-Job | % {while ($_.HasMoreData) { Receive-Job $_; Sleep 1 }; Remove-Job $_}
注意:我建议在运行多个作业时使用Get Job-Id参数。此外,1秒钟的睡眠可能有点长,你可以调整为250毫秒
对于多个作业,您可以执行以下操作:
while ($jobs = Get-Job) { $jobs | %{if ($_.HasMoreData) {Receive-Job $_} else {Remove-Job $_}}; Sleep 1};
谢谢你的回复。如果我按你的方式尝试。。。但我只能在任务实际完成时收到输出,而不能在任务实际开始时收到输出…感谢您的回复。如果我按你的方式尝试。。。但我只能在任务实际完成时接收输出,而不能在任务实际开始时接收输出……这是一种很好的方法。但它只返回一个特定作业的输出。如果我并行运行例如8个作业,并且我删除了“-id x”,则只显示第一个作业。。。有解决办法吗?很好的方法。但它只返回一个特定作业的输出。如果我并行运行例如8个作业,并且我删除了“-id x”,则只显示第一个作业。。。有解决办法吗?