Set-Content
Zapisuje nową zawartość lub zastępuje istniejącą zawartość w pliku.
Składnia
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Opis
Set-Content
to polecenie cmdlet przetwarzania ciągów, które zapisuje nową zawartość lub zastępuje zawartość w pliku.
Set-Content
zastępuje istniejącą zawartość i różni się od polecenia cmdlet Add-Content
, które dołącza zawartość do pliku. Aby wysłać zawartość do Set-Content
, możesz użyć parametru Value w wierszu polecenia lub wysłać zawartość za pośrednictwem potoku.
Jeśli musisz utworzyć pliki lub katalogi dla następujących przykładów, zobacz New-Item.
Przykłady
Przykład 1. Zastępowanie zawartości wielu plików w katalogu
Ten przykład zastępuje zawartość wielu plików w bieżącym katalogu.
Get-ChildItem -Path .\Test*.txt
Test1.txt
Test2.txt
Test3.txt
Set-Content -Path .\Test*.txt -Value 'Hello, World'
Get-Content -Path .\Test*.txt
Hello, World
Hello, World
Hello, World
Polecenie cmdlet Get-ChildItem
używa parametru ścieżki , aby wyświetlić listę plików .txt rozpoczynających się od Test*
w bieżącym katalogu. Polecenie cmdlet Set-Content
używa parametru path w celu określenia plików Test*.txt
. Parametr Value zawiera ciąg tekstowy Hello, World, który zastępuje istniejącą zawartość w każdym pliku. Polecenie cmdlet Get-Content
używa parametru ścieżka, aby określić pliki Test*.txt
i wyświetlić zawartość każdego pliku w konsoli programu PowerShell.
Przykład 2. Tworzenie nowego pliku i zapisywanie zawartości
W tym przykładzie tworzony jest nowy plik i zapisuje bieżącą datę i godzinę w pliku.
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Set-Content
używa parametrów Path i Value w celu utworzenia nowego pliku o nazwie DateTime.txt w bieżącym katalogu. Parametr Value używa Get-Date
, aby uzyskać bieżącą datę i godzinę.
Set-Content
zapisuje obiekt DateTime w pliku jako ciąg. Polecenie cmdlet Get-Content
używa parametru path do wyświetlania zawartości DateTime.txt w konsoli programu PowerShell.
Przykład 3. Zastępowanie tekstu w pliku
To polecenie zastępuje wszystkie wystąpienia wyrazu w istniejącym pliku.
Get-Content -Path .\Notice.txt
Warning
Replace Warning with a new word.
The word Warning was replaced.
(Get-Content -Path .\Notice.txt) |
ForEach-Object {$_ -Replace 'Warning', 'Caution'} |
Set-Content -Path .\Notice.txt
Get-Content -Path .\Notice.txt
Caution
Replace Caution with a new word.
The word Caution was replaced.
Polecenie cmdlet Get-Content
używa parametru ścieżka, aby określić plik Notice.txt w bieżącym katalogu. Polecenie Get-Content
jest opakowane nawiasami, aby polecenie zostało zakończone przed wysłaniem potoku.
Zawartość pliku Notice.txt jest wysyłana w dół potoku do polecenia cmdlet ForEach-Object
.
ForEach-Object
używa $_
automatycznej zmiennej i zastępuje każde wystąpienie OstrzeżenieOstrzeżenie. Obiekty są wysyłane w dół potoku do polecenia cmdlet Set-Content
.
Set-Content
używa parametru ścieżka, aby określić plik Notice.txt i zapisać zaktualizowaną zawartość do pliku.
Ostatnie polecenie cmdlet Get-Content
wyświetla zaktualizowaną zawartość pliku w konsoli programu PowerShell.
Przykład 4. Używanie filtrów z Set-Content
Możesz określić filtr polecenia cmdlet Set-Content
. W przypadku używania filtrów do kwalifikowania parametru ścieżki należy dołączyć znak gwiazdki (*
), aby wskazać zawartość ścieżki.
Następujące polecenie ustawiło zawartość wszystkich plików *.txt
w katalogu C:\Temp
na wartość pustą.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Parametry
-AsByteStream
Jest to parametr dynamiczny udostępniany przez dostawcę systemu plików. Aby uzyskać więcej informacji, zobacz about_FileSystem_Provider.
Określa, że zawartość powinna być zapisywana 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ą zapisywane 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
Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Credential
Nuta
Ten parametr nie jest obsługiwany przez żadnych dostawców zainstalowanych w programie PowerShell. Aby personifikować innego użytkownika lub podnieść poziom poświadczeń podczas uruchamiania tego polecenia cmdlet, 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
Jest to parametr dynamiczny udostępniany przez dostawcę systemu plików. Aby uzyskać więcej informacji, zobacz about_FileSystem_Provider.
Określa typ kodowania dla pliku docelowego. Wartość domyślna to utf8NoBOM
.
Kodowanie jest parametrem dynamicznym, który dostawca systemu plików dodaje do Set-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 kolejności 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.
Nuta
UTF-7 * nie jest już zalecane. Zgodnie z programem PowerShell 7.1 ostrzeżenie jest zapisywane, 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, aby zakwalifikować parametr ś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ą wydajniejsze niż inne parametry, ponieważ dostawca stosuje je, gdy polecenie cmdlet pobiera obiekty zamiast filtrować obiekty po ich pobraniu.
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | True |
-Force
Wymusza ustawienie zawartości pliku przez polecenie cmdlet, nawet jeśli plik jest tylko do odczytu. Implementacja różni się od dostawcy do dostawcy. Aby uzyskać więcej informacji, zobacz about_Providers. Parametr Force nie zastępuje ograniczeń zabezpieczeń.
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ą symbole 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
Jest to parametr dynamiczny udostępniany przez dostawcę systemu plików. Aby uzyskać więcej informacji, zobacz about_FileSystem_Provider.
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 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ę elementu, który odbiera zawartość. Dozwolone są symbole wieloznaczne.
Typ: | String[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | True |
-Stream
Jest to parametr dynamiczny udostępniany przez dostawcę systemu plików. Ten parametr jest dostępny tylko w systemie Windows. Aby uzyskać więcej informacji, zobacz about_FileSystem_Provider.
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 Set-Content
. Ten parametr działa tylko na dyskach systemu plików.
Możesz użyć polecenia cmdlet Set-Content
, aby utworzyć lub zaktualizować 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. Od programu PowerShell 7.2 Set-Content
może ustawić zawartość alternatywnych strumieni danych z katalogów, a także plików.
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Value
Określa nową zawartość elementu.
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 jest uruchamiane.
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
Możesz przekazać do tego polecenia cmdlet obiekt zawierający nową wartość elementu.
Dane wyjściowe
None
Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.
Jeśli używasz parametru PassThru, to polecenie cmdlet zwraca ciąg reprezentujący zawartość.
Uwagi
-
Set-Content
jest przeznaczony do przetwarzania ciągów. W przypadku potoku obiektów innych niż ciąg doSet-Content
program konwertuje obiekt na ciąg przed zapisaniem go. Aby zapisać obiekty w plikach, użyjOut-File
. - Polecenie cmdlet
Set-Content
jest przeznaczone do pracy z danymi udostępnianymi przez dowolnego dostawcę. Aby wyświetlić listę dostawców dostępnych w sesji, wpiszGet-PsProvider
. Aby uzyskać więcej informacji, zobacz about_Providers.