#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
完整参数可使用
Get-Help Set-Content -Full查看。
Set-Content会替换现有内容;若要在文件末尾追加内容,请使用Add-Content。非字符串对象在写入前会被转换为字符串。
#示例
写入文本文件
> 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适合写入版本号、令牌等不需要换行的内容。