将输出写入PowerShell中的文本文件

boo*_*ief 53 powershell file-io

我使用以下代码比较了两个文件:

Compare-Object $(Get-Content c:\user\documents\List1.txt) $(Get-Content c:\user\documents\List2.txt) 
Run Code Online (Sandbox Code Playgroud)

如何将此输出写入新的文本文件?我尝试过使用echo命令,但我真的不懂语法.

man*_*lds 87

使用Out-Filecmdlet

 Compare-Object ... | Out-File C:\filename.txt
Run Code Online (Sandbox Code Playgroud)

可选地,添加-Encoding utf8Out-File默认编码对于许多用途来说并不是真正理想的.

  • STDOUT(info)与STDERR(错误)消息怎么样?他们都会去外档吗? (6认同)

Mat*_*att 21

最简单的方法是重定向输出,如下所示:

Compare-Object $(Get-Content c:\user\documents\List1.txt) $(Get-Content c:\user\documents\List2.txt) > c:\user\documents\diff_output.txt
Run Code Online (Sandbox Code Playgroud)

>将导致输出文件已被覆盖(如果已存在).
>>将新文本附加到输出文件的末尾(如果已存在).

  • 这是cmd/dos方法.对于powershell,我认为Out-File是一个更好的习惯 (6认同)
  • 也许不是那么过时了?https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_redirection?view=powershell-6 (3认同)
  • 这也是Unix方式,如果您强制使用Windows,则为这种方式。 (2认同)

Aar*_*one 5

可以完成此操作的另一种方法是分别在命令执行之前和之后使用Start-TranscriptStop-Transcript命令。这将捕获整个会话,包括命令。

开始成绩单

停止笔录

对于这种特殊情况Out-File,也许是您最好的选择。