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 長會將內容附加到指定的項目或檔案上。 內容可以從管線傳送,或透過 Value 參數指定。

如果你需要為以下範例建立檔案或目錄,請參見 新項目。

範例

範例 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 長檔會在目前目錄中建立兩個新檔案。 Value 參數包含 cmdlet 的Get-Date輸出。 PassThru 參數會將新增的內容輸出到管線中。 因為沒有其他 cmdlet 可以接收輸出,所以它會顯示在 PowerShell 主控台。 Get-Content指令長會顯示更新後的檔案。 DateTimeFile1.log

範例 3:將指定檔案的內容加入另一個檔案

這個範例是從檔案取得內容,並將內容儲存在變數中。 變數用來將內容附加到另一個檔案中。

$From = Get-Content -Path .\CopyFromFile.txt
Add-Content -Path .\CopyToFile.txt -Value $From
Get-Content -Path .\CopyToFile.txt
  • 指令長會 Get-Content 取得 的內容 CopyFromFile.txt ,並將內容儲存在變數中 $From 。
  • Add-Content指令長子會利用變數內容CopyToFile.txt更新$From檔案。
  • Get-Content指令長顯示 CopyToFile.txt。

範例 4:利用管線將指定檔案的內容加入另一個檔案

這個範例是從檔案取得內容,然後把它導管到指令碼(cmdlet)。Add-Content

Get-Content -Path .\CopyFromFile.txt | Add-Content -Path .\CopyToFile.txt
Get-Content -Path .\CopyToFile.txt

指令 Get-Content 小子取得 的內容 CopyFromFile.txt。 結果會被傳送到 Add-Content cmdlet,並更新 CopyToFile.txt。 最後一個 Get-Content 指令檔顯示 CopyToFile.txt。

範例 5:建立新檔案並複製內容

此範例會建立一個新檔案,並將現有檔案的內容複製到新檔案中。

Add-Content -Path .\NewFile.txt -Value (Get-Content -Path .\CopyFromFile.txt)
Get-Content -Path .\NewFile.txt
  • 指令 Add-Content 小程式使用 Path 和 Value 參數在目前目錄中建立新檔案。
  • 指令檔會 Get-Content 取得現有檔案的內容, CopyFromFile.txt 並將其傳入 Value 參數。 指令匣周圍 Get-Content 的括號確保指令在指令開始前 Add-Content 完成。
  • 指令Get-Content長會顯示新檔案的內容。 NewFile.txt

範例 6:將內容加入唯讀檔案

即使 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-Item指令小程式使用 Path 和 ItemType 參數在目前目錄中建立檔案IsReadOnlyTextFile.txt。
  • 指令 Set-ItemProperty 小檔使用 Name 和 Value 參數將檔案的 IsReadOnly 屬性改為 True。
  • Get-ChildItem指令檔顯示檔案為空0(),且具有唯讀屬性(r)。
  • 該 Add-Content cmdlet 使用 Path 參數來指定檔案。 Value 參數包含要附加到檔案上的文字字串。 Force 參數會將文字寫入唯讀檔案。
  • Get-Content指令小子使用 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
別名:參見

參數集

(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

指定目標檔案的編碼類型。 預設值為 utf8NoBOM。

編碼是檔案系統提供者在指令本中加入 Add-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

覆蓋唯讀屬性,讓你能將內容加入唯讀檔案。 例如, 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

Note

此參數僅適用於 Windows。

指定內容的替代資料流。 如果串流不存在,這個指令檔會建立它。 不支援通配符。

Stream 是一個動態參數,檔案系統提供者會 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到 時,物件會先被轉換成字串,然後才加入到物件中。 物件類型決定字串格式,但格式可能與物件的預設顯示不同。 要控制字串格式,請使用發送指令碼的格式參數。

  • Add-Content Cmdlet 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入 Get-PSProvider。 如需詳細資訊,請參閱 about_Providers。