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