Udostępnij za pośrednictwem


Add-Content

Dodaje zawartość do określonych elementów, takich jak dodawanie wyrazów do pliku.

Składnia

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

Opis

Polecenie cmdlet Add-Content dołącza zawartość do określonego elementu lub pliku. Zawartość można przekazać z potoku danych lub określić przy użyciu parametru Value.

Jeśli musisz utworzyć pliki lub katalogi dla następujących przykładów, zobacz New-Item.

Przykłady

Przykład 1. Dodawanie ciągu do wszystkich plików tekstowych z wyjątkiem

Ten przykład dołącza wartość do plików tekstowych w bieżącym katalogu, ale wyklucza pliki na podstawie ich nazwy pliku.

Add-Content -Path .\*.txt -Exclude help* -Value 'End of file'

Parametr ścieżka określa wszystkie pliki .txt w bieżącym katalogu, ale parametr wyklucz ignoruje nazwy plików zgodne z określonym wzorcem. Parametr Value określa ciąg tekstowy zapisywany w plikach.

Użyj Get-Content, aby wyświetlić zawartość tych plików.

Przykład 2. Dodawanie daty na końcu określonych plików

Ten przykład dołącza datę do plików w bieżącym katalogu i wyświetla datę w konsoli programu 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

Polecenie cmdlet Add-Content tworzy dwa nowe pliki w bieżącym katalogu. Parametr Value zawiera dane wyjściowe polecenia cmdlet Get-Date. Parametr PassThru zwraca dodaną zawartość do potoku. Ponieważ nie ma innego polecenia cmdlet do odbierania danych wyjściowych, są one wyświetlane w konsoli PowerShell. Polecenie cmdlet Get-Content wyświetla zaktualizowany plik DateTimeFile1.log.

Przykład 3. Dodawanie zawartości określonego pliku do innego pliku

W tym przykładzie zawartość jest pobierana z pliku i przechowuje zawartość w zmiennej. Zmienna jest używana do dołączania zawartości do innego pliku.

$From = Get-Content -Path .\CopyFromFile.txt
Add-Content -Path .\CopyToFile.txt -Value $From
Get-Content -Path .\CopyToFile.txt
  • Polecenie cmdlet Get-Content pobiera zawartość CopyFromFile.txt i przechowuje zawartość w zmiennej $From.
  • Polecenie cmdlet Add-Content aktualizuje plik CopyToFile.txt przy użyciu zawartości zmiennej $From.
  • Polecenie cmdlet Get-Content wyświetla CopyToFile.txt.

Przykład 4. Dodawanie zawartości określonego pliku do innego pliku przy użyciu potoku

W tym przykładzie zawartość jest pobierana z pliku i potokuje ją do polecenia cmdlet Add-Content.

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

Cmdlet Get-Content pobiera zawartość CopyFromFile.txt. Wyniki są przesyłane do polecenia cmdlet Add-Content, które aktualizuje CopyToFile.txt. Ostatni cmdlet Get-Content wyświetla CopyToFile.txt.

Przykład 5. Tworzenie nowego pliku i kopiowanie zawartości

W tym przykładzie tworzony jest nowy plik i kopiuje zawartość istniejącego pliku do nowego pliku.

Add-Content -Path .\NewFile.txt -Value (Get-Content -Path .\CopyFromFile.txt)
Get-Content -Path .\NewFile.txt
  • Polecenie cmdlet Add-Content używa parametrów Path i Value do utworzenia nowego pliku w bieżącym katalogu.
  • Polecenie cmdlet Get-Content pobiera zawartość istniejącego pliku, CopyFromFile.txt i przekazuje ją do parametru Value. Nawiasy wokół polecenia cmdlet Get-Content upewniają się, że polecenie zakończy się przed rozpoczęciem polecenia Add-Content.
  • Polecenie cmdlet Get-Content wyświetla zawartość nowego pliku NewFile.txt.

Przykład 6. Dodawanie zawartości do pliku tylko do odczytu

To polecenie dodaje wartość do pliku, nawet jeśli atrybut IsReadOnly jest ustawiony na wartość True. Kroki tworzenia pliku tylko do odczytu znajdują się w przykładzie.

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
  • Polecenie cmdlet New-Item używa parametrów Path i ItemType w celu utworzenia pliku IsReadOnlyTextFile.txt w bieżącym katalogu.
  • Polecenie cmdlet Set-ItemProperty używa parametrów Name i Value, aby zmienić właściwość IsReadOnly pliku na True.
  • Polecenie cmdlet Get-ChildItem pokazuje, że plik jest pusty (0) i ma atrybut tylko do odczytu (r).
  • Polecenie cmdlet Add-Content używa parametru Path w celu określenia pliku. Parametr Value zawiera ciąg tekstowy do dołączenia do pliku. Parametr Force zapisuje tekst w pliku tylko do odczytu.
  • Polecenie cmdlet Get-Content używa parametru path do wyświetlania zawartości pliku.

