Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Question
Wednesday, January 14, 2015 2:42 PM | 1 vote
Hi,
After creating an instance of the latest Windows Server 2012 R2 image on Windows Azure, we see a strange issue with Powershell transcripts: Write-Host is not transcribed. However, "foobar" | Out-Host IS transcribed! Very strange. However, both Write-Warning, and any errors (exceptions, or write-error) does give output.
Anyone else seen this issue? Is this expected behavior or a bug?
Thanks a lot in advance! :-)
Sincerely,
Hallgeir
Here's my powershell version info:
PS C:\> $psversiontable
Name Value
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.34014
BuildVersion 6.3.9600.17400
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
Example:
**********************
Windows PowerShell transcript start
Start time: 20150114143638
Username: xxx\xxx
RunAs User: xxx\xxx
Machine: xxx (Microsoft Windows NT 6.3.9600.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Process ID: 2160
**********************
Transcript started, output file is C:\foobar.txt
PS C:\> Write-Host "This is a test"
CurrentMatchIndex ReplacementIndex ReplacementLength CompletionMatches
-1 0 12 {System.Management.Automat...
PS C:\> Stop-Transcript
**********************
Windows PowerShell transcript end
End time: 20150114143658
**********************
Here's how it looks with piping to Out-Host:
**********************
Windows PowerShell transcript start
Start time: 20150114143755
Username: xxx\xxx
RunAs User: xxx\xxx
Machine: xxx (Microsoft Windows NT 6.3.9600.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Process ID: 2160
**********************
Transcript started, output file is C:\foobar.txt
CurrentMatchIndex ReplacementIndex ReplacementLength CompletionMatches
-1 19 8 {System.Management.Automat...
PS C:\> "This is a test" | Out-Host
This is a test
CurrentMatchIndex ReplacementIndex ReplacementLength CompletionMatches
-1 0 9 {System.Management.Automat...
PS C:\> Stop-Transcript
**********************
Windows PowerShell transcript end
End time: 20150114143809
**********************
All replies (26)
Wednesday, January 14, 2015 3:28 PM ✅Answered | 3 votes
It's working fine for me as well in the previous version of the image Azure image, which used an older build of Powershell (6.3.9600.16394). With the new image however, there's no such luck :(
PS C:\> $PSVersionTable
Name Value
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.34014
BuildVersion 6.3.9600.17090
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
I am on a slightly older build than you are, that most likely accounts for the difference.
Still though, this could be a good excuse to get away from Write-Host. I've made it a habit to use Write-Output everywhere instead of Write-Host, due to things like this:
http://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful/
Don't retire TechNet! - (Don't give up yet - 13,085+ strong and growing)
Wednesday, January 14, 2015 2:55 PM | 1 vote
This is how PowerShell is designed to work. Outpu is only visible in the console.
¯\(ツ)_/¯
Wednesday, January 14, 2015 3:00 PM
Seems to work just fine for me:
**********************
Windows PowerShell transcript start
Start time: 20150114095742
Username : me
Machine : PC (Microsoft Windows NT 6.3.9600.0)
**********************
Transcript started, output file is ...\PowerShell_transcript.20150114095742.txt
PS C:\> Write-Host 'TEST'
TEST
PS C:\> Stop-Transcript
**********************
Windows PowerShell transcript end
End time: 20150114095754
**********************
Don't retire TechNet! - (Don't give up yet - 13,085+ strong and growing)
Wednesday, January 14, 2015 3:06 PM | 1 vote
Not me:
**********************
Windows PowerShell transcript start
Start time: 20150114095333
Username: a
RunAs User: a
Machine: T (Microsoft Windows NT 6.3.9600.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Process ID: 700
**********************
Transcript started, output file is C:\Users\xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.20150114095333.txt
PS C:\scripts> write-host testing
CurrentMatchIndex ReplacementIndex ReplacementLength CompletionMatches
-1 0 7 {System.Management.Automat...
PS C:\scripts> Stop-Transcript
**********************
Windows PowerShell transcript end
End time: 20150114095351
**********************
¯\(ツ)_/¯
Wednesday, January 14, 2015 3:20 PM
It's working fine for me as well in the previous version of the image Azure image, which used an older build of Powershell (6.3.9600.16394). With the new image however, there's no such luck :(
Wednesday, January 14, 2015 3:21 PM | 1 vote
I thought the whole purpose of transcript was to log everything that's going on? And it DID work previously :)
Wednesday, January 14, 2015 3:46 PM
Thanks Mike.
Write-Output works perfectly; we'll use this instead.
Thanks everyone for your input; no more write-host for me :-)
Wednesday, January 14, 2015 3:47 PM
Cheers, you're welcome.
Don't retire TechNet! - (Don't give up yet - 13,085+ strong and growing)
Friday, January 16, 2015 9:16 AM
Hi,
Write-Ouput works and we can set background and foreground colors with $host.UI.RawUI members but what about the nonewline parameter on write-host command ?
Friday, January 23, 2015 1:58 AM | 5 votes
Hi,
This is a bug, and we're working on getting it fixed in an upcoming update.
Brent
Friday, January 23, 2015 3:20 AM
Thanks for the update Brent.
Don't retire TechNet! - (Don't give up yet - 13,085+ strong and growing)
Tuesday, February 3, 2015 4:10 PM
Any indication of when this update is expected to be made available to the public?
Kind Regards, Henk Hofs | http://www.IThastobecool.com
Wednesday, March 25, 2015 11:23 AM
Any update on this matter? It has been almost 2 months now...
Kind Regards, Henk Hofs | http://www.IThastobecool.com
Monday, April 13, 2015 8:33 AM
I've just run into this on one of my 2012 R2 servers. It's been working fine for months, but all of a sudden I've started seeing this behaviour.
Does anyone have a workaround until this is fixed? I'd rather not have to change all my scripts.
Thanks
* should be noted I'm using on prem, not azure
Tuesday, April 28, 2015 7:02 PM | 1 vote
Hi CheeseBiscuits,
i'm still waiting for an answer from MSFT as well, but they no longer seem to be monitoring this thread, probably because it is marked as answered.
The only workaround I could think of currently is to create a proxy/replace function for Write-Host that outputs the string using "String" | Out-Host. e.g.:
Function Write-Host ($message,$nonewline,$backgroundcolor,$foregroundcolor) {$Message | Out-Host}
I've started a new thread to see if we can get it fixed by MSFT:
Kind Regards, Henk Hofs | http://www.IThastobecool.com
Monday, June 22, 2015 8:17 PM | 1 vote
In my testing I discovered that this bug only appears after installing KB3000850, so that might be why it just showed up for you. It has now been almost 6 months and none of the latest updates resolve the issue.
I had used workaround code for this in the past because early versions of PowerShell did not transcribe Write-Host, however they added the functionality sometime in version 2.0. At that point I ripped out my workaround and everything had been working fine until recently, and I traced it to KB3000850.
I get that Write-Output is a good practice, but I'm writing scripts for customers that don't really know what's going on and spend a lot of time making the output look good. Write-Output doesn't support colours out of the box, and I don't need any of the output I'm displaying passed to other scripts. It's informational. Unfortunately it's also really useful for debugging what when wrong and when, except when it doesn't show up in the transcript!
Thursday, September 3, 2015 10:39 AM
Costly for anyone who has already used their own output formatters and -nonewline for example, write-output and the loss of control over formatting for scripts which are run by non technical people. Script output often needs to be brief in places - reworking would cost us all a lot, and really feels like a feature that would be in the shell implementation it-self. It's a script porting and diagnostics gap at the moment for me.
Are there and commercial shell hosts available that do this handling correctly and efficiently?
automation of testing the stuff dude
Thursday, September 17, 2015 11:16 AM | 4 votes
A hotfix is available for this bug:
https://support.microsoft.com/en-us/kb/3014136
Wednesday, May 18, 2016 4:38 PM
A similar issue is happening on powersherll 5, Windows Server 2008 R2. When the write-host comes from a remote machine it dones't works:
PS C:\Windows\system32> $PSVersionTable
Name Value
PSVersion 5.0.10586.117
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.10586.117
CLRVersion 4.0.30319.18063
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Transcript:
**********************
Windows PowerShell transcript start
Start time: 20160518113250
Username:
RunAs User:
Machine:
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Process ID: 3304
PSVersion: 5.0.10586.117
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0.10586.117
BuildVersion: 10.0.10586.117
CLRVersion: 4.0.30319.18063
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is C:\Users\\Documents\PowerShell_transcript.zQE3Xa3S.20160518113250.txt
PS C:\Windows\system32> Invoke-Command -ComputerName remote.machine -ScriptBlock {Write-Host "Hello" -fore yellow} -UseSSL
PS C:\Windows\system32> Stop-Transcript
**********************
Windows PowerShell transcript end
End time: 20160518113259
**********************
Console:
PS C:\Windows\system32> Invoke-Command -ComputerName remote.machine -ScriptBlock {Write-Host "Hello" -fo
re yellow} -UseSSL
Hello
PS C:\Windows\system32> Stop-Transcript
Transcript stopped, output file is C:\Users\\Documents\PowerShell_transcript.zQE3Xa3S.201605181
13250.txt
PS C:\Windows\system32>
Can somebody confirm this is a bug like last time, or not?
Thanks
Tuesday, November 22, 2016 6:54 PM | 1 vote
Hotfix works. Here is an alternative link to the hotfix:
http://hotfixv4.microsoft.com/Windows%208.1/Windows%20Server%202012%20R2/sp1/Fix528220/9600/free/481670_intl_x64_zip.exe
Monday, August 21, 2017 6:51 AM
Works on PowerShell 5
$path = 'c:\2\ts.txt'
Start-Transcript -Path $path -Force -Confirm:$false
Write-Output "Write-Output Transcription Test"
Write-Host "Write-Host Transcription Test" -ForegroundColor Green
Stop-Transcript
Write-Host -ForegroundColor Cyan $([System.IO.File]::ReadAllText($path) )
Remove-Item -Path $path -Force -Confirm:$false
Tuesday, November 28, 2017 11:42 PM
This does not work at all for me - no output.
I am using Powershell 5.1 on Windows 7
Start-Transcript -Path 'C:\temp\log.txt' -Force
Write-Host "host"
Write-Information "info"
Write-Output "output"
Write-Verbose "verbose"
Stop-Transcript
Wednesday, November 29, 2017 12:21 AM
Works for the rest of use:
PS D:\scripts> cat C:\temp\log.txt
**********************
Windows PowerShell transcript start
Start time: 20171128192021
Username: ALPHA\jvierra
RunAs User: ALPHA\jvierra
Configuration Name:
Machine: ALPHA (Microsoft Windows NT 10.0.16299.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.
Process ID: 11852
PSVersion: 5.1.16299.64
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.16299.64
BuildVersion: 10.0.16299.64
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is C:\temp\log.txt
PS D:\scripts> Write-Host "host"
host
PS D:\scripts> Write-Information "info"
INFO: info
PS D:\scripts> Write-Output "output"
output
PS D:\scripts> Write-Verbose "verbose"
PS D:\scripts> Stop-Transcript
**********************
Windows PowerShell transcript end
End time: 20171128192022
**********************
PS D:\scripts>
\(ツ)_/
Wednesday, November 29, 2017 12:24 AM
That is awesome for you. I get nothing. :(
Wednesday, November 29, 2017 12:32 AM
Start-Transcript -Path C:\temp\log.txt -Force
$VerbosePreference = 'Continue'
Write-Host "host"
Write-Information "info"
Write-Output "output"
Write-Verbose "verbose"
Stop-Transcript
cat C:\temp\log.txt
Using the correct syntax may help. Copy and paste at a CLI prompt.
\(ツ)_/
Wednesday, November 29, 2017 12:37 AM
I never heard of that $VerbosePreference setting. I'll have to read up on that. This does work now. Thanks!