我正在尝试检查以前启动的作业的状态,而不会阻止我所在的会话。 所以我试过这样的事情:
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
数组,即使我有几个作业在运行。
有没有办法让我开始一项工作,让我检查其他工作状态?
答案 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
这样,如果第一份作业处于不应该的状态,我可以得到通知。