Aby usunąć atrybut tylko do odczytu, użyj polecenia Set-ItemProperty z parametrem Value ustawionym na False.

Przykład 7. Używanie filtrów z Add-Content

Możesz określić filtr dla polecenia cmdlet Add-Content. W przypadku używania filtrów do kwalifikowania parametru ścieżki , należy dołączyć gwiazdkę na końcu (*), aby wskazać zawartość ścieżki.

Następujące polecenie dodaje wyraz "Done" do zawartości wszystkich plików *.txt w katalogu C:\Temp.

Add-Content -Path C:\Temp\* -Filter *.txt -Value "Done"

Parametry

-AsByteStream

Określa, że zawartość powinna być odczytywana jako strumień bajtów. Ten parametr został wprowadzony w programie PowerShell 6.0.

Podczas używania parametru AsByteStream z parametrem Encoding występuje ostrzeżenie. Parametr AsByteStream ignoruje kodowanie, a dane wyjściowe są zwracane jako strumień bajtów.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Confirm

Prosi o potwierdzenie przed uruchomieniem cmdlet.

Typ:SwitchParameter
Aliasy:cf
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Credential

Notatka

Ten parametr nie jest obsługiwany przez żadnych dostawców zainstalowanych w programie PowerShell. Aby podszywać się pod innego użytkownika lub podnieść swoje poświadczenia podczas uruchamiania tego cmdletu, użyj Invoke-Command.

Typ:PSCredential
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Encoding

Określa typ kodowania dla pliku docelowego. Wartość domyślna to utf8NoBOM.

Kodowanie jest parametrem dynamicznym, który dostawca systemu plików dodaje do polecenia cmdlet Add-Content. Ten parametr działa tylko na dyskach systemu plików.

Dopuszczalne wartości tego parametru są następujące:

  • ascii: używa kodowania zestawu znaków ASCII (7-bitowych).
  • ansi: używa kodowania dla strony kodowej ANSI bieżącej kultury. Ta opcja została dodana w programie PowerShell 7.4.
  • bigendianunicode: koduje w formacie UTF-16 przy użyciu kolejności bajtów big-endian.
  • bigendianutf32: Koduje w formacie UTF-32 przy użyciu kolejności bajtów big-endian.
  • oem: używa domyślnego kodowania dla programów MS-DOS i konsoli.
  • unicode: Koduje w formacie UTF-16 przy użyciu porządku bajtów little-endian.
  • utf7: koduje w formacie UTF-7.
  • utf8: koduje w formacie UTF-8.
  • utf8BOM: koduje w formacie UTF-8 za pomocą znacznika kolejności bajtów (BOM)
  • utf8NoBOM: koduje w formacie UTF-8 bez znaku kolejności bajtów (BOM)
  • utf32: koduje w formacie UTF-32.

