Add-Content
向指定的项中添加内容,如向文件中添加字词。
语法
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>]
说明
该 cmdlet 会将 Add-Content
内容追加到指定的项或文件中。 可以通过在命令中键入内容或通过指定包含内容的对象来指定内容。
如果需要为以下示例创建文件或目录,请参阅 “新建项”。
示例
示例 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 参数包含 cmdlet 的Get-Date
输出。 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
cmdlet。
最后一个 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 使用 Path 和 Value 参数在当前目录中创建新文件。 - 该
Get-Content
cmdlet 获取现有文件的内容,CopyFromFile.txt
并将其传递给 Value 参数。 cmdlet 周围的Get-Content
括号可确保命令在命令开始之前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 使用 Path 和 ItemType 参数在当前目录中创建文件IsReadOnlyTextFile.txt
。 - 该
Set-ItemProperty
cmdlet 使用 Name 和 Value 参数将文件的 IsReadOnly 属性更改为 True。 - cmdlet
Get-ChildItem
显示该文件为空 (0
) ,并且具有只读属性 (r
) 。 Add-Content
cmdlet 使用 Path 参数来指定文件。 Value 参数包含要追加到文件的文本字符串。 Force 参数将文本写入只读文件。- 该
Get-Content
cmdlet 使用 Path 参数显示文件的内容。
若要删除只读属性,请使用 Set-ItemProperty
设置为 Value 参数的 False
命令。
示例 7:将筛选器与Add-Content配合使用
可以指定 cmdlet 的 Add-Content
筛选器。 使用筛选器限定 Path 参数时,需要包含尾随星号 () *
来指示路径的内容。
以下命令将“完成”一词添加到目录中所有 *.txt
文件 C:\Temp
的内容。
Add-Content -Path C:\Temp\* -Filter *.txt -Value "Done"
参数
-AsByteStream
指定内容应作为字节流读取。 此参数是在 PowerShell 6.0 中引入的。
将 AsByteStream 参数与 编码 参数一起使用时,会出现警告。 AsByteStream 参数忽略任何编码,并将输出作为字节流返回。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
提示你在运行 cmdlet 之前进行确认。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
注意
任何随 PowerShell 一起安装的提供程序都不支持此参数。 若要模拟其他用户,或在运行此 cmdlet 时提升凭据,请使用 Invoke-Command。
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Encoding
指定目标文件的编码类型。 默认值为 utf8NoBOM
。
编码是 FileSystem 提供程序添加到 cmdlet 的 Add-Content
动态参数。 此参数仅在文件系统驱动器中有效。
此参数的可接受值如下所示:
ascii
:对 ASCII (7 位) 字符集使用编码。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 开始, 编码 参数还允许注册代码页的数值 ID (如 -Encoding 1251
) 或注册代码页的字符串名称 (,如 -Encoding "windows-1251"
) 。 有关详细信息,请参阅 Encoding.CodePage 的 .NET 文档。
注意
不再建议使用 UTF-7* 。 从 PowerShell 7.1 起,如果为编码参数指定utf7
,则会编写警告。
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Exclude
指定此 cmdlet 在操作中排除的项目或项作为字符串数组。 此参数值使 Path 参数有效。 请输入路径元素或模式,例如 *.txt
。 允许使用通配符。 仅当命令包含项的内容(例如C:\Windows\*
,通配符指定C:\Windows
目录的内容)时,Exclude 参数才有效。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
指定用于限定 Path 参数的筛选器。 FileSystem 提供程序是唯一支持使用筛选器的已安装 PowerShell 提供程序。 可以在 about_Wildcards 中找到 FileSystem 筛选器语言的语法。 筛选器比其他参数更有效,因为当 cmdlet 获取对象时,提供程序会应用它们,而不是在检索对象后让 PowerShell 筛选对象。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
覆盖只读属性,从而允许你向只读文件中添加内容。 例如, Force 会替代只读属性,但不会更改文件权限。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
指定此 cmdlet 将在操作中包含的一个项或多个项(作为一个字符串数组)。 此参数值使 Path 参数有效。 请输入路径元素或模式,例如 "*.txt"
。 允许使用通配符。 仅当命令包含项的内容(例如C:\Windows\*
,通配符指定目录的内容C:\Windows
)时,Include 参数才有效。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
指定一个或多个位置的路径。 LiteralPath 的值与键入时完全相同。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号指示 PowerShell 不要将任何字符解释为转义序列。
有关详细信息,请参阅 about_Quoting_Rules。
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoNewline
指示此 cmdlet 不会向内容添加新行或回车符。
输入对象的字符串表示形式将连接在一起,形成输出。 输出字符串之间不会插入空格或换行符。 在最后一个输出字符串之后不会添加换行符。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
返回一个表示所添加内容的对象。 默认情况下,此 cmdlet 将不产生任何输出。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定用于接收其他内容的项的路径。 允许使用通配符。 此路径必须是指向该项的路径,而不是容器的路径。 例如,必须指定一个或多个文件的路径,而不是目录的路径。 如果指定多个路径,请使用逗号分隔这些路径。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Stream
注意
此参数仅在 Windows 上可用。
指定内容的备用数据流。 如果该流不存在,则此 cmdlet 将创建它。 不支持通配符。
Stream 是 FileSystem 提供程序添加到 Add-Content
的动态参数。 此参数仅在文件系统驱动器中有效。
可以使用 Add-Content
cmdlet 更改任何备用数据流的内容,例如 Zone.Identifier
。 但是,若要取消安全检查(该安全检查可阻止从 Internet 下载的文件),则不建议使用此方法。 如果验证下载的文件是否安全,请使用 Unblock-File
cmdlet。
此参数是在 PowerShell 3.0 中引入的。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Value
指定要添加的内容。 键入带引号的字符串(如 此数据仅供内部使用),或指定包含内容的对象,例如生成的 DateTime 对象 Get-Date
。
无法通过键入文件路径来指定文件的内容,因为路径只是字符串。
可以使用 Get-Content
命令获取内容并将其传递给 Value 参数。
Type: | Object[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
显示在此 cmdlet 运行的情况下将会发生什么。 此 cmdlet 未运行。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
System.Object, System.Management.Automation.PSCredential
可以通过管道将值、路径或凭据传递给 Set-Content
。
输出
None or System.String
使用 PassThru 参数时, Add-Content
生成一个表示内容的 System.String 对象。 否则,此 cmdlet 将不生成任何输出。
备注
- 将对象传递给管道时,该对象
Add-Content
将转换为字符串,然后再将其添加到项。 对象类型决定字符串格式,但该格式可能不同于该对象的默认显示。 若要控制字符串格式,请使用发送 cmdlet 的格式设置参数。 - 还可以通过内置别名
ac
来引用Add-Content
它。 有关详细信息,请参阅 about_Aliases。 - 该
Add-Content
cmdlet 旨在处理任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入Get-PSProvider
。 有关详细信息,请参阅 about_Providers。