cmdlet
Out-File
将输出发送到文件。 它隐式使用 PowerShell 的格式设置系统写入文件。 该文件接收与终端相同的显示表示形式。 这意味着输出可能不适合编程处理,除非所有输入对象都是字符串。
如果需要为输出指定参数,请使用
Out-File
而不是重定向运算符 (
>
) 。 有关重定向的详细信息,请参阅
about_Redirection
。
示例 1:发送输出并创建文件
此示例演示如何将本地计算机进程列表发送到文件。 如果文件不存在,
Out-File
则在指定路径中创建文件。
Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
29 22.39 35.40 10.98 42764 9 Application
53 99.04 113.96 0.00 32664 0 CcmExec
27 96.62 112.43 113.00 17720 9 Code
cmdlet
Get-Process
获取在本地计算机上运行的进程列表。
将 Process
对象向下发送到该 cmdlet 的管道
Out-File
。
Out-File
使用
FilePath
参数并在当前目录中创建一个名为
Process.txt
的文件。 命令
Get-Content
从文件获取内容并将其显示在 PowerShell 控制台中。
示例 2:防止覆盖现有文件
此示例防止覆盖现有文件。 默认情况下,
Out-File
覆盖现有文件。
Get-Process | Out-File -FilePath .\Process.txt -NoClobber
Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cmdlet
Get-Process
获取在本地计算机上运行的进程列表。
将 Process
对象向下发送到该 cmdlet 的管道
Out-File
。
Out-File
使用
FilePath
参数并尝试写入当前目录中名为
Process.txt
的文件。
NoClobber
参数可防止覆盖文件,并显示文件已存在的消息。
示例 3:以 ASCII 格式将输出发送到文件
此示例演示如何使用特定编码类型对输出进行编码。
$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50
cmdlet
Get-Process
获取在本地计算机上运行的进程列表。
Process
对象存储在变量
$Procs
中。
Out-File
使用
FilePath
参数并在当前目录中创建一个名为
Process.txt
的文件。
InputObject
参数将 进程对象
$Procs
传递到
Process.txt
文件。
Encoding
参数将输出转换为
ASCII
格式。
Width
参数将文件中的每一行限制为 50 个字符,因此某些数据可能会被截断。
示例 4:使用提供程序并将输出发送到文件
此示例演示如何
Out-File
在不在
FileSystem
提供程序驱动器中使用 cmdlet。 使用
Get-PSProvider
cmdlet 查看本地计算机上的提供程序。 有关详细信息,请参阅
about_Providers
。
PS> Set-Location -Path Alias:
PS> Get-Location
Alias:\
PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt
PS> Get-Content -Path C:\TestDir\AliasNames.txt
CommandType Name
----------- ----
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ac -> Add-Content
Alias cat -> Get-Content
命令
Set-Location
使用
Path
参数将当前位置设置为注册表提供程序
Alias:
。 cmdlet
Get-Location
显示 的完整
Alias:
路径。
Get-ChildItem
将对象向下发送到
Out-File
cmdlet。
Out-File
使用
FilePath
参数指定输出的完整路径和文件名,
C:\TestDir\AliasNames.txt
。 cmdlet
Get-Content
使用
Path
参数,并在 PowerShell 控制台中显示文件的内容。
示例 5:设置整个范围的文件输出宽度
此示例使用
$PSDefaultParameterValues
将 的所有调用
Out-File
和重定向操作 (
>
>>
和) 设置为
Width
2000 的参数。 这可确保在将表格式化数据输出到文件的当前范围内,PowerShell 使用行宽 2000,而不是由 PowerShell 主机的控制台宽度确定的线条宽度。
function DemoDefaultOutFileWidth() {
try {
$PSDefaultParameterValues['out-file:width'] = 2000
$logFile = "$pwd\logfile.txt"
Get-ChildItem Env:\ > $logFile
Get-Service -ErrorAction Ignore | Format-Table -AutoSize | Out-File $logFile -Append
Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
finally {
$PSDefaultParameterValues.Remove('out-file:width')
DemoDefaultOutFileWidth
有关 的详细信息
$PSDefaultParameterValues
,请参阅
about_Preference_Variables
。
-Append
将输出添加到现有文件的末尾。
Type:
SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Confirm
提示你在运行 cmdlet 之前进行确认。
Type:
SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-Encoding
指定目标文件的编码类型。 默认值为
utf8NoBOM
。
此参数的可接受值如下所示:
ascii
:使用 ASCII (7 位) 字符集的编码。
bigendianunicode
:使用 big-endian 字节顺序以 UTF-16 格式进行编码。
bigendianutf32
:使用 big-endian 字节顺序以 UTF-32 格式进行编码。
oem
:使用 MS-DOS 和控制台程序的默认编码。
unicode
:使用 little-endian 字节顺序以 UTF-16 格式进行编码。
utf7
:以 UTF-7 格式进行编码。
utf8
:以 UTF-8 格式进行编码。
utf8BOM
:使用字节顺序标记 (BOM) 以 UTF-8 格式进行编码
utf8NoBOM
:以 UTF-8 格式编码,不带字节顺序标记 (BOM)
utf32
:以 UTF-32 格式进行编码。
从 PowerShell 6.2 开始,
Encoding
参数还允许使用已注册代码页的数字 ID (如
-Encoding 1251
) 或已注册代码页的字符串名称 ()
-Encoding "windows-1251"
。 有关详细信息,请参阅
Encoding.CodePage
的 .NET 文档。
不再建议使用
UTF-7
*。 从 PowerShell 7.1 起,如果为
Encoding
参数指定
utf7
,则会写入警告。
Type:
Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:1
Default value:UTF8NoBOM
Accept pipeline input:False
Accept wildcard characters:False
-FilePath
指定输出文件的路径。
Type:
String
Aliases:Path
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Force
重写只读属性并覆盖现有的只读文件。
Force
参数不会覆盖安全限制。
Type:
SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-InputObject
指定要写入文件的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。
Type:
PSObject
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-LiteralPath
指定输出文件的路径。
LiteralPath
参数与键入时完全相同。
不接受通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。 有关详细信息,请参阅
about_Quoting_Rules
。
Type:
String
Aliases:PSPath, LP
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-NoClobber
NoClobber
可防止覆盖现有文件,并显示一条消息,指出该文件已存在。 默认情况下,如果文件存在于指定路径中,
Out-File
则覆盖该文件而不发出警告。
Type:
SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-NoNewline
指定写入文件的内容不以换行符结尾。 输入对象的字符串表示形式连接在一起,形成输出。 在输出字符串之间不插入空格或换行符。 未在最后一个输出字符串之后添加换行符。
Type:
SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-WhatIf
显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。
Type:
SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-Width
指定输出的每一行中的字符数。 将截断任何额外字符,不换行。 如果未使用此参数,则宽度由主机的特征决定。 PowerShell 控制台的默认值为 80 个字符。 如果要控制 的所有调用
Out-File
的宽度以及重定向运算符 (
>
和
>>
) ,请在使用
Out-File
之前设置
$PSDefaultParameterValues['out-file:width'] = 2000
。
Type:
Int32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
PSObject
你可以通过管道将任何对象传递给此 cmdlet。
此 cmdlet 不返回任何输出。
输入对象会像在终端中一样自动设置格式,但可以使用
Format-*
cmdlet 显式控制输出到文件的格式。 例如:
Get-Date | Format-List | Out-File out.txt
若要将 PowerShell 命令的输出发送到
Out-File
cmdlet,请使用管道。 或者,可以将数据存储在变量中,并使用
InputObject
参数将数据传递到
Out-File
cmdlet。
Out-File
将数据保存到文件,但它不会向管道生成任何输出对象。
PowerShell 7.2 添加了控制 ANSI 转义序列呈现方式的功能。 可以基于 属性的设置
$PSStyle.OutputRendering
更改传递给
Out-File
的 ANSI 修饰输出。 有关详细信息,请参阅
about_ANSI_Terminals
。
about_Providers
about_Quoting_Rules
Out-Default
Out-Host
Out-Null
Out-String
Tee-Object