7

ジョブを開始する PowerShell スクリプトがあります

start-job -scriptblock { 
  while($true) {
    echo "Running"
    Start-Sleep 2
  }
}

その後、残りのスクリプトを実行し続けます。

そのジョブは、そのプロセスの PID を監視するようなものです。

ジョブを終了することなく、n 秒ごとに PID を同期的に印刷したいと考えています。

たとえば、残りのスクリプトが実行されているときに、コンソールに出力を表示したいと考えています。

そのようなことはpowershellで可能ですか?

ありがとう。

4

1 に答える 1

13

はい、イベントを使用できます。

$job = Start-Job -ScriptBlock { 
  while($true) {
    Register-EngineEvent -SourceIdentifier MyNewMessage -Forward
    Start-Sleep -Seconds 3
    $null = New-Event -SourceIdentifier MyNewMessage -MessageData "Pingback from job."
  }
}

$event = Register-EngineEvent -SourceIdentifier MyNewMessage -Action {
  Write-Host $event.MessageData;
}

for($i=0; $i -lt 10; $i++) {
  Start-Sleep -Seconds 1
  Write-Host "Pingback from main."
}

$job,$event| Stop-Job -PassThru| Remove-Job #stop the job and event listener

クレジットはこの回答に送られます。その他の便利なリンク:

于 2013-12-02T20:16:27.553 に答える