使用 PowerShell 将输出导出到文件
多种脚本语言具有可让你将数据导出到文件的功能或方法。即使在早期的 MS-DOS 时代,传统的重定向运算符 (>
) 也可以方便地做到这一点。
本文将讨论如何将输出数据导出到文件、将数据添加到现有文件以及使用 PowerShell 操作输出。
PowerShell 中的 Out-File
命令简介
假设你有一个脚本,它返回你计算机上所有 Windows 服务的列表。当我们运行 Get-Service
时,你将收到你可能期望在控制台上的所有对象。
但也许我们想将该输出保存到文本文件中。Out-File
命令是一个很好的方法。
我们可以通过管道运算符管道几乎任何东西来使用 Out-File
。下面,我们可以看到脚本将 Get-Service
的输出发送到 cmdlet,它创建了一个名为 Services.txt
的文本文件,其中包含在控制台上的相同显示。
示例代码:
Get-Service | Out-File -FilePath C:\PS\Services.txt
Get-Content C:\PS\Services.txt
输出:
Status Name DisplayName
Stopped AJRouter AllJoyn Router Service
Stopped ALG Application Layer Gateway Service
<SNIP>
使用 -append
参数附加到 PowerShell 中的文件
默认情况下,Out-File
命令会覆盖通过 -FilePath
参数提供的文本文件中的任何内容。但是,我们可以使用 -Append
参数覆盖此行为。
也许我们正在将控制台输出累积到一个文件中,并希望将文本附加到文件而不是覆盖。 -Append
参数是你最好的朋友。
如果我们不使用 Out-File -Append
参数,C:\PS\File.txt
内容将被覆盖。但是,只要我们添加 -Append
参数,它就会将输出附加到末尾。
示例代码:
'firststring' | Out-File -FilePath C:\PS\File.txt
Get-Content -Path C:\PS\File.txt
'secondstring' | Out-File -FilePath C:\PS\File.txt -Append
Get-Content C:\PS\File.txt
输出:
firststring
firststring
secondstring
在 PowerShell 中更改输出数据
默认情况下,此 cmdlet 将尝试复制控制台上显示的内容,但有一些方法可以对其进行操作。例如,cmdlet 有一个 -NoNewLine
参数,用于删除所有换行符。
示例代码:
Get-Service | Out-File -FilePath C:\PS\Services.txt -NoNewline
Get-Content C:\PS\Services.txt
输出:
Status Name DisplayName
------ ---- -----------
Stopped AJRouter AllJoyn Router Service
Stopped ALG Application La
或者,我们可以使用 -Width
参数以特定字符数截断每一行的文本。
示例代码:
Get-Service | Out-File -FilePath C:\PS\Services.txt -Width 30
Get-Content C:\PS\Services.txt
输出:
Status Name DisplayName
------ ----- -----------
Stopped AJRouter Al
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn