Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Job results (from Receive-Job) are grouped by output type, differently than "normal" (BackgroundJob) jobs

Aberta
#40 0 comentários 5 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Estagnada
Stack de tecnologia
powershell
Domínio
backend

Direção de pesquisa

The issue shows the behavior with Start-ThreadJob and Receive-Job on PowerShell 7.4.5 and ThreadJob 2.1.0. Start by reproducing the example and comparing its output order with Start-Job. Trace how ThreadJob collects and exposes the different output streams; done means Receive-Job preserves the order of interleaved output types.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Consider the following code which starts a ThreadJob:

$job = Start-ThreadJob -ScriptBlock {

    for( $i = 0 ; $i -lt 100 ; $i++ )
    {
        Write-Output "output $i"
        Write-Host "host output $i"
        Write-Information "info output $i"
        Write-Verbose "verbose output $i"
        Write-Warning "warning output $i"

        Start-Sleep -Seconds 5
    }
}

If I receive results of the job, the output is grouped according to the type of output:

PS C:\Users\me> Receive-Job $job
output 0
output 1
output 2
WARNING: warning output 0
WARNING: warning output 1
WARNING: warning output 2
host output 0
host output 1
host output 2
PS C:\Users\me>

This is in contrast to “normal” jobs—if I switch the call out for Start-Job, the results come in a more expected order:

PS C:\Users\me> Receive-Job $job
output 0
host output 0
WARNING: warning output 0
output 1
host output 1
WARNING: warning output 1
output 2
host output 2
WARNING: warning output 2
PS C:\Users\me>
Expected behavior

I expect the output from Receive-Job of a ThreadJob to come in the same order as from a BackgroundJob.

This is because I expect to be able to use thread jobs as a "drop-in" replacement for background jobs (modulo restrictions imposed due to running in the same process, like of course you wouldn't be able to load different versions of .NET assemblies).

Actual behavior

The output from a ThreadJob is all grouped by output type (all Warnings grouped together, all host output grouped together, etc.).

Environment data
Name                           Value
----                           -----
PSVersion                      7.4.5
PSEdition                      Core
GitCommitId                    7.4.5
OS                             Microsoft Windows 10.0.26290
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

PS C:\Users\me> gmo *thread*

ModuleType Version    PreRelease Name                                ExportedCommands
---------- -------    ---------- ----                                ----------------
Binary     2.1.0                 Microsoft.PowerShell.ThreadJob      Start-ThreadJob
Version

7.4.5 / 2.1.0

Linguagem predominante
PowerShell
Estrelas
37
Forks
22
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de PowerShell/ThreadJob

Todas as issues de PowerShell/ThreadJob

Issues semelhantes

Mais issues de Backend & API Design

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.