使用 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的文本文件的 cmdlet 中,该文件包含你在控制台上看到的确切显示。

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

更改输出

默认情况下,此 cmdlet 将尝试复制在控制台上显示的内容,但有一些方法可以操纵它。例如,cmdlet 有一个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

在实际应用中,此 cmdlet 能够正常工作,但有更好的方法来将输出存储到文件中。

此 cmdlet 提供了很少的选项来操纵输出。它只是将输出保存为在控制台中显示的内容,类似于将所有内容直接写入文本文件的 PowerShell 记录。

使用Add-ContentSet-Content cmdlets會始終具有更多的靈活性,但如果您需要快速將PowerShell輸出寫入文件,Out-File是一種不錯的方式。

相關:Set-Content:寫入文件的PowerShell方式

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