Add-Content

Dopisuje zawartość na końcu pliku.

Add-Content to cmdlet PowerShella, który dopisuje tekst (lub inną zawartość) na końcu istniejącego pliku, nie ruszając tego, co już w nim jest. To powershellowy odpowiednik operatora >> znanego z basha. Najczęściej używasz go do logowania, doklejania linijek do plików konfiguracyjnych czy budowania raportów krok po kroku. Jeśli plik nie istnieje, Add-Content potrafi go utworzyć. Kluczowa różnica względem Set-Content: Set-Content nadpisuje całość, a Add-Content tylko dokłada na koniec.

Składnia i najważniejsze opcje

Podstawowa forma wygląda tak: Add-Content [-Path] [-Value]

  • -Path — ścieżka do pliku (lub plików), do którego dopisujesz. Akceptuje symbole wieloznaczne.
  • -Value — zawartość do dopisania. Może być stringiem, liczbą, tablicą albo obiektami z pipeline’u.
  • -LiteralPath — jak -Path, ale traktuje ścieżkę dosłownie, bez interpretacji *, ? czy nawiasów. Ratuje przy dziwnych nazwach plików.
  • -NoNewline — nie dodaje znaku nowej linii po wpisie. Wartości są sklejane bez separatora, więc uważaj.
  • -Encoding — kodowanie zapisu, np. utf8, ascii, unicode. Od PowerShella 7.4 dostępne jest też ansi.
  • -Force — pozwala pisać do pliku tylko do odczytu (read-only).
  • -Filter — filtruje pliki przy ścieżce z symbolami wieloznacznymi.
  • -WhatIf — pokazuje, co by się stało, ale nic nie zapisuje. Dobry nawyk przed masową operacją.

Przykłady użycia

  • Add-Content -Path log.txt -Value "Start: $(Get-Date)" — dokleja linijkę ze znacznikiem czasu na koniec pliku logu.
  • "linia 1","linia 2" | Add-Content -Path notatki.txt — dopisuje każdy element tablicy jako osobną linię, korzystając z pipeline’u.
  • Add-Content -Path config.ini -Value "debug=true" -Encoding utf8 — dokłada wpis konfiguracyjny z jawnie ustawionym kodowaniem UTF-8.
  • Get-Process | Out-String | Add-Content raport.txt — zrzuca listę procesów do raportu, doklejając ją na koniec.
  • Add-Content -Path readonly.txt -Value "wpis" -Force — wymusza dopisanie do pliku oznaczonego jako tylko do odczytu.

Częste błędy i pułapki

Kodowanie. W Windows PowerShell 5.1 domyślnie jest to ANSI, a w PowerShell 7+ to UTF-8 bez BOM. Jeśli mieszasz Add-Content z różnych wersji do tego samego pliku, łatwo o krzaki zamiast polskich znaków. Ustawiaj -Encoding jawnie.

NoNewline. -NoNewline nie wstawia separatora między wartościami ani po ostatniej. Łatwo skleić wszystko w jedną kaszę, więc sam dodaj separator, jeśli go potrzebujesz.

Set-Content vs Add-Content. Klasyczna pomyłka: chcesz dokleić, a używasz Set-Content i kasujesz całą zawartość. Do dopisywania jest Add-Content.

Blokada pliku. Jeśli plik trzyma inny proces, dostaniesz błąd dostępu. -Force obejdzie tylko atrybut read-only, nie zdejmie blokady systemowej.

Powiązane komendy: Set-Content, Get-Content, Clear-Content, Out-File, New-Item.