使用 Out-File 将 PowerShell 输出重定向到文件:完整指南

如果你正在寻找一个可以将输出存储在文本文件中的 PowerShell 命令,那么你很幸运。你将学会如何使用 PowerShell 的 `Out-File` 命令,以及它流行的 `Out-File -Append` 参数!

Out-File 是如何工作的?

这个 PowerShell 命令非常简单;它的唯一目的是接收输出并将其存储在文本文件中。

它旨在取代标准输出重定向操作符 (`>`)。即使在 DOS 时代,我们也可以将输出重定向到文件中。这个命令是 PowerShell 中的方法。

Out-File 命令通常用于 PowerShell 管道的末尾。它的唯一目的是将原始输出直接发送到文本文件中,不做任何考虑。只有很少的方法可以调整输出的编写方式。

将输出发送到文件

假设你有一个脚本,返回计算机上所有 Windows 服务的列表。当你运行 `Get-Service` 时,你会在控制台上收到你可能期望的所有对象。

但也许你想将该输出保存到文本文件中。Out-File 命令是一个很好的方法。你可以通过管道将几乎任何东西传递给它。

您可以在下面看到,Get-Service的输出被发送到了创建了一个名为Services.txt的文本文件的命令,其中包含了您在控制台上看到的确切显示。

PS> Get-Service | Out-File -FilePath C:\Services.txt
PS> Get-Content C:\Services.txt
Status   Name               DisplayName

Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
Stopped  Appinfo            Application Information
Stopped  AppMgmt            Application Management
<SNIP>

追加到文件

默认情况下,它会覆盖通过FilePath参数提供的文本文件中的任何内容。但是,您可以使用Append参数来覆盖此行为。

也许您正在将控制台输出累积到文件中,并希望追加文本而不是覆盖。Append参数是您的好朋友。

通过使用Out-File -Append参数,您可以看到,如果不使用它,则会覆盖C:\File.txt。但是,只要添加Append参数,它就会将输出追加到末尾。

PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content -Path C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt -Append
PS> Get-Content C:\File.txt
foo foo

更改输出

默认情况下,此命令将尝试复制在控制台上显示的内容,但是有一些方法可以对其进行操作。例如,该命令具有NoNewLine参数,仅删除所有换行符。

PS> Get-Service | Out-File -FilePath C:\Services.txt -NoNewline
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application La

或者,您还可以使用Width参数在每行的特定字符计数处截断文本。

PS> Get-Service | Out-File -FilePath C:\Services.txt -Width 30 
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   -----              -----------
Stopped  AJRouter           Al

结论

Out-File

在实际情况下,此命令有效,但是有更好的方法将输出存储到文件中。

此命令不提供任何真正的选项来操作输出。它只是将输出保存为在控制台上显示的内容。此命令类似于仅将所有内容直接写入文本文件的PowerShell传输记录。

相关: Set-Content:写入文件的PowerShell方式

Source:
https://adamtheautomator.com/out-file/