Powershell启动作业同步输出

 用户7kxpkjs2ol 发布于 2023-02-13 13:14

我有一个启动工作的powershell脚本

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

然后它继续执行脚本的其余部分.

那项工作对于该过程的PID来说是一种监控.

我想每隔n秒同步打印PID,而不必结束工作.

例如,当正在执行脚本的其余部分时,我希望在我的控制台中看到输出.

在PowerShell中有类似的东西吗?

谢谢.

1 个回答
  • 是的,你可以使用事件:

    $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
    

    归功于这个答案.其他有用的链接:

    如何让Windows PowerShell在作业完成时通知您

    使用PowerShell管理事件订阅 - 嘿,脚本专家!博客

    2023-02-13 13:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有