Out-File

将输出发送到文件。

语法

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

说明

Out-File cmdlet 将输出发送到文件。如果需要使用它的参数,可以使用此 cmdlet 而不是重定向运算符 (>)。

参数

-Append

将输出添加到现有文件的末尾,而不替换文件内容。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Encoding <string>

指定在文件中使用的字符编码的类型。有效值是“Unicode”、“UTF7”、“UTF8”、“UTF32”、“ASCII”、“BigEndianUnicode”、“Default”和“OEM”。默认值为“Unicode”。

“Default”使用系统当前 ANSI 代码页的编码。

“OEM”使用操作系统的当前原始设备制造商代码页标识符。

是否为必需?

false

位置?

2

默认值

是否接受管道输入?

false

是否接受通配符?

false

-FilePath <string>

指定输出文件的路径。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Force

允许该 cmdlet 覆盖现有只读文件。即使使用 Force 参数,该 cmdlet 也无法覆盖安全限制。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-InputObject <psobject>

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

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByValue)

是否接受通配符?

false

-NoClobber

将不会覆盖现有文件(替换其内容)。默认情况下,如果指定的路径中存在同名文件,则 Out-File 将覆盖该文件,而不会发出警告。如果同时使用了 Append 和 NoClobber,则输出内容将追加到现有文件中。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Width <int>

指定输出中每一行的字符数。将截断任何额外字符,不换行。如果省略此参数,则由主机特征确定宽度。Windows PowerShell 控制台的默认值是 80(字符)。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Confirm

在执行命令之前提示您进行确认。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-WhatIf

描述如果执行该命令会发生什么情况(无需实际执行该命令)。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.Management.Automation.PSObject

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

输出

Out-File 不生成任何输出。

说明

输出 cmdlet 不格式化对象;它们只是生成对象的显示信息,并将它们发送到指定的显示目标。如果将未格式化的对象发送给输出 cmdlet,该 cmdlet 会为它生成显示信息,然后将它发送给格式化 cmdlet。

输出 cmdlet 没有用于提供名称和文件路径的参数。若要将数据发送到含有 Out 动词(输出 cmdlet)的 cmdlet,请使用管道运算符 (|) 将 Windows PowerShell 命令的输出发送到该 cmdlet。还可以将数据存储在变量中,并使用 InputObject 参数将数据传递给 cmdlet。有关帮助信息,请参阅相关示例。

Out-File 发送数据,但不发出任何输出对象。如果将 Out-File 的输出通过管道传递给 Get-Member,则 Get-Member 将报告尚未指定对象。

示例 1

C:\PS>get-process | out-file -filepath C:\Test1\process.txt

说明
-----------
此命令将计算机上的进程列表发送到 Process.txt 文件。如果该文件不存在,则 Out-File 将创建该文件。因为 FilePath 参数的名称是可选的,所以可以将其省略,然后提交等效命令“get-process | outfile C:\Test1\process.txt”。





示例 2

C:\PS>get-process | out-file C:\Test1\process.txt -noclobber

Out-File : File C:\Test1\process.txt already exists and NoClobber was specified.
At line:1 char:23
+ get-process | out-file  <<<< process.txt -noclobber

说明
-----------
此命令还会将进程列表发送到 Process.txt 文件,但它使用 NoClobber 参数,该参数可使现有文件不会被覆盖。输出显示对现有文件使用 NoClobber 时出现的错误消息。





示例 3

C:\PS>$a = get-process

C:\PS> out-file -filepath C:\Test1\process.txt -inputobject $a -encoding ASCII -width 50

说明
-----------
这些命令将计算机上的进程列表发送到 Process.txt 文件。文本以 ASCII 格式编码,从而 Findstr 和 Grep 等搜索程序可以读取该文本。默认情况下,Out-File 使用 Unicode 格式。

第一个命令获取进程的列表,并将它们存储在 $a 变量中。第二个命令使用 Out-File cmdlet 将列表发送到 Process.txt 文件。

该命令使用 InputObject 参数指定输入来自 $a 变量。它使用 Encoding 参数将输出转换为 ASCII 格式。它使用 Width 参数将文件中每一行的长度限制为 50 个字符以内。由于输出行将在第 50 个字符处被截断,因此将省略进程表中的最右列。





示例 4

C:\PS>set-location hklm:\software

c:\PS>get-acl mycompany\mykey | out-file -filepath c:\ps\acl.txt

c:\PS>get-acl mycompany\mykey | out-file -filepath filesystem::acl.txt

说明
-----------
这些命令演示当您不在 FileSystem 驱动器中时如何使用 Out-File cmdlet。

第一个命令将当前位置设置为 HKLM:\Software 注册表项。

第二和第三个命令的效果相同。它们使用 Get-Acl cmdlet 获取 MyKey 注册表子项 (HKLM\Software\MyCompany\MyKey) 的安全描述符。管道运算符将结果传递给 Out-File cmdlet,后者将它发送到 Acl.txt 文件。

因为 Windows PowerShell Registry 提供程序不支持 Out-File,所以必须在 FilePath 参数的值中指定文件系统驱动器名称(例如“c:”),或指定提供程序的名称并且后跟两个冒号(例如“FileSystem::”)。第二和第三个命令演示这些方法。





另请参阅

概念

Out-String
Out-Null
Out-Host
Out-Printer
Out-Default
Tee-Object