5

Ich habe folgende Skript (test.ps1) erstellt, und ich bin es die Ausführung von der Kommandozeile als „Powershell. \ Test.ps1“Powershell 4.0 Transcript wird die Erfassung nicht ausgegeben von Write-Host-Anweisungen

Write-Host(Start-Transcript -Path "D:\logs.txt") 
$remoteScript = { 
    Write-Host "Remote Log" 
} 
Invoke-Command -ConnectionUri $uri -Credential $creds -ScriptBlock $remoteScript 
Write-Host "Local Log" 
Write-Host(Stop-Transcript) 

jedoch In der Protokolldatei, die nach dem Ausführen des Skripts generiert wurde, wird die Protokollanweisung weder remote noch lokal angezeigt. Dies hat früher mit Powershell 3.0 funktioniert, aber kürzlich habe ich ein Upgrade auf Powershell 4.0 durchgeführt und es funktioniert nicht mehr.

Hat jemand auf ein ähnliches Problem gestoßen oder weiß von einer anderen Möglichkeit, die Ausgabe von Remote- und lokalen Befehlen zu erfassen?

Danke,

Gaurav

+0

Related: http://stackoverflow.com/questions/13160759/start-transcript-not-capturing-all-output-to-log-file – Matt

+0

Dies bezieht sich auf einen bekannten Fehler in bestimmten Builds https: // social. technet.microsoft.com/Forums/windowsserver/en-US/cecc4f32-28c8-4bdc-be63-49ce3d396625/powershell-4-starttranscript-does-not-log-writehost – Matt

+0

Dank @Matt. Die Lösung, die in msdn Link erwähnt wird, ist die Verwendung von Write-Ouput anstelle von Write-Host, was nur für "Local Log" funktioniert ... Ich bin nicht in der Lage, das "Remote Log" in das Protokoll zu bekommen, während ich es mit der vorherigen Version bekommen habe of Powershell – Gaurav

Antwort

2

Hier ist ein Hotfix von Microsoft dieses Problem zu beheben:

https://support.microsoft.com/en-us/kb/3014136

Es wird auch hier diskutiert, in Technet

https://social.technet.microsoft.com/Forums/windowsserver/en-US/cecc4f32-28c8-4bdc-be63-49ce3d396625/powershell-4-starttranscript-does-not-log-writehost?forum=winserverpowershell

aus der Hotfix-Website:

auf einem Server, auf dem Windows Server 2012 R2 ausgeführt wird, trifft man auf eine oder mehrere der folgenden Probleme, wenn Sie Powershell verwenden:

  • Ausgabe 1

Das Start-Transcript-Cmdlet erfasst keine Write-Host-Aufrufe, wie im folgenden Skriptbeispiel zu sehen ist:

Start-Transcript -path $env:TEMP\transcript.txt
Write-Host Hello World
Stop-Transcript

Get-Content $env:TEMP\transcript.txt
In diesem Fall "Hallo Welt" erscheint nicht Datei im transcript.txt wie erwartet.

1

Ersetzen Write-Host mit Write-Output hat den Trick für mich auf 2012 R2.