Console output appears out of order in PS v5

Tagged: 

This topic contains 3 replies, has 3 voices, and was last updated by Profile photo of Arnoud Jansveld Arnoud Jansveld 5 months, 1 week ago.

  • Author
    Posts
  • #45105
    Profile photo of Arnoud Jansveld
    Arnoud Jansveld
    Participant

    Has anyone else seen output display out of order in PowerShell 5?

    C:\Users> Write-Host "Before"; Get-Service e* | select Status, Name, DisplayName; Write-Host "After"
    Before
    
    After
     Status Name        DisplayName
     ------ ----        -----------
    Stopped EapHost     Extensible Authentication Protocol
    Running EFS         Encrypting File System (EFS)
    Running eventlog    Windows Event Log
    Running EventSystem COM+ Event System
    

    We noticed this after we upgraded to WMF5. It isn't causing any functional problems per se, but it can definitely confuse some people; scripts that uses Write-Host, Write-Verbose etc. to track the flow of the code could produce some surprising results.

    I created a UserVoice bug report with more details (please upvote if you think this needs attention): Bug: Console output appears out of order

  • #45109
    Profile photo of Neil Kronberg
    Neil Kronberg
    Participant

    Try Write-Output instead. Write-Host writes directly to the screen which could cause it to appear before a command that writes to the pipeline (Get-Service), even though it's technically entered after that command.

  • #45111
    Profile photo of Don Jones
    Don Jones
    Keymaster

    Or, "Never use Write-Host." There are also downsides to putting extraneous stuff into the pipeline, as it can confuse the formatting subsystem.

  • #45120
    Profile photo of Arnoud Jansveld
    Arnoud Jansveld
    Participant

    Agreed on not using Write-Host, so let's substitute Write-Verbose – same issue.

    The UserVoice post has more details (including some info added by Tim Curwick about timing changes).

You must be logged in to reply to this topic.