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]
-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.