Out-File

将输出发送到文件。

语法

ByPath (默认值)

Out-File
    [-FilePath] <string>
    [[-Encoding] <string>]
    [-Append]
    [-Force]
    [-NoClobber]
    [-Width <int>]
    [-NoNewline]
    [-InputObject <psobject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ByLiteralPath

Out-File
    [[-Encoding] <string>]
    -LiteralPath <string>
    [-Append]
    [-Force]
    [-NoClobber]
    [-Width <int>]
    [-NoNewline]
    [-InputObject <psobject>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

说明

Out-File cmdlet 将输出发送到文件。 当您需要为输出指定参数时,请使用 Out-File 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

Get-Process cmdlet 获取在本地计算机上运行的进程的列表。 进程 对象将管道发送到 Out-File cmdlet。 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
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Get-Process cmdlet 获取在本地计算机上运行的进程的列表。 进程 对象将管道发送到 Out-File cmdlet。 Out-File 使用 FilePath 参数,并尝试写入名为 Process.txt的当前目录中的文件。 NoClobber 参数可防止覆盖该文件,并显示一条消息,指出该文件已存在。

示例 3:以 ASCII 格式将输出发送到文件

此示例演示如何使用特定编码类型对输出进行编码。

$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50

Get-Process cmdlet 获取在本地计算机上运行的进程的列表。 Process 对象存储在变量 $Procs中。 Out-File 使用 FilePath 参数,并在名为 Process.txt的当前目录中创建一个文件。 InputObject 参数将 $Procs 中的进程对象传递给文件 Process.txt编码 参数将输出转换为 ASCII 格式。 Width 参数将文件中的每一行限制为 50 个字符,以便可能会截断某些数据。

示例 4:使用提供程序并将输出发送到文件

此示例演示如何在不 Out-FileFileSystem 提供程序驱动器中时使用 cmdlet。 使用 Get-PSProvider cmdlet 查看本地计算机上的提供程序。 有关详细信息,请参阅 about_Providers

PS> Set-Location -Path Alias:

PS> Get-Location

Path
----
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:Get-Location cmdlet 显示 Alias:的完整路径。 Get-ChildItem 将管道中的对象发送到 Out-File cmdlet。 Out-File 使用 FilePath 参数指定输出的完整路径和文件名,C:\TestDir\AliasNames.txtGet-Content cmdlet 使用 Path 参数,并在 PowerShell 控制台中显示文件的内容。

参数

-Append

将输出添加到现有文件的末尾。 如果未指定编码,cmdlet 将使用默认编码。 该编码可能与目标文件的编码不匹配。 这与重定向运算符 (>>) 的行为相同。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Confirm

在运行 cmdlet 之前,提示你进行确认。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Encoding

指定目标文件的编码类型。 默认值为 unicode

此参数的可接受值如下所示:

  • ASCII 使用 ASCII(7 位)字符集。
  • BigEndianUnicode 使用具有 big-endian 字节顺序的 UTF-16。
  • 默认 使用与系统的活动代码页(通常是 ANSI)对应的编码。
  • OEM 使用与系统的当前 OEM 代码页对应的编码。
  • 字符串Unicode相同。
  • Unicode 使用具有小字节顺序的 UTF-16。
  • 未知 与 unicode相同。
  • UTF7 使用 UTF-7。
  • UTF8 使用 UTF-8。
  • UTF32 使用具有小字节顺序的 UTF-32。

参数属性

类型:String
默认值:Unicode
接受的值:ASCII, BigEndianUnicode, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
支持通配符:False
不显示:False

参数集

(All)
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-FilePath

指定输出文件的路径。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

ByPath
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Force

重写只读属性并覆盖现有的只读文件。 Force 参数不会替代安全限制。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-InputObject

指定要写入文件的对象。 输入一个包含对象的变量,或键入一个获取对象的命令或表达式。

参数属性

类型:PSObject
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-LiteralPath

指定输出文件的路径。 LiteralPath 参数的使用方式与键入的参数完全相同。 不接受通配符。 如果路径包含转义字符,请将它括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。 有关详细信息,请参阅 about_Quoting_Rules

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:PSPath

参数集

ByLiteralPath
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-NoClobber

NoClobber 阻止覆盖现有文件,并显示一条消息,指出该文件已存在。 默认情况下,如果指定路径中存在文件,Out-File 覆盖该文件而不发出警告。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:NoOverwrite

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-NoNewline

指定写入文件的内容不以换行符结尾。 输入对象的字符串表示形式串联成输出。 输出字符串之间不插入空格或换行符。 最后一个输出字符串后不添加换行符。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WhatIf

显示 cmdlet 运行时会发生什么情况。 命令脚本未运行。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:无线

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Width

指定每行输出中的字符数。 任何其他字符将被截断,而不是包装。 如果不使用此参数,则宽度由主机的特征决定。 PowerShell 控制台的默认值为 80 个字符。

参数属性

类型:Int
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

PSObject

可以通过管道将任何对象传递给 Out-File

输出

None

Out-File 不生成任何输出。

备注

这些 Out cmdlet 不设置对象的格式;它们只是呈现对象并将其发送到指定的显示目标。 如果将未格式化的对象发送到 Out cmdlet,则 cmdlet 会在呈现之前将其发送到格式化 cmdlet。

若要将 PowerShell 命令的输出发送到 Out-File cmdlet,请使用管道。 您可以将数据存储在变量中,并使用 InputObject 参数将数据传递给 Out-File cmdlet。

Out-File 发送数据,但它不会生成任何 output 对象。 如果通过管道传输 Out-File to Get-Member的输出,则 Get-Member cmdlet 会报告未指定任何对象。