相关疑难解决方法(0)

从另一个PowerShell会话监视PowerShell会话中的作业

脚本在循环中执行以下步骤,假设两个步骤都需要很长时间才能完成:

  1. $x = DoSomeWork;
  2. Start-Job -Name "Process $x" { DoSomeMoreWork $x; };

当然,第1步阻止脚本,第2步没有.我可以通过控制台轻松监控循环的进度/状态和步骤1.

我还想做的是在批处理仍在执行时监视由步骤2启动的作业的作业状态.

通常,可以从另一个会话"附加"或查询另一个PowerShell会话吗?(假设监视会话不会产生工作者会话)

powershell powershell-2.0

8
推荐指数
1
解决办法
1万
查看次数

将写入进度添加到获取作业/等待作业

我使用下面的代码来显示 PowerShell 作业的结果,超时时间为 120 秒。我想通过合并Write-Progress(基于完成的作业数量)来增强此代码。我尝试使用此示例作为参考,但是,当我尝试合并该代码时,进度条会在所有作业全部完成后短暂显示。

    $Jobs = @()
    $ForceStoppedIds = @{}
    
    $Jobs += Get-Job
    $Jobs | Wait-Job -Timeout 120 | Out-Null
    $Jobs | ?{$_.State -eq 'Running'} | Stop-Job -PassThru | %{$ForceStoppedIds[$_.Id] = $true}
    
    foreach ($Job in $Jobs) {
    
        $Name = $Job.Name
        $Output = (Get-Job -Name $Name | Receive-Job)
    
        if ($ForceStoppedIds.Contains($Job.Id)) {
    
            Write-Output "$($Name) - Device unable to process request within 2 minutes"
    
        } else {
    
            Write-Output $Output
    
        }
    
    }
Run Code Online (Sandbox Code Playgroud)

powershell start-job powershell-jobs progress-bar

2
推荐指数
1
解决办法
1294
查看次数