【问题标题】:Capture Verbose Stream from Job从作业中捕获详细流
【发布时间】:2014-11-19 12:59:25
【问题描述】:

我正在努力成为一名优秀的 powerscript 用户并根据最佳实践使用 Write-Verbose,但我无法从正在运行的作业中获取 Verbose 流。

$Job = Start-Job -Name "Scanning Work Item" -ScriptBlock{
    Write-Verbose "Write-Verbose" 
    Write-Host "Write-Host"
} 

while ($Job.HasMoreData -or $Job.State -eq "Running") {     
    Receive-Job -Job $Job -Verbose 
    Start-Sleep -Seconds 1
}

这个的输出是

Write-Host

请只回答经过测试的代码,因为我已经花费了数小时尝试各种 Powershell 脚本排列。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    首先,您没有得到任何详细的输出,因为您没有更改会话的默认 VerbosePreference。

    至于在作业运行时读取详细输出,您可以单独从关联的子作业中读取每个输出流缓冲区,而无需执行接收作业,并且在执行接收作业时不会影响以后的输出,

    $Job = Start-Job -Name "Scanning Work Item" -ScriptBlock{
        $VerbosePreference = 'Continue'
        Write-Verbose "Write-Verbose" 
        Write-Host "Write-Host"
        Start-Sleep -Seconds 10
    } 
    
    Start-sleep -Seconds 2
    
    $Verbose = $Job.ChildJobs[0].verbose.readall()
    
    $verbose
    
    while ($Job.HasMoreData -or $Job.State -eq "Running") {     
        Receive-Job -Job $Job 
        Start-Sleep -Seconds 1
    }
    
    
    Write-Verbose
    VERBOSE: Write-Verbose
    Write-Host
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多