约 2051 字

约 10 分钟

#PowerShell 的 Set-Content 命令

Set-Content
    [-Path] <String[]>
    [-Value] <Object[]>
    [-PassThru]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-Force]
    [-Credential <PSCredential>]
    [-WhatIf]
    [-Confirm]
    [-NoNewline]
    [-Encoding <Encoding>]
    [-AsByteStream]
    [-Stream <String>]
    [<CommonParameters>]

功能

写入新内容或替换文件中的现有内容。

类型

Cmdlet,属于 Microsoft.PowerShell.Management。

参数

  • [-Path] <String[]> - 接收内容的项路径;支持通配符
  • -LiteralPath <String[]> - 按字面值解释路径,不将任何字符视为通配符
  • [-Value] <Object[]> - 要写入的新内容,也可以从管道传入
  • -PassThru - 返回表示写入内容的对象;默认不产生输出
  • -NoNewline - 不在输出字符串之间或末尾添加空格和换行符
  • -Encoding <Encoding> - 指定写入文件的编码;默认 utf8NoBOM
  • -AsByteStream - 将内容作为字节流写入
  • -Force - 即使文件为只读也强制写入,但不能绕过安全限制
  • -Stream <String> - 写入 NTFS 备用数据流;仅在 Windows 上可用
  • -WhatIf - 显示将要执行的操作而不实际执行;别名 wi

#示例

写入文本文件

> Set-Content -Path ./config.txt -Value 'debug=true'
  • 如果文件不存在,Set-Content 会创建它。
  • 如果文件已存在,原有内容会被完全替换。

替换多个文件的内容

> Set-Content -Path ./logs/*.txt -Value 'Empty'
  • -Path 支持通配符,可以一次替换多个文件的内容。

通过管道写入

> 'hello' | Set-Content -Path ./note.txt
  • -Value 可以省略,管道输入会自动绑定到该参数。

替换文件中的文本

> (Get-Content ./notice.txt) -replace 'Warning', 'Caution' | Set-Content ./notice.txt
  • 先用 Get-Content 读取内容,替换后再整体写回文件。

不添加末尾换行

> Set-Content -Path ./version.txt -Value '1.0.0' -NoNewline
  • -NoNewline 适合写入版本号、令牌等不需要换行的内容。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2