工作要检查工作状态

时间:2016-07-26 19:43:36

标签: powershell

我正在尝试检查以前启动的作业的状态,而不会阻止我所在的会话。 所以我试过这样的事情:

Start-Job -ScriptBlock {
    while($true){
        $i++
        Start-Sleep -Seconds 1
    }
}

Start-Job -ScriptBlock {
    switch ((Get-Job)[0].State){
        "Stopped" {
            write-host "Stopped"
        }
        "Running"{
            write-host "Running"
        }
        default {
            write-host "Something else"
        }
    }
}

Get-Job | Receive-Job

但它抛出一个错误,说我无法索引到null数组,即使我有几个作业在运行。

有没有办法让我开始一项工作,让我检查其他工作状态?

1 个答案:

答案 0 :(得分:0)

由于工作“生活”在不同的“空间”(技术性差,对不起),他们无法看到对方。因此,我发现的解决方案是在timer抛出event时运行Start-Job -ScriptBlock { while($true){ $i++ Start-Sleep -Seconds 1 } } $timer = New-Object System.Timers.Timer $timer.AutoReset = $true #repeat? $timer.Interval = 500 #ms Register-ObjectEvent -InputObject $timer -EventName Elapsed -Action { $job_state = (Get-Job)[0].State switch ($job_state){ "Stopped" { write-host "Stopped" } "Running"{ write-host "Running" } default { write-host "Something else" } } } $timer.Start() 。这样,其他工作继续不受干扰。

npm install pack/age

这样,如果第一份作业处于不应该的状态,我可以得到通知。