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
Get-ChildItem
cmdlet 使用
Path
参数列出当前目录中以
Test*
开头的
.txt
文件。
Set-Content
cmdlet 使用
Path
参数来指定
Test*.txt
文件。
Value
参数提供替换每个文件中现有内容的文本字符串
Hello, World
。
Get-Content
cmdlet 使用
Path
参数指定
Test*.txt
文件并在 PowerShell 控制台中显示每个文件的内容。
示例 2:创建新文件并写入内容
此示例创建一个新文件,并将当前日期和时间写入文件。
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
对象作为字符串写入文件。
Get-Content
cmdlet 使用
Path
参数在 PowerShell 控制台中显示
DateTime.txt
的内容。
示例 3:在文件中替换文本
此命令替换现有文件中单词的所有实例。
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.
Get-Content
cmdlet 使用
Path
参数指定当前目录中的
Notice.txt
文件。
Get-Content
命令用括号括起来,以便命令在通过管道向下发送之前完成。
Notice.txt
文件的内容将通过管道向下发送到
ForEach-Object
cmdlet。
ForEach-Object
使用自动变量
$_
,并将每次出现的
Warning
替换为
Caution
。 对象沿管道向下发送到
Set-Content
cmdlet。
Set-Content
使用
Path
参数指定
Notice.txt
文件并将更新的内容写入文件。
最后一个
Get-Content
cmdlet 在 PowerShell 控制台中显示更新的文件内容。
示例 4:将筛选器与 Set-Content 配合使用
可以指定
Set-Content
cmdlet 的筛选器。 使用筛选器限定
Path
参数时,需要包含尾随星号 (
*
),以指示路径的内容。
以下命令将
C:\Temp
目录中所有
*.txt
文件的内容设置为空
Value
。
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:True
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
。
这是
FileSystem
提供程序提供的动态参数。 有关详细信息,请参阅
about_FileSystem_Provider
。
指定目标文件的编码类型。 默认值为
utf8NoBOM
。
Encoding 是 FileSystem 提供程序添加到
Set-Content
的动态参数。 此参数仅在文件系统驱动器中有效。
此参数的可接受值如下所示:
ascii
:对 ASCII(7 位)字符集使用编码。
ansi
:对当前区域性的 ANSI 代码页使用编码。 此选项是在 PowerShell 7.4 中添加的。
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
:不使用字节顺序标记 (BOM) 以 UTF-8 格式进行编码
utf32
:采用 UTF-32 格式编码。
从 PowerShell 6.2 开始,Encoding
参数还允许注册代码页的数字 ID(如
-Encoding 1251
)或已注册代码页的字符串名称(如
-Encoding "windows-1251"
)。 有关详细信息,请参阅
Encoding.CodePage
.NET 文档。
从 PowerShell 7.4 开始,可以使用
Encoding
参数的
Ansi
值来传递当前区域性 ANSI 代码页的数字 ID,而无需手动指定它。
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:True
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:True
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:True
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
Object
可以通过管道将包含新的项值的对象传递给此 cmdlet。
默认情况下,此 cmdlet 不返回任何输出。
String
使用
PassThru
参数时,此 cmdlet 将返回一个表示内容的字符串。
Set-Content
用于字符串处理。 如果通过管道将非字符串对象传递给
Set-Content
,它会在写入之前将该对象转换为字符串。 若要将对象写入文件,请使用
Out-File
。
Set-Content
cmdlet 用于处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入
Get-PsProvider
。 有关详细信息,请参阅
about_Providers
。
about_Aliases
about_Automatic_Variables.md
about_Providers
Add-Content
Clear-Content
Get-ChildItem
Get-Content
ForEach-Object
New-Item