Począwszy od programu PowerShell 6.2, Kodowanie parametr umożliwia również numeryczne identyfikatory zarejestrowanych stron kodu (na przykład -Encoding 1251) lub nazwy ciągów zarejestrowanych stron kodu (na przykład -Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą Encoding.CodePage.

Począwszy od programu PowerShell 7.4, można użyć wartości Ansi parametru kodowania, aby przekazać identyfikator liczbowy dla strony kodowej ANSI bieżącej kultury bez konieczności ręcznego określania go.

Notatka

UTF-7 * nie jest już zalecane do użycia. Od wersji PowerShell 7.1 zapisywane jest ostrzeżenie, jeśli określisz utf7 dla parametru kodowania .

Typ:Encoding
Dopuszczalne wartości:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Domyślna wartość:UTF8NoBOM
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Exclude

Określa jako tablicę ciągów element lub elementy, które to polecenie cmdlet wyklucza w operacji. Wartość tego parametru kwalifikuje parametr Path. Wprowadź element ścieżki lub wzorzec, taki jak *.txt. Dozwolone są symbole wieloznaczne. Parametr Exclude jest skuteczny tylko wtedy, gdy polecenie zawiera zawartość elementu, na przykład C:\Windows\*, gdzie symbol wieloznaczny określa zawartość katalogu C:\Windows.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-Filter

Określa filtr do wyznaczenia parametru ścieżki. Dostawca systemu plików jest jedynym zainstalowanym dostawcą programu PowerShell obsługującym korzystanie z filtrów. Składnię języka filtru systemu plików można znaleźć w about_Wildcards. Filtry są bardziej wydajne niż inne parametry, ponieważ dostawca stosuje je, gdy polecenie cmdlet pobiera obiekty, zamiast filtrować obiekty programu PowerShell po ich pobraniu.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-Force

Zastępuje atrybut tylko do odczytu, umożliwiając dodawanie zawartości do pliku tylko do odczytu. Na przykład Opcje wymuszania zastępują atrybut tylko do odczytu, ale nie zmieniają uprawnień do pliku.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Include

Określa jako tablicę ciągów element lub elementy, które to polecenie cmdlet zawiera w operacji. Wartość tego parametru kwalifikuje parametr Path. Wprowadź element ścieżki lub wzorzec, taki jak "*.txt". Dozwolone są znaki wieloznaczne. Parametr Include jest skuteczny tylko wtedy, gdy polecenie zawiera zawartość elementu, na przykład C:\Windows\*, gdzie symbol wieloznaczny określa zawartość katalogu C:\Windows.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-LiteralPath

Określa ścieżkę do co najmniej jednej lokalizacji. Wartość LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze znaki cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.

Aby uzyskać więcej informacji, zobacz about_Quoting_Rules.

Typ:String[]
Aliasy:PSPath, LP
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-NoNewline

Wskazuje, że to polecenie cmdlet nie dodaje nowego wiersza ani powrotu karetki do zawartości.

Reprezentacje ciągów obiektów wejściowych są łączone w celu utworzenia danych wyjściowych. Między ciągami wyjściowymi nie są wstawione spacje ani nowe linie. Nie dodano nowego wiersza po ostatnim ciągu danych wyjściowych.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-PassThru

Zwraca obiekt reprezentujący dodaną zawartość. Domyślnie to polecenie cmdlet nie generuje żadnych danych wyjściowych.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Path

Określa ścieżkę do elementów, które otrzymują dodatkową zawartość. Dozwolone są symbole wieloznaczne. Ścieżki muszą być ścieżkami do elementów, a nie do kontenerów. Na przykład należy określić ścieżkę do jednego lub kilku plików, a nie ścieżkę do katalogu. Jeśli określisz wiele ścieżek, użyj przecinków, aby oddzielić ścieżki.

Typ:String[]
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:True

-Stream

Notatka

Ten parametr jest dostępny tylko w systemie Windows.

Określa alternatywny strumień danych dla zawartości. Jeśli strumień nie istnieje, to polecenie cmdlet go utworzy. Symbole wieloznaczne nie są obsługiwane.

Stream jest parametrem dynamicznym, który dostawca systemu plików dodaje do Add-Content. Ten parametr działa tylko na dyskach systemu plików.

Możesz użyć polecenia cmdlet Add-Content, aby zmienić zawartość dowolnego alternatywnego strumienia danych, takiego jak Zone.Identifier. Nie zalecamy jednak tego jako sposobu na wyeliminowanie kontroli zabezpieczeń, które blokują pliki pobierane z Internetu. Jeśli sprawdzisz, czy pobrany plik jest bezpieczny, użyj polecenia cmdlet Unblock-File.

Ten parametr został wprowadzony w programie PowerShell 3.0. W wersji PowerShell 7.2 Add-Content mogą obsługiwać alternatywne strumienie danych zarówno w plikach, jak i katalogach.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Value

Określa zawartość do dodania. Wpisz ciąg cudzysłów, taki jak Te dane są przeznaczone tylko do użytku wewnętrznego, lub określ obiekt zawierający zawartość, na przykład obiekt DateTime, który Get-Date generuje.

Nie można określić zawartości pliku, wpisując jego ścieżkę, ponieważ ścieżka jest tylko ciągiem. Możesz użyć polecenia Get-Content, aby pobrać zawartość i przekazać ją do parametru Value.

Typ:Object[]
Position:1
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-WhatIf

Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Polecenie cmdlet nie zostało uruchomione.

Typ:SwitchParameter
Aliasy:wi
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

Object

Można przekierować wartości do Add-Content.

PSCredential

Możesz przesłać poświadczenia do Add-Content.

Dane wyjściowe

None

Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.

String

Jeśli używasz parametru PassThru, to polecenie cmdlet zwraca obiekt System.String reprezentujący zawartość.

Uwagi

Program PowerShell zawiera następujące aliasy dla Add-Content:

  • Windows:

    • ac
  • Gdy przesyłasz obiekt do Add-Content, jest on konwertowany na ciąg przed dodaniem do elementu. Typ obiektu określa format ciągu, ale format może być inny niż domyślny ekran obiektu. Aby kontrolować format ciągu, użyj parametrów formatowania polecenia cmdlet wysyłającego.

  • Polecenie cmdlet Add-Content jest przeznaczone do pracy z danymi udostępnianymi przez dowolnego dostawcę. Aby wyświetlić listę dostawców dostępnych w sesji, wpisz Get-PSProvider. Aby uzyskać więcej informacji, zobacz about_Providers.