Answers:
也许Start-Transcript
会为您工作。如果已经运行,请先停止它,然后启动它,完成后再停止它。
$ ErrorActionPreference =“ SilentlyContinue” 停止笔录| 零 $ ErrorActionPreference =“继续” 起始文字-路径C:\ output.txt-附加 #做些事 停止笔录
您还可以在处理内容时运行此程序,并保存命令行会话以供以后参考。
如果要在尝试停止未转录的笔录时完全消除错误,可以执行以下操作:
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue" # or "Stop"
微软有 在Powershell的Connections网站(2012-02-15,下午4:40)上宣布,在3.0版中,他们已将重定向扩展为解决此问题的方法。
In PowerShell 3.0, we've extended output redirection to include the following streams:
Pipeline (1)
Error (2)
Warning (3)
Verbose (4)
Debug (5)
All (*)
We still use the same operators
> Redirect to a file and replace contents
>> Redirect to a file and append to existing content
>&1 Merge with pipeline output
有关详细信息和示例,请参见“ about_Redirection”帮助文章。
help about_Redirection
我认为你可以修改MyScript.ps1
。然后尝试像这样更改它:
$(
Here is your current script
) *>&1 > output.txt
我刚刚在PowerShell 3中进行了尝试。您可以像Nathan Hartley的答案一样使用所有重定向选项。
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
但是,如果需要精确控制输出,Powershell确实很丑陋。
您可能想看一下cmdlet Tee-Object。您可以将输出通过管道传输到Tee,它将写入管道以及文件中
如果要将所有输出直接重定向到文件,请尝试使用*>>
:
# You'll receive standard output for the first command, and an error from the second command.
mkdir c:\temp -force *>> c:\my.log ;
mkdir c:\temp *>> c:\my.log ;
由于这是直接重定向到文件,因此不会输出到控制台(通常很有用)。如果需要控制台输出,请将所有输出与组合*&>1
,然后通过管道传递Tee-Object
:
mkdir c:\temp -force *>&1 | Tee-Object -Append -FilePath c:\my.log ;
mkdir c:\temp *>&1 | Tee-Object -Append -FilePath c:\my.log ;
# Shorter aliased version
mkdir c:\temp *>&1 | tee -Append c:\my.log ;
我相信PowerShell 3.0或更高版本会支持这些技术。我正在PowerShell 5.0上进行测试。
要将其嵌入到脚本中,可以这样进行:
Write-Output $server.name | Out-File '(Your Path)\Servers.txt' -Append
这应该够了吧。