如下说明是翻译: help Out-File 产生的帮助信息.
译者: Edengundam(马涛)
Out-File
大纲
将输出发送到文件.
语法
Out-File [-filePath] <string> [[-encoding] <string>] [-append] [-width <int>] [-inputObject <psobject>] [-force] [-noClobber] [-whatIf] [-confirm] [<CommonParameters>]
详细描述
Out-File cmdlet将输出发送到文件. 当你需要使用它的参数时, 你可以使用这个cmdlet代替重定向运算符(>).
参数
-filePath <string>
指定输出的文件路径.
强制参数?
|
true
|
参数位置?
|
1
|
默认值
|
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-encoding <string>
指定文件使用的字符编码类型. 合法值为"Unicode", "UTF7", "UTF8", "UTF32", "ASCII", "BigEndianUnicode", "Default"和"OEM". 默认值为"Unicode".
· "Default"使用系统当前ANSI代码页的编码.
· "OEM"使用当前操作系统的原始系统制造商代码页描述符.
强制参数?
|
false
|
参数位置?
|
2
|
默认值
|
Unicode
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-append <SwitchParameter>
将输出添加到已经存在的文件末尾, 而不是替换文件中的内容.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
False
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-width <int>
指定每行输出字符的数量. 多余的字符将被截断, 而非换行继续显示. 如果你忽略此参数, 宽度将通过宿主的特征决定. PowerShell.exe宿主的默认宽度为80 (字符).
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
80
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-inputObject <psobject>
指定被写入文件的对象. 输入一个包含对象的变量, 或者一个能够产生对象的命令或表达式.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
|
允许从管道绑定输入?
|
true (根据值)
|
允许通配符扩展?
|
false
|
-force <SwitchParameter>
在不破坏安全性的前提下, 能够避免影响命令成功执行的限制条件, 例如: Force参数能够覆盖具有只读属性的文件或创建路径中的必要成分, 但是不会改变人和文件的权限.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
false
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-noClobber <SwitchParameter>
不覆盖(替换原有内容) 已经存在的文件. 默认情况下, 如果文件已经在指定路径存在, Out-File不提示任何警告, 将其覆盖. 如果Append和NoClobber都被指定, 输出被追加到存在的文件末尾.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
False
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-whatIf
描述执行此命令将会发生的现象, 不会真正执行此命令.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
-confirm
执行命令前提示你进行确认.
强制参数?
|
false
|
参数位置?
|
named
|
默认值
|
|
允许从管道绑定输入?
|
false
|
允许通配符扩展?
|
false
|
<公共参数>
此命令支持公共参数: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 更多信息, 输入, "get-help about_commonparameters".
输入类型
Any
返回类型
None
注意
更多信息, 输入"Get-Help Out-File -detailed".需要技术信息, 输入"Get-Help Out-File -full".
如果需要为该命令提供多个参数, 请使用逗号进行分隔. 例如, "<parameter-na me> <value1>, <value2>".
Out cmdlets不会对对象进行格式化; 他们只显示这些对象, 然后将他们发送到指定的目标. 如果你给Out cmdlet发送一个没有格式化的对象, cmdlet在显示它前, 先将该对象发送给格式化cmdlet.
Out cmdlets没有任何名称或文件路径的参数. 要给Out cmdlets发送数据, 使用管道运算符(|)将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
此命令也会将计算机上的进程列表保存到Process.txt文件, 但是它使用了NoClobber参数, 此参数将会阻止已经存在的文件被覆盖. 当对已经存在的文件使用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
例3
C:/PS>$a = get-process
out-file -filepath C:/Test1/process.txt -inputobject $a -encoding ASCII -width 50
这些命令将计算机上的进程列表保存到Process.txt文件.
第一个命令取得进程列表, 并将其存储在$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 | outfile -filepath c:/ps/acl.txt
c:/PS>get-acl mycompany/mykey | outfile -filepath filesystem::acl.txt
这些命令介绍了当你不在文件系统驱动器, 如何使用Out-File cmdlet.
第一个命令设置当前路径为HKLM:/Software注册表项.
第二个和第三个命令有同样的效果. 他们是用Get-Acl cmdlet取得MyKey注册表子项(HKLM/Software/MyCompany/MyKey)的安全描述符. 管道运算符将结果发送至Out-File cmdlet, 后者将其发送到Acl.txt文件.
因为Out-File不被Windows PowerShell注册表提供程序支持, 要么你指定文件系统驱动器名(例如: "c:"), 要么提供程序名称后紧跟着两个冒号, "FileSystem::"作为FilePath参数的值. 第二个和第三个命令揭示了这些方法.
相关链接
Out-String
Out-Null
Out-Host
Out-Printer
Out-Default
Tee-Object