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

[玩转系统] Add-Content (Microsoft.PowerShell.Management)

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

Add-Content (Microsoft.PowerShell.Management)


Add-Content

模块 :Microsoft.PowerShell.Management

向指定项目添加内容,例如向文件添加单词。

句法

Add-Content
   [-Path] <string[]>
   [-Value] <Object[]>
   [-PassThru]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-WhatIf]
   [-Confirm]
   [-NoNewline]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <string>]
   [<CommonParameters>]
Add-Content
   [-Value] <Object[]>
   -LiteralPath <string[]>
   [-PassThru]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-WhatIf]
   [-Confirm]
   [-NoNewline]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <string>]
   [<CommonParameters>]

描述

Add-Content cmdlet 将内容附加到指定的项目或文件。内容可以从管道传入或使用 Value 参数指定。

如果您需要为以下示例创建文件或目录,请参阅New-Item。

示例

示例 1:向所有文本文件添加一个字符串,但有例外

此示例将一个值附加到当前目录中的文本文件,但根据文件名排除文件。

Add-Content -Path .\*.txt -Exclude help* -Value 'End of file'

Path 参数指定当前目录中的所有 .txt 文件,但 Exclude 参数会忽略与指定模式匹配的文件名。 Value 参数指定写入文件的文本字符串。

使用 Get-Content 显示这些文件的内容。

示例 2:在指定文件末尾添加日期

此示例将日期附加到当前目录中的文件并在 PowerShell 控制台中显示该日期。

Add-Content -Path .\DateTimeFile1.log, .\DateTimeFile2.log -Value (Get-Date) -PassThru
Get-Content -Path .\DateTimeFile1.log

Tuesday, May 14, 2019 8:24:27 AM
Tuesday, May 14, 2019 8:24:27 AM
5/14/2019 8:24:27 AM

Add-Content cmdlet 在当前目录中创建两个新文件。 Value 参数包含 Get-Date cmdlet 的输出。 PassThru参数将添加的内容输出到管道。由于没有其他 cmdlet 可以接收输出,因此它显示在 PowerShell 控制台中。 Get-Content cmdlet 显示更新的文件 DateTimeFile1.log

示例3:将指定文件的内容添加到另一个文件中

此示例从文件中获取内容并将内容存储在变量中。该变量用于将内容附加到另一个文件中。

$From = Get-Content -Path .\CopyFromFile.txt
Add-Content -Path .\CopyToFile.txt -Value $From
Get-Content -Path .\CopyToFile.txt
  • Get-Content cmdlet 获取CopyFromFile.txt 的内容并将内容存储在$From 变量中。
  • Add-Content cmdlet 使用 $From 变量的内容更新 CopyToFile.txt 文件。
  • Get-Content cmdlet 显示 CopyToFile.txt。

示例4:使用管道将指定文件的内容添加到另一个文件

此示例从文件中获取内容并将其通过管道传输到 Add-Content cmdlet。

Get-Content -Path .\CopyFromFile.txt | Add-Content -Path .\CopyToFile.txt
Get-Content -Path .\CopyToFile.txt

Get-Content cmdlet 获取CopyFromFile.txt 的内容。结果通过管道传送到 Add-Content cmdlet,该 cmdlet 会更新 CopyToFile.txt。最后一个 Get-Content cmdlet 显示 CopyToFile.txt

示例5:创建一个新文件并复制内容

此示例创建一个新文件并将现有文件的内容复制到新文件中。

Add-Content -Path .\NewFile.txt -Value (Get-Content -Path .\CopyFromFile.txt)
Get-Content -Path .\NewFile.txt
  • Add-Content cmdlet 使用PathValue 参数在当前目录中创建新文件。
  • Get-Content cmdlet 获取现有文件 CopyFromFile.txt 的内容,并将其传递给 Value 参数。 Get-Content cmdlet 两边的括号确保该命令在 Add-Content 命令开始之前完成。
  • Get-Content cmdlet 显示新文件 NewFile.txt 的内容。

示例 6:向只读文件添加内容

即使 IsReadOnly 文件属性设置为 True,此命令也会向文件添加一个值。示例中包含创建只读文件的步骤。

New-Item -Path .\IsReadOnlyTextFile.txt -ItemType File
Set-ItemProperty -Path .\IsReadOnlyTextFile.txt -Name IsReadOnly -Value $True
Get-ChildItem -Path .\IsReadOnlyTextFile.txt
Add-Content -Path .\IsReadOnlyTextFile.txt -Value 'Add value to read-only text file' -Force
Get-Content -Path .\IsReadOnlyTextFile.txt

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-ar--         1/28/2019     13:35              0 IsReadOnlyTextFile.txt
  • New-Item cmdlet 使用 PathItemType 参数在当前目录中创建文件 IsReadOnlyTextFile.txt
  • Set-ItemProperty cmdlet 使用NameValue 参数将文件的IsReadOnly 属性更改为True。
  • Get-ChildItem cmdlet 显示文件为空 (0) 并具有只读属性 (r)。
  • Add-Content cmdlet 使用Path 参数来指定文件。 Value 参数包含要附加到文件的文本字符串。 Force 参数将文本写入只读文件。
  • Get-Content cmdlet 使用Path 参数来显示文件的内容。

要删除只读属性,请使用 Set-ItemProperty 命令,并将 Value 参数设置为 False

示例 7:使用具有添加内容的过滤器

您可以为 Add-Content cmdlet 指定过滤器。使用过滤器限定 Path 参数时,您需要包含尾随星号 (*) 以指示路径的内容。

以下命令将“Done”一词添加到 C:\Temp 目录中所有 *.txt 文件的内容中。

Add-Content -Path C:\Temp\* -Filter *.txt -Value "Done"

参数

-AsByteStream

指定内容应作为字节流读取。此参数是在 PowerShell 6.0 中引入的。

当您将 AsByteStream 参数与 Encoding 参数一起使用时,会出现警告。 AsByteStream 参数忽略任何编码,并且输出作为字节流返回。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Confirm

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

类型 :

SwitchParameter

别名:

cf

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Credential

笔记

随 PowerShell 安装的任何提供程序均不支持此参数。要在运行此 cmdlet 时模拟其他用户或提升您的凭据,请使用 Invoke-Command。

类型 :

PS凭证

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-Encoding

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

编码是文件系统提供程序添加到 Add-Content cmdlet 的动态参数。此参数仅适用于文件系统驱动器。

该参数可接受的值如下:

  • 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

位置:

命名

默认值:

UTF8无BOM

必需的:

False

接受管道输入:

False

接受通配符:

False

-Exclude

以字符串数组形式指定此 cmdlet 在操作中排除的一个或多个项目。此参数的值限定 Path 参数。输入路径元素或模式,例如 *.txt。允许使用通配符。仅当命令包含某个项目的内容时,排除参数才有效,例如C:\Windows\*,其中通配符指定的内容>C:\Windows 目录。

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-Filter

指定一个过滤器来限定 Path 参数。文件系统提供程序是唯一安装的支持使用过滤器的 PowerShell 提供程序。您可以在 about_Wildcards 中找到文件系统过滤器语言的语法。筛选器比其他参数更有效,因为提供程序在 cmdlet 获取对象时应用它们,而不是让 PowerShell 在检索对象后筛选对象。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-Force

覆盖只读属性,允许您将内容添加到只读文件。例如,强制会覆盖只读属性,但不会更改文件权限。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Include

以字符串数组形式指定此 cmdlet 在操作中包含的一个或多个项目。此参数的值限定 Path 参数。输入路径元素或模式,例如 "*.txt"。允许使用通配符。仅当命令包含某个项目的内容时,Include 参数才有效,例如 C:\Windows\*,其中通配符指定 的内容>C:\Windows 目录。

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-LiteralPath

指定到一个或多个位置的路径。 LiteralPath 的值完全按照其键入的方式使用。没有字符被解释为通配符。如果路径包含转义字符,请将其用单引号引起来。单引号告诉 PowerShell 不要将任何字符解释为转义序列。

有关更多信息,请参阅 about_Quoting_Rules。

类型 :

String[]

别名:

PSPath, LP

位置:

命名

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-NoNewline

指示此 cmdlet 不会向内容添加新行或回车符。

输入对象的字符串表示形式被连接以形成输出。输出字符串之间不插入空格或换行符。最后一个输出字符串后不添加换行符。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-PassThru

返回一个表示添加内容的对象。默认情况下,此 cmdlet 不会生成任何输出。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Path

指定接收附加内容的项目的路径。允许使用通配符。路径必须是项目的路径,而不是容器的路径。例如,您必须指定一个或多个文件的路径,而不是目录的路径。如果指定多个路径,请使用逗号分隔路径。

类型 :

String[]

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

True

-Stream

笔记

此参数仅在 Windows 上可用。

指定内容的替代数据流。如果流不存在,此 cmdlet 将创建它。不支持通配符。

Stream 是文件系统提供程序添加到Add-Content 的动态参数。此参数仅适用于文件系统驱动器。

您可以使用 Add-Content cmdlet 更改任何备用数据流的内容,例如 Zone.Identifier。但是,我们不建议将此作为消除阻止从 Internet 下载文件的安全检查的方法。如果您验证下载的文件是否安全,请使用 Unblock-File cmdlet。

此参数是在 PowerShell 3.0 中引入的。 从 PowerShell 7.2 开始,Add-Content 可以针对文件和目录上的替代数据流。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Value

指定要添加的内容。键入带引号的字符串,例如此数据仅供内部使用,或指定包含内容的对象,例如 Get-DateDateTime 对象/code> 生成。

您无法通过键入文件的路径来指定文件的内容,因为路径只是一个字符串。您可以使用 Get-Content 命令获取内容并将其传递给 Value 参数。

类型 :

Object[]

位置:

1

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-WhatIf

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

类型 :

SwitchParameter

别名:

wi

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

对象

您可以通过管道将值传递给Add-Content

PSCredential

您可以将凭据通过管道传输到Add-Content

输出

默认情况下,此 cmdlet 不返回任何输出。

字符串

当您使用 PassThru 参数时,此 cmdlet 将返回表示内容的 System.String 对象。

笔记

PowerShell 包含以下 Add-Content 别名:

  • Windows:

      ac
  • 当您将对象通过管道传输到 Add-Content 时,该对象会在添加到项目之前转换为字符串。对象类型决定字符串格式,但格式可能与对象的默认显示不同。要控制字符串格式,请使用发送 cmdlet 的格式参数。

  • Add-Content cmdlet 旨在处理任何提供程序公开的数据。要列出会话中可用的提供程序,请输入 Get-PSProvider。有关详细信息,请参阅 about_Providers。

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

    取消回复欢迎 发表评论:

    关灯