我正在尝试在PowerShell中同时同步不同的任务,因为它们每个大约需要2-4个小时。我现在拥有的脚本只是一个接一个地处理每个任务。我知道PowerShell中有一个名为后台作业的选项。有没有办法转换以下代码,以便它同时处理多个.cmd文件?
$handler_button1_Click=
{
$answer= $finalcheck.popup("text",0,"text",4)
If($answer-eq 6) {
[Windows.Forms.MessageBox]::Show("text", "Information", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
$listBox1.Items.Clear();
if ($checkBox1.Checked) {
Try{
& K:\sample.cmd
}catch [System.Exception]{
$listBox1.Items.Add("Error")}
}
if ($checkBox2.Checked) {
Try{
& K:\sample2.cmd
}catch [System.Exception]{
$listBox1.Items.Add("Error")}
}
答案 0 :(得分:1)
您可以使用Start-Job:
$job = Start-Job { & K:\sample.cmd }
此时您可能需要添加一些代码来观察您已启动的工作状态。您可以定期检查$ job.State。
对此进行扩展,如果一个作业已在运行,您可能会拒绝启动相同类型的作业。
除了Start-Job,您还应该看看: