ZetCode

PowerShell Add-Content

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍 PowerShell 中的 Add-Content cmdlet。此 cmdlet 将内容追加到文件,而不会覆盖现有内容。它对于日志记录和数据收集非常有用。

Add-Content 基础知识

Add-Content cmdlet 将内容添加到指定的文件。与 Set-Content 不同,它会保留现有内容。它可以添加文本、数组或文件内容。如果文件不存在,该 cmdlet 会创建它。它支持各种编码,并且可以处理多个文件。

Add-Content 的基本用法

使用 Add-Content 的最简单方法是指定文件路径和内容字符串。这会将文本追加到指定的文件。如果文件不存在,它将被创建。默认编码为 UTF-8。

addcontent1.ps1
Add-Content -Path "log.txt" -Value "New log entry"

此命令将“New log entry”追加到 log.txt。如果 log.txt 不存在,它将被创建。每次执行都会在文件中添加新的一行。

追加多行

您可以通过传递字符串数组来追加多行。每个数组元素都会成为文件中的单独一行。这对于添加结构化数据非常有用。-Value 参数同时接受单个值和多个值。

addcontent2.ps1
$lines = @("First line", "Second line", "Third line")
Add-Content -Path "data.txt" -Value $lines

此命令将三行添加到 data.txt。数组中的每个字符串都成为单独的一行。文件将按指定顺序包含这些行。

PS C:\> Get-Content data.txt
First line
Second line
Third line

使用不同编码追加

您可以使用 -Encoding 参数指定文件编码。这对于与不同系统的兼容性很重要。常见编码包括 UTF8、ASCII 和 Unicode。PowerShell 6+ 的默认值为 UTF8NoBOM。

addcontent3.ps1
Add-Content -Path "output.txt" -Value "Text with special chars: äöü" -Encoding UTF8

此命令使用 UTF-8 编码追加包含特殊字符的文本。编码确保了非 ASCII 字符的正确处理。请根据您的要求选择编码。

追加到多个文件

Add-Content 可以同时追加到多个文件。提供多个路径或使用通配符。这对于批量操作非常高效。所有指定的文件都会接收到相同的内容。

addcontent4.ps1
Add-Content -Path "file1.txt", "file2.txt" -Value "Common content"

此命令将“Common content”追加到 file1.txt 和 file2.txt。如果其中任何一个文件不存在,它将被创建。也可以使用 *.log 等通配符。

使用管道输入

Add-Content 可以接受来自管道的输入。这允许动态生成内容。输入可以来自其他 cmdlet 或函数。这对于处理和记录数据非常强大。

addcontent5.ps1
Get-Date | Add-Content -Path "timestamps.log"

此命令将当前日期和时间追加到 timestamps.log。Get-Date 的输出被直接通过管道传递给 Add-Content。这种模式在日志记录场景中很常见。

追加时进行确认

为了安全起见,您可以添加确认提示。-Confirm 参数会在写入前提示。这可以防止意外修改。在处理重要文件时非常有用。

addcontent6.ps1
Add-Content -Path "important.txt" -Value "Critical data" -Confirm

此命令在追加前显示确认提示。您必须通过输入“Y”来确认操作。提示会显示目标文件路径。

使用 -NoNewline 参数

默认情况下,Add-Content 在每个值后添加一个换行符。-NoNewline 参数会阻止此行为。当您需要在不换行的情况下追加内容时,此参数非常有用。多次追加将位于同一行。

addcontent7.ps1
Add-Content -Path "output.txt" -Value "Start: " -NoNewline
Add-Content -Path "output.txt" -Value "Continued text"

第一个命令在不换行的情况下添加“Start: ”。第二个命令在同一行追加“Continued text”。文件将包含“Start: Continued text”。

来源

PowerShell 文档

在本文中,我们介绍了 PowerShell 中的 Add-Content cmdlet。

作者

我的名字是 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PowerShell 教程