可以使用 Out-File cmdlet 将输出发送到文件而不是控制台窗口。 下面的命令行将进程列表发送到文件 C:\temp\process.txt:

Get-Process | Out-File -FilePath C:\temp\process.txt

如果你习惯使用传统的输出重定向,则使用 Out-File cmdlet 可能与你的预期结果有所不同。 若要了解其行为,必须知道运行 Out-File cmdlet 的上下文。
默认情况下,Out-File cmdlet 创建 Unicode 文件。 从长远来看,这是最佳默认操作,但是它意味着应创建 ASCII 文件的工具将无法使用默认的输出格式正常运作。 可以使用 Encoding 参数将默认输出格式更改为 ASCII:

Get-Process | Out-File -FilePath C:\temp\process.txt -Encoding ASCII

Out-File 将文件内容格式化为与控制台输出类似的形式。 这会导致输出被截断,大多数情况下正如它在控制台窗口中一样。 例如,如果运行下面的命令:

Get-Command | Out-File -FilePath c:\temp\output.txt

输出将如下所示:

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Add-Content                     Add-Content [-Path] <String[...
Cmdlet          Add-History                     Add-History [[-InputObject] ...
...

若要使不会强制换行的输出与屏幕宽度匹配,可以使用 Width 参数来指定行宽。 因为 Width 是一个 32 位整数参数,因此其最大值可以是 2147483647。 键入以下内容以将行宽设置为此最大值:

Get-Command | Out-File -FilePath c:\temp\output.txt -Width 2147483647

想要保存原本显示在控制台中的输出时,使用 Out-File cmdlet 最有用。 若要更好地控制输出格式,需要更高级的工具。 我们将在下一章中查看这些内容以及有关对象操作的一些详细信息。