Add-Content
將內容新增至指定的專案,例如將單字新增至檔案。
語法
Path (預設值)
Add-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
Add-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Description
Add-Content Cmdlet 會將內容附加至指定的項目或檔案。 內容可以從管線傳入,或使用 Value 參數來指定。
如果您需要建立下列範例的檔案或目錄,請參閱 New-Item。
範例
範例 1:將字串新增至所有文字檔,但有一個例外
本範例會將值附加至目前目錄中的文本檔,但會根據其檔名排除檔案。
Add-Content -Path .\*.txt -Exclude help* -Value 'End of file'
Path 參數會指定目前目錄中的所有 .txt 檔案,但 Exclude 參數會忽略符合指定模式的檔名。
Value 參數會指定寫入檔案的文字字串。
使用 Get-Content 來顯示這些檔案的內容。
範例 2:將日期新增至指定檔案的結尾
本範例會將日期附加至目前目錄中的檔案,並在 PowerShell 控制台中顯示日期。
Add-Content -Path .\DateTimeFile1.log, .\DateTimeFile2.log -Value (Get-Date) -PassThru
Get-Content -Path .\DateTimeFile1.log
Tuesday, May 14, 2019 8:24:27 AM
Tuesday, May 14, 2019 8:24:27 AM
5/14/2019 8:24:27 AM
Add-Content Cmdlet 會在當前目錄中建立兩個新的檔案。
Value 參數包含 Get-Date Cmdlet 的輸出。
PassThru 參數會將新增的內容輸出至管線。 因為沒有其他 Cmdlet 可接收輸出,所以會顯示在 PowerShell 控制台中。
Get-Content Cmdlet 會顯示更新的檔案,DateTimeFile1.log。
範例 3:將指定檔案的內容新增至另一個檔案
這個範例會從檔案取得內容,並將內容儲存在變數中。 變數是用來將內容附加至另一個檔案。
$From = Get-Content -Path .\CopyFromFile.txt
Add-Content -Path .\CopyToFile.txt -Value $From
Get-Content -Path .\CopyToFile.txt
-
Get-ContentCmdlet 會取得CopyFromFile.txt的內容,並將內容儲存在$From變數中。 -
Add-ContentCmdlet 會使用CopyToFile.txt變數的內容來更新$From檔案。 -
Get-ContentCmdlet 會顯示 CopyToFile.txt。
範例 4:使用管線將指定檔案的內容新增至另一個檔案
這個範例會從檔案取得內容,並將它傳送至 Add-Content Cmdlet。
Get-Content -Path .\CopyFromFile.txt | Add-Content -Path .\CopyToFile.txt
Get-Content -Path .\CopyToFile.txt
Get-Content Cmdlet 會取得 CopyFromFile.txt的內容。 結果會透過管線傳送至 Add-Content cmdlet,以更新 CopyToFile.txt。
最後一個 Get-Content Cmdlet 會顯示 CopyToFile.txt。
範例 5:建立新的檔案和複製內容
此範例會建立新的檔案,並將現有檔案的內容複製到新檔案中。
Add-Content -Path .\NewFile.txt -Value (Get-Content -Path .\CopyFromFile.txt)
Get-Content -Path .\NewFile.txt
-
Add-ContentCmdlet 會使用 Path 和 Value 參數,在當前目錄中建立新檔案。 -
Get-ContentCmdlet 會取得現有檔案的內容,CopyFromFile.txt並將它傳遞至 Value 參數。Get-ContentCmdlet 周圍的括弧可確保命令會在Add-Content命令開始之前完成。 -
Get-ContentCmdlet 會顯示新檔案的內容,NewFile.txt。
範例 6:將內容新增至唯讀檔案
即使 isReadOnly IsReadOnly 檔案屬性設定為 true,此命令仍會將值新增至檔案。 建立唯讀檔案的步驟包含在範例中。
New-Item -Path .\IsReadOnlyTextFile.txt -ItemType File
Set-ItemProperty -Path .\IsReadOnlyTextFile.txt -Name IsReadOnly -Value $True
Get-ChildItem -Path .\IsReadOnlyTextFile.txt
Add-Content -Path .\IsReadOnlyTextFile.txt -Value 'Add value to read-only text file' -Force
Get-Content -Path .\IsReadOnlyTextFile.txt
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar-- 1/28/2019 13:35 0 IsReadOnlyTextFile.txt
-
New-ItemCmdlet 會使用 Path 和 ItemType 參數,在目前目錄中建立檔案IsReadOnlyTextFile.txt。 -
Set-ItemPropertyCmdlet 使用 Name 和 Value 參數,將檔案的 IsReadOnly 屬性變更為 True。 -
Get-ChildItemCmdlet 顯示檔案是空的 (0),而且具有唯讀屬性 (r)。 -
Add-ContentCmdlet 會使用 Path 參數來指定檔案。 Value 參數包含要附加至檔案的文字字串。 Force 參數會將文字寫入唯讀檔案。 -
Get-ContentCmdlet 會使用 Path 參數來顯示檔案的內容。
若要移除唯讀屬性,請使用 Set-ItemProperty 命令,並將 Value 參數設定為 False。
範例 7:使用篩選器與 Add-Content
您可以指定 Add-Content Cmdlet 的篩選條件。 使用篩選條件來限定 Path 參數時,您必須包含尾端星號 (*) 以指出路徑的內容。
下列命令會將「Done」這個字加入至 *.txt 目錄中所有 C:\Temp 檔案的內容中。
Add-Content -Path C:\Temp\* -Filter *.txt -Value "Done"
參數
-AsByteStream
指定內容應讀取為位元組流。 此參數是在 PowerShell 6.0 中引進的。
當您搭配 Encoding 參數使用 AsByteStream 參數時,就會發生警告。 AsByteStream 參數會忽略任何編碼,並將輸出當做位元組數據流傳回。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | cf |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Credential
備註
任何與 PowerShell 一起安裝的提供者都不支援此參數。 若要模擬其他使用者,或在執行此 Cmdlet 時提升您的認證,請使用 Invoke-Command。
參數屬性
| 類型: | PSCredential |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Encoding
指定目標檔案的編碼類型。 預設值是 utf8NoBOM。
編碼是 FileSystem 提供者新增至 Add-Content Cmdlet 的動態參數。 此參數僅適用於檔案系統磁碟驅動器。
此參數可接受的值如下:
-
ascii:使用 ASCII (7 位) 字元集的編碼方式。 -
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 檔。
備註
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
忽略唯讀屬性,允許您將內容加入到只讀檔案中。 例如,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
表示此 Cmdlet 不會將新行或歸位字元新增至內容。
輸入物件的字串表示會串連以形成輸出。 輸出字串之間不會插入空格或換行符。 最後一個輸出字串之後不會新增任何換行符。
參數屬性
| 類型: | 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
備註
此參數僅適用於 Windows。
指定內容的替代數據流。 如果數據流不存在,此 Cmdlet 會建立它。 不支援通配符。
Stream 是 FileSystem 提供者新增至 Add-Content的動態參數。 此參數僅適用於檔案系統磁碟驅動器。
您可以使用 Add-Content Cmdlet 來變更任何替代資料串流的內容,例如 Zone.Identifier。 不過,我們不建議這樣做,以消除封鎖從因特網下載之檔案的安全性檢查。 如果您確認下載的檔案是安全的,請使用 Unblock-File Cmdlet。
此參數是在 PowerShell 3.0 中引進的。 從 PowerShell 7.2 起,Add-Content 可以在檔案和目錄上以替代數據流為目標。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Value
指定要新增的內容。 輸入引號字串,例如 此數據僅供內部使用,或指定包含內容的物件,例如 產生的 Get-Date 物件。
您無法輸入檔案路徑來指定檔案的內容,因為路徑只是字串。
您可以使用 Get-Content 命令來取得內容,並將其傳遞至 Value 參數。
參數屬性
| 類型: | Object[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 1 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 該 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
您可以使用管線將值傳送至 Add-Content。
PSCredential
您可以使用管線將認證傳送至 Add-Content。
輸出
None
根據預設,此 Cmdlet 不會傳回任何輸出。
String
當您使用 PassThru 參數時,這個 Cmdlet 會傳回代表內容的 System.String 物件。
備註
PowerShell 包含下列 Add-Content的別名:
窗戶:
ac
當您使用管線將物件傳送至
Add-Content時,物件會先轉換成字串,再將它新增至項目。 物件類型會決定字串格式,但格式可能與對象的預設顯示不同。 若要控制字串格式,請使用傳送 Cmdlet 的格式參數。Add-ContentCmdlet 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入Get-PSProvider。 如需詳細資訊,請參閱 about_Providers。