当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell Out-File Cmdlet 将输出重定向到文件

作者:精品下载站 日期:2024-12-14 12:37:00 浏览:13 分类:玩电脑

使用 PowerShell Out-File Cmdlet 将输出重定向到文件


如果您正在市场上寻找可以将输出存储在文本文件中的 PowerShell cmdlet,那么您很幸运。您还将学习如何使用 PowerShell Out-File cmdlet 及其流行的 Out-File -Append 参数!

输出文件如何工作?

这个 PowerShell cmdlet 本质上很简单;它的唯一目的是存储收到的输出并将其存储在文本文件中。

它旨在取代标准输出重定向运算符 (>)。即使从 DOS 时代开始,我们就可以将输出重定向到文件。此 cmdlet 是执行此操作的 PowerShell 方式。

Out-File cmdlet 通常在 PowerShell 管道的末尾使用。它的唯一目的是将原始输出直接发送到文本文件而不考虑。有很少的方法可以调整输出的写入方式。

将输出发送到文件

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

但也许您想将该输出保存到文本文件中。 Out-File cmdlet 是实现此目的的好方法。您可以通过管道将任何内容通过管道传输到它来使用它。

您可以在下面看到,Get-Service 的输出已发送到 cmdlet,该 cmdlet 创建了一个名为 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

改变输出

默认情况下,此 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

结论

[玩转系统] 使用 PowerShell Out-File Cmdlet 将输出重定向到文件

在现实场景中,此 cmdlet 可以工作,但有更好的方法将输出存储到文件中。

此 cmdlet 不提供操作输出的实际选项。它只是按照控制台中显示的方式保存输出。此 cmdlet 类似于 PowerShell 脚本,只是将所有内容直接写入文本文件。

Add-ContentSet-Content cmdlet 始终具有更大的灵活性,但如果您需要一种快速方法将 PowerShell 输出获取到文件,Out-File 是要走的路。

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

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