在项中写入内容或用新内容替换其中的内容。
语法
Set-Content [-LiteralPath] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>] Set-Content [-Path] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]
说明
Set-Content cmdlet 是一个字符串处理 cmdlet,用来向指定的项(如文件)中写入内容或替换其中的内容。Add-Content cmdlet 将内容附加到文件中,而 Set-Content 替换现有内容。您可以在命令中键入内容,也可以通过管道将内容发送给 Set-Content。
参数
-Credential <PSCredential>
指定有权执行此操作的用户帐户。默认值为当前用户。
键入用户名,如“User01”或“Domain01\User01”;或输入 PSCredential 对象,如 Get-Credential cmdlet 输入的一个 PSCredential 对象。如果键入用户名,则将提示您输入密码。
随同 Windows PowerShell 一起安装的任何提供程序都不支持此参数
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Exclude <string[]>
忽略指定项。此参数的值对 Path 参数进行限定。请输入路径元素或模式,例如“*.txt”。允许使用通配符。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Filter <string>
以提供程序的格式或语言指定筛选器。此参数的值对 Path 参数进行限定。筛选器的语法(包括通配符的使用)取决于提供程序。筛选器比其他参数更有效,因为提供程序是在检索对象时应用筛选器,而不是在检索对象后再由 Windows PowerShell 筛选对象。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Force
允许该 cmdlet 设置文件内容(即使该文件是只读的)。不同提供程序有不同的实现。有关详细信息,请参阅 about_Providers。即使使用 Force 参数,该 cmdlet 也无法覆盖安全限制。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Include <string[]>
只更改指定项。此参数的值对 Path 参数进行限定。请输入路径元素或模式,例如“*.txt”。允许使用通配符。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-LiteralPath <string[]>
指定将接受内容的项的路径。与 Path 不同,LiteralPath 的值严格按照所键入的形式使用。不会将任何字符解释为通配符。如果路径包括转义符,请将其括在单引号中。单引号会告知 Windows PowerShell 不要将所有字符都解释为转义序列。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-PassThru
返回一个表示内容的对象。默认情况下,此 cmdlet 将不产生任何输出。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Path <string[]>
指定将接受内容的项的路径。允许使用通配符。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Value <Object[]>
为项指定新的内容。
是否为必需? |
true |
位置? |
2 |
默认值 |
|
是否接受管道输入? |
true (ByValue, ByPropertyName) |
是否接受通配符? |
false |
-Confirm
在执行命令之前提示您进行确认。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-WhatIf
描述如果执行该命令会发生什么情况(无需实际执行该命令)。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-UseTransaction
将命令包含在活动事务中。仅当正在执行事务时,此参数才有效。有关详细信息,请参阅 about_Transactions。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
System.Object 可以通过管道将包含新的项值的对象传递给 Set-Content。 |
输出 |
None 或 System.String 如果使用 Passthru 参数,则 Set-Content 生成一个表示内容的 System.String 对象。否则,此 cmdlet 将不产生任何输出。 |
说明
还可以使用 Set-Content 的内置别名“sc”来对其进行引用。有关详细信息,请参阅 about_Aliases。
Set-Content 用于字符串处理。如果通过管道将非字符串对象传递给 Set-Content,它会在写入之前将该对象转换为字符串。若要将对象写入文件,请使用 Out-File。
Set-Content cmdlet 用于处理由任何提供程序公开的数据。要列出会话中可用的提供程序,请键入“Get-PsProvider”。有关详细信息,请参阅 about_Providers。
示例 1
C:\PS>set-content -path C:\Test1\test*.txt -value "Hello, World" 说明 ----------- 此命令将 Test1 目录中所有名称以“test”开头的文件中的内容替换为“Hello, World”。这个示例演示如何通过在命令中键入来指定内容。
示例 2
C:\PS>get-date | set-content C:\Test1\date.csv 说明 ----------- 此命令创建一个只包含当前日期和时间的逗号分隔的变量长度 (csv) 文件。它使用 Get-Date cmdlet 来获取当前的系统日期和时间。管道运算符将结果传递给 Set-Content,后者创建文件并写入内容。 如果 Test1 目录不存在,命令将失败,但是如果文件不存在,此命令将创建它。
示例 3
C:\PS>(get-content Notice.txt) | foreach-object {$_ -replace "Warning", "Caution"} | set-content Notice.txt 说明 ----------- 此命令将 Notice.txt 文件中出现的所有“Warning”实例替换为“Caution”。 它使用 Get-Content cmdlet 来获取 Notice.txt 的内容。管道运算符将结果发送到 ForEach-Object cmdlet,后者将表达式应用到 Get-Content 中的每一行内容。此表达式使用“$_”符号引用当前项,使用 Replace 参数指定要替换的文本。 另一个管道运算符将更改的内容发送到 Set-Content,后者用新的内容替换 Notice.txt 中的文本。 Get-Content 命令外面的圆括号可确保在 Get 操作完成后才开始 Set 操作。Without them, the command will fail because the two functions will be trying to access the same file.
另请参阅