Set-Content
撰寫新內容或替換檔案中的現有內容。
語法
Path (Default) - FileSystem provider
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>]
LiteralPath - FileSystem provider
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>]
Path (Default) - All providers
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
LiteralPath - All providers
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Set-Content 是一個字串處理的指令檔,可以寫入新內容或替換檔案中的內容。
Set-Content 取代現有內容,與 Add-Content 將內容附加到檔案中的指令小程式不同。 要傳送內容, Set-Content 你可以在命令列使用「 Value 」參數,或透過管線傳送內容。
如果你需要為以下範例建立檔案或目錄,請參見 新項目。
範例
範例 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 參數來列出目前目錄中以 .txtTest* 開頭的檔案。
Set-Content指令長 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:替換檔案中的文字
此指令會替換現有檔案中的所有 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.
Get-Content指令小程式使用 Path 參數來指定目前目錄中的 Notice.txt 檔案。
Get-Content指令會以括號包裝,讓指令在送出管線前完成。
Notice.txt 檔案的內容會透過管線傳送到ForEach-Object指令碼。
ForEach-Object 使用自動變數 $_ ,並將每次警告的 出現替換 為 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 中引進的。
當您搭配 Encoding 參數使用 AsByteStream 參數時,就會發生警告。 AsByteStream 參數忽略任何編碼,輸出以位元組串流形式呈現。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 參見 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Credential
Note
任何與 PowerShell 一起安裝的提供者都不支援此參數。 若要模擬其他使用者,或在執行此 Cmdlet 時提升您的認證,請使用 Invoke-Command。
參數屬性
| 類型: | PSCredential |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Encoding
這是 FileSystem 提供者所提供的動態參數。 如需詳細資訊,請參閱 about_FileSystem_Provider。
指定目標檔案的編碼類型。 預設值為 utf8NoBOM。
編碼是一個動態參數,檔案系統提供者會 Set-Content加入 。 此參數僅適用於檔案系統磁碟驅動器。
此參數可接受的值如下:
-
ascii:使用 ASCII (7 位) 字元集的編碼方式。 -
ansi:使用符合當前文化特性的 ANSI 代碼頁的編碼方式。 此選項已在PowerShell 7.4中新增。 -
bigendianunicode:使用高位元組序以 UTF-16 格式編碼。 -
bigendianutf32:使用大端字節順序以 UTF-32 格式進行編碼。 -
oem:使用 MS-DOS 和控制台程序的預設編碼方式。 -
unicode:使用小端位元組順序,以UTF-16格式進行編碼。 -
utf7:以UTF-7格式編碼。 -
utf8:以UTF-8格式編碼。 -
utf8BOM:以 UTF-8 格式(含位元組順序標記 BOM)編碼 -
utf8NoBOM:以 UTF-8 格式編碼,不含位元組順序標記【BOM】 -
utf32:以UTF-32格式編碼。
從 PowerShell 6.2 開始,編碼 參數也允許已註冊代碼頁的數值識別元(例如 -Encoding 1251)或已註冊代碼頁的字串名稱(例如 -Encoding "windows-1251")。 如需詳細資訊,請參閱 Encoding.CodePage的 .NET 檔。
從 PowerShell 7.4 開始,您可以使用 Ansi 參數的 值,傳遞目前文化的 ANSI 代碼頁的數值 ID,而不需要手動指定。
Note
UTF-7* 不再建議使用。 自 PowerShell 7.1 起,如果您為 utf7 參數指定 ,則會撰寫警告。
參數屬性
| 類型: | Encoding |
| 預設值: | utf8NoBOM |
| 接受的值: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Exclude
指定要在此 Cmdlet 作業中排除的項目或多項,並以字串陣列形式表示。 此參數的值對 路徑 參數進行限定。 輸入路徑元素或模式,例如 *.txt。 允許使用通配符字元。 只有在命令包含項目的內容,例如 時,C:\Windows\* 參數才有效,其中通配符會指定 C:\Windows 目錄的內容。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Filter
指定篩選條件,以限定 Path 參數。 FileSystem 提供者是唯一已安裝且支援使用篩選的 PowerShell 提供者。 您可以在 about_Wildcards中找到 FileSystem 篩選語言的語法。 篩選比其他參數更有效率,因為提供者會在 Cmdlet 取得物件時套用它們,而不是在擷取對象之後讓 PowerShell 篩選物件。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Force
強制指令長子設定檔案內容,即使該檔案是唯讀。 實作會因提供者而異。 如需詳細資訊,請參閱 about_Providers。 Force 參數不會覆蓋安全限制。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Include
指定此 Cmdlet 在操作中包含的一個或多個專案,這些專案是以字串陣列的形式表示。 此參數的值對 路徑 參數進行限定。 輸入路徑元素或模式,例如 "*.txt"。 允許使用通配符字元。 只有當命令包含項目的內容,例如 時,C:\Windows\* 參數才有效,其中通配符會指定 C:\Windows 目錄的內容。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-LiteralPath
指定通往一個或多個位置的路徑。 LiteralPath 的值會按原本輸入的方式使用。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。
如需詳細資訊,請參閱 about_Quoting_Rules。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | PSPath, LP |
參數集
LiteralPath
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-NoNewline
這是 FileSystem 提供者所提供的動態參數。 如需詳細資訊,請參閱 about_FileSystem_Provider。
輸入物件的字串表示會串連以形成輸出。 輸出字串之間不會插入空格或換行符。 最後一個輸出字串之後不會新增任何換行符。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-PassThru
回傳一個代表內容的物件。 根據預設,此 Cmdlet 不會產生任何輸出。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Path
指定接收內容的項目路徑。 允許使用通配符字元。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
Path
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Stream
這是 FileSystem 提供者所提供的動態參數。 此參數僅適用於 Windows。 如需詳細資訊,請參閱 about_FileSystem_Provider。
指定內容的替代資料流。 如果串流不存在,這個指令碼會建立它。 不支援通配符。
Stream 是一個動態參數,檔案 系統 提供者會 Set-Content加入 。 此參數僅適用於檔案系統磁碟驅動器。
你可以使用這個 Set-Content cmdlet 來建立或更新任何替代資料流的內容,例如 Zone.Identifier。 然而,我們不建議以此作為消除封鎖從網路下載檔案的安全檢查的方法。 如果您確認下載的檔案是安全的,請使用 Unblock-File Cmdlet。
此參數是在 PowerShell 3.0 中引進的。 從 PowerShell 7.2 起,可以 Set-Content 設定目錄和檔案中替代資料流的內容。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Value
指定該物品的新內容。
參數屬性
| 類型: | Object[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 1 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 指令未執行。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 威斯康辛 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
Object
你可以將包含該項目新值的物件管道傳送到這個 cmdlet。
輸出
None
根據預設,此 Cmdlet 不會傳回任何輸出。
String
當你使用 PassThru 參數時,這個 cmdlet 會回傳一個代表內容的字串。
備註
-
Set-Content設計用於串處理。 如果你把非字串物件管線到Set-Content,它會在寫入前先把物件轉換成字串。 要將物件寫入檔案,請使用Out-File。 -
Set-ContentCmdlet 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入Get-PSProvider。 如需詳細資訊,請參閱 about_Providers。