我创建了以下脚本(test.ps1),我从命令行执行它作为“powershell。\ test.ps1”
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)
但是在执行脚本后生成的日志文件中,我看不到远程或本地的日志语句。这曾经与Powershell 3.0一起使用,但最近我升级到Powershell 4.0并且它停止了工作。
是否有人遇到过类似的问题,或者是否知道从远程和本地命令捕获输出的任何其他方法?
谢谢,
拉夫
答案 0 :(得分:2)
以下是Microsoft解决此问题的修补程序:
https://support.microsoft.com/en-us/kb/3014136
此处还讨论了Technet
从修补程序站点:
在运行Windows Server 2012 R2的服务器上,使用PowerShell时会遇到以下一个或多个问题:
- 问题1
Start-Transcript cmdlet不捕获写主机调用,如以下脚本示例所示:
Start-Transcript -path $env:TEMP\transcript.txt
Write-Host Hello World
Stop-Transcript
Get-Content $env:TEMP\transcript.txt
在这种情况下,“Hello World”不会按预期出现在transcript.txt文件中。
答案 1 :(得分:1)
Write-Host
替换为Write-Output
在2012 R2上为我做了诀窍。