当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Out-File (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:04:53 浏览:13 分类:玩电脑

Out-File (Microsoft.PowerShell.Utility)


Out-File

模块 :Microsoft.PowerShell.Utility

将输出发送到文件。

句法

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

描述

Out-File cmdlet 将输出发送到文件。它隐式使用 PowerShell 的格式化系统来写入文件。文件接收与终端相同的显示表示。这意味着除非所有输入对象都是字符串,否则输出可能不适合编程处理。

使用重定向运算符 (>) 重定向 PowerShell 命令(cmdlet、函数、脚本)的输出在功能上等同于通过管道传输到 Out-File,无需额外参数。 PowerShell 7.4 更改了重定向运算符在用于重定向本机命令的 stdout 流时的行为。有关重定向的更多信息,请参阅 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

Get-Process cmdlet 获取本地计算机上运行的进程列表。 Process 对象沿着管道发送到 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 获取本地计算机上运行的进程列表。 Process 对象沿着管道发送到 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.txtEncoding 参数将输出转换为ASCII 格式。 宽度参数将文件中的每行限制为 50 个字符,因此某些数据可能会被截断。

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

此示例演示当您不在 FileSystem 提供程序驱动器中时如何使用 Out-File 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 控制台中显示文件的内容。

示例 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

将输出添加到现有文件的末尾。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Confirm

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

类型 :

SwitchParameter

别名:

cf

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Encoding

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

该参数可接受的值如下:

  • ascii:使用 ASCII(7 位)字符集的编码。
  • ansi:使用当前区域性的 ANSI 代码页的编码。此选项是在 PowerShell 7.4 中添加的。
  • bigendianunicode:使用 big-endian 字节顺序以 UTF-16 格式进行编码。
  • bigendianutf32:使用 big-endian 字节顺序以 UTF-32 格式进行编码。
  • oem:使用 MS-DOS 和控制台程序的默认编码。
  • unicode:使用小端字节顺序以 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 文档。

从 PowerShell 7.4 开始,您可以使用 Encoding 参数的 Ansi 值来传递当前区域性 ANSI 代码页的数字 ID,而无需手动指定。

笔记

不再建议使用UTF-7*。从 PowerShell 7.1 开始,如果为 Encoding 参数指定 utf7,则会写入警告。

类型 :

编码

接受的值:

ASCII、BigEndianUnicode、BigEndianUTF32、OEM、Unicode、UTF7、UTF8、UTF8BOM、UTF8NoBOM、UTF32

位置:

1

默认值:

UTF8无BOM

必需的:

False

接受管道输入:

False

接受通配符:

False

-FilePath

指定输出文件的路径。

类型 :

String

别名:

Path

位置:

0

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

-Force

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

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-InputObject

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

类型 :

PS对象

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-LiteralPath

指定输出文件的路径。 LiteralPath 参数的使用与键入时完全相同。不接受通配符。如果路径包含转义字符,请将其用单引号引起来。单引号告诉 PowerShell 不要将任何字符解释为转义序列。有关更多信息,请参阅 about_Quoting_Rules。

类型 :

String

别名:

PSPath, LP

位置:

命名

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-NoClobber

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

类型 :

SwitchParameter

别名:

NoOverwrite

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-NoNewline

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

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-WhatIf

显示 cmdlet 运行时会发生什么情况。该 cmdlet 未运行。

类型 :

SwitchParameter

别名:

wi

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Width

指定每行输出中的最大字符数。任何附加字符都会被截断,而不是换行。如果不使用该参数,则宽度由主机的特性决定。 PowerShell 控制台的默认值是 80 个字符。如果要控制 Out-File 的所有调用以及重定向运算符(>>>)的宽度,请设置

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