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>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
Set-Content
是一个字符串处理 cmdlet,用于写入新内容或替换文件中的内容。 Set-Content
替换现有内容,不同于 Add-Content
将内容追加到文件的 cmdlet。 若要将内容发送到 Set-Content
,可以在命令行上使用 Value 参数或通过管道发送内容。
如果需要为以下示例创建文件或目录,请参阅 New-Item。
示例
示例 1:替换目录中多个文件的内容
此示例替换当前目录中多个文件的内容。
Get-ChildItem -Path .\Test*.txt
Test1.txt
Test2.txt
Test3.txt
Set-Content -Path .\Test*.txt -Value 'Hello, World'
Get-Content -Path .\Test*.txt
Hello, World
Hello, World
Hello, World
cmdlet Get-ChildItem
使用 Path 参数列出 当前 目录中以 Test*
开头.txt文件。 cmdlet Set-Content
使用 Path 参数指定 Test*.txt
文件。 Value 参数提供替换每个文件中现有内容Hello World 的文本字符串。 cmdlet Get-Content
使用 Path 参数指定文件, Test*.txt
并在 PowerShell 控制台中显示每个文件的内容。
示例 2:Create新文件和写入内容
此示例创建一个新文件,并将当前日期和时间写入该文件。
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Set-Content
使用 Path 和 Value 参数在当前目录中创建名为 DateTime.txt 的新文件。 Value 参数使用 Get-Date
获取当前日期和时间。
Set-Content
将 DateTime 对象作为字符串写入文件。 cmdlet Get-Content
使用 Path 参数在 PowerShell 控制台中显示 DateTime.txt 的内容。
示例 3:在文件中替换文本
此命令替换现有文件中 word 的所有实例。
Get-Content -Path .\Notice.txt
Warning
Replace Warning with a new word.
The word Warning was replaced.
(Get-Content -Path .\Notice.txt) |
ForEach-Object {$_ -Replace 'Warning', 'Caution'} |
Set-Content -Path .\Notice.txt
Get-Content -Path .\Notice.txt
Caution
Replace Caution with a new word.
The word Caution was replaced.
cmdlet Get-Content
使用 Path 参数指定当前目录中 的Notice.txt 文件。 命令 Get-Content
用括号包装,以便命令在发送到管道之前完成。
Notice.txt 文件的内容通过管道ForEach-Object
发送到 cmdlet。
ForEach-Object
使用自动变量 $_
,并将每次出现的 警告 替换为 “警告”。 对象在管道中向下发送到 Set-Content
cmdlet。 Set-Content
使用 Path 参数指定 Notice.txt 文件并将更新的内容写入文件。
最后一个 Get-Content
cmdlet 在 PowerShell 控制台中显示更新的文件内容。
示例 4:将筛选器与 Set-Content
可以指定 cmdlet 的 Set-Content
筛选器。 使用筛选器限定 Path 参数时,需要包含尾随星号 (*
) 以指示路径的内容。
以下命令将目录中所有 *.txt
文件 C:\Temp
的内容设置为 空值 。
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
参数
-AsByteStream
这是 FileSystem 提供程序提供的动态参数。 有关详细信息,请参阅 about_FileSystem_Provider。
指定应将内容写入为字节流。 此参数是在 PowerShell 6.0 中引入的。
将 AsByteStream 参数与 Encoding 参数一起使用时,会出现警告。 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
这是 FileSystem 提供程序提供的动态参数。 有关详细信息,请参阅 about_FileSystem_Provider。
指定目标文件的编码类型。 默认值为 utf8NoBOM
。
编码是 FileSystem 提供程序添加到 Set-Content
的动态参数。 此参数仅在文件系统驱动器中有效。
此参数的可接受值如下所示:
ascii
:使用 ASCII (7 位) 字符集的编码。bigendianunicode
:使用 big-endian 字节顺序以 UTF-16 格式进行编码。bigendianutf32
:使用 big-endian 字节顺序以 UTF-32 格式进行编码。oem
:对 MS-DOS 和控制台程序使用默认编码。unicode
:使用 little-endian 字节顺序以 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 文档。
注意
不再建议使用 UTF-7* 。 从 PowerShell 7.1 起,如果为 Encoding 参数指定 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
强制该 cmdlet 设置文件内容(即使该文件是只读的)。 不同提供程序有不同的实现。 有关详细信息,请参阅 about_Providers。 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
这是 FileSystem 提供程序提供的动态参数。 有关详细信息,请参阅 about_FileSystem_Provider。
输入对象的字符串表示形式连接在一起,形成输出。 在输出字符串之间不插入空格或换行符。 未在最后一个输出字符串之后添加换行符。
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
这是 FileSystem 提供程序提供的动态参数。 此参数仅在 Windows 上可用。 有关详细信息,请参阅 about_FileSystem_Provider。
指定内容的备用数据流。 如果该流不存在,则此 cmdlet 将创建它。 不支持通配符。
Stream是 FileSystem 提供程序添加到 Set-Content
的动态参数。 此参数仅在文件系统驱动器中有效。
可以使用 Set-Content
cmdlet 创建或更新任何备用数据流的内容,例如 Zone.Identifier
。 但是,若要取消安全检查(该安全检查可阻止从 Internet 下载的文件),则不建议使用此方法。 如果验证下载的文件是否安全,请使用 Unblock-File
cmdlet。
此参数是在 PowerShell 3.0 中引入的。 从 PowerShell 7.2 起, Set-Content
可以设置目录和文件中备用数据流的内容。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-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 |
输入
可以通过管道将包含新的项值的对象传递给此 cmdlet。
输出
None
默认情况下,此 cmdlet 不返回任何输出。
使用 PassThru 参数时,此 cmdlet 返回表示内容的字符串。
备注
Set-Content
专为字符串处理而设计。 如果通过管道将非字符串对象传递给Set-Content
,则会在写入对象之前将该对象转换为字符串。 若要将 对象写入文件,请使用Out-File
。- 该
Set-Content
cmdlet 旨在处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入Get-PsProvider
。 有关详细信息,请参阅 about_Providers。