Powershell 4.0转录本未捕获写入主机语句的输出

Powershell 4.0转录本未捕获写入主机语句的输出,powershell,powershell-3.0,powershell-remoting,powershell-ise,powershell-4.0,Powershell,Powershell 3.0,Powershell Remoting,Powershell Ise,Powershell 4.0,我已经创建了以下脚本(test.ps1),我正在从命令行执行它,名为“powershell.\test.ps1” 但是,在执行脚本后生成的日志文件中,我看不到远程或本地日志语句。这以前适用于Powershell 3.0,但最近我升级到Powershell 4.0,它停止了工作 有没有人遇到过类似的问题,或者知道有没有其他方法可以捕获远程和本地命令的输出 谢谢 Gaurav以下是Microsoft提供的解决此问题的修补程序: 在Technet中也讨论了这一点 从修补程序站点: 在运行Windo

我已经创建了以下脚本(test.ps1),我正在从命令行执行它,名为“powershell.\test.ps1”

但是,在执行脚本后生成的日志文件中,我看不到远程或本地日志语句。这以前适用于Powershell 3.0,但最近我升级到Powershell 4.0,它停止了工作

有没有人遇到过类似的问题,或者知道有没有其他方法可以捕获远程和本地命令的输出

谢谢


Gaurav

以下是Microsoft提供的解决此问题的修补程序:

在Technet中也讨论了这一点

从修补程序站点:

在运行Windows server 2012 R2的服务器上,使用PowerShell时会遇到以下一个或多个问题:

  • 问题1
Start-Transcript cmdlet不会捕获写主机调用,如以下脚本示例所示:

开始转录本-路径$env:TEMP\Transcript.txt

编写主机Hello World

Stop转录本

获取内容$env:TEMP\transcript.txt

在本例中,“Hello World”不会按预期显示在transcript.txt文件中


Write Output
替换
Write Host
为我在2012 R2上成功了。

相关:这是指某些版本中的已知错误,谢谢@Matt。msdn链接中提到的解决方案是使用Write-output而不是Write-Host,后者仅适用于“本地日志”…我无法获取成绩单中的“远程日志”,而我使用的是早期版本的PowerShell。如果您一直阅读,Technet链接还提到4.0的某些版本中的错误。我想知道这是否也会引导您走向正确的方向。该链接确实提到这是一个bug,并且正在由Microsoft团队处理……但是我找不到在抄本中获取远程日志的解决方案……我希望找到类似于正在抄写的本地日志的解决方案/解决方法……我正在使用Powershell远程处理与Azure VM进行广泛的交互,而无法捕获这些日志是严重限制…再次感谢@Matt的回复。
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)