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 Add-Content
polecenia cmdlet, które dołącza zawartość do pliku. Aby wysłać zawartość do Set-Content
usługi , możesz użyć parametru Value w wierszu polecenia lub wysłać zawartość za pośrednictwem potoku.
Jeśli chcesz utworzyć pliki lub katalogi w poniższych przykładach, zobacz New-Item (Nowy element).
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 Get-ChildItem
cmdlet używa parametru Path , aby wyświetlić listę .txt plików rozpoczynających Test*
się od w bieżącym katalogu. Polecenie Set-Content
cmdlet używa parametru Path do określenia Test*.txt
plików. Parametr Value zawiera ciąg tekstowy Hello World, który zastępuje istniejącą zawartość w każdym pliku. Polecenie Get-Content
cmdlet używa parametru Path do określenia Test*.txt
plików i wyświetlania zawartości każdego pliku w konsoli programu PowerShell.
Przykład 2: Twórca nowy plik i zapis 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 Ścieżka i Wartość , aby utworzyć nowy plik o nazwie DateTime.txt w bieżącym katalogu. Parametr Value używa Get-Date
polecenia , aby uzyskać bieżącą datę i godzinę.
Set-Content
zapisuje obiekt DateTime w pliku jako ciąg. Polecenie Get-Content
cmdlet 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 Get-Content
cmdlet używa parametru Path do określenia pliku 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 ForEach-Object
do polecenia cmdlet .
ForEach-Object
używa zmiennej automatycznej $_
i zastępuje każde wystąpienie ostrzeżeniaostrzeżeniem. Obiekty są wysyłane w dół potoku Set-Content
do polecenia cmdlet. Set-Content
Używa parametru Path do określenia pliku Notice.txt i zapisuje zaktualizowaną zawartość do pliku.
Get-Content
Ostatnie polecenie cmdlet 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 Set-Content
cmdlet. W przypadku używania filtrów w celu zakwalifikowania parametru Ścieżka należy uwzględnić końcową gwiazdkę (*
), aby wskazać zawartość ścieżki.
Następujące polecenie ustawia zawartość wszystkich *.txt
plików w C:\Temp
katalogu 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.
Ostrzeżenie występuje, gdy używasz parametru AsByteStream z parametrem Kodowanie . Parametr AsByteStream ignoruje dowolne kodowanie, a dane wyjściowe są zapisywane jako strumień bajtów.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Uwaga
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 polecenia Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 dodawanym przez dostawcę systemu plików do elementu 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 dla zestawu znaków ASCII (7-bitowy).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 konsolowych.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, parametr Kodowanie umożliwia również identyfikatory liczbowe zarejestrowanych stron kodowych (takich jak ) lub nazwy ciągów zarejestrowanych stron kodowych (na przykład -Encoding 1251
-Encoding "windows-1251"
). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą pliku Encoding.CodePage.
Uwaga
UtF-7* nie jest już zalecane do użycia. W programie PowerShell 7.1 ostrzeżenie jest zapisywane, jeśli określono utf7
parametr Kodowanie .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | utf8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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ść C:\Windows
katalogu.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Określa filtr, aby zakwalifikować parametr Ścieżka . Dostawca systemu plików jest jedynym zainstalowanym dostawcą programu PowerShell, który obsługuje 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.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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ń.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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ść C:\Windows
katalogu.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
Określa ścieżkę do co najmniej jednej lokalizacji. Wartość Parametru 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 znaki pojedynczego cudzysłowu. Znaki pojedynczego cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Aby uzyskać więcej informacji, zobacz about_Quoting_Rules.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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. Żadne spacje ani nowe linie nie są wstawiane między ciągami wyjściowymi. Po ostatnim ciągu danych wyjściowych nie jest dodawany żaden nowy wiersz.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Zwraca obiekt reprezentujący zawartość. Domyślnie to polecenie cmdlet nie generuje żadnego wyniku.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Określa ścieżkę elementu, który odbiera zawartość. Dozwolone są symbole wieloznaczne.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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 dodawanym przez dostawcę systemu plików do elementu Set-Content
. Ten parametr działa tylko na dyskach systemu plików.
Możesz użyć Set-Content
polecenia cmdlet , aby utworzyć lub zaktualizować zawartość dowolnego alternatywnego strumienia danych, takiego jak Zone.Identifier
. Nie zalecamy jednak tego jako sposobu na wyeliminowanie kontroli zabezpieczeń blokujących pliki pobierane z Internetu. Jeśli sprawdzisz, czy pobrany plik jest bezpieczny, użyj Unblock-File
polecenia cmdlet .
Ten parametr został wprowadzony w programie PowerShell 3.0. W programie PowerShell 7.2 Set-Content
można ustawić zawartość alternatywnych strumieni danych z katalogów, a także plików.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Value
Określa nową zawartość elementu.
Type: | Object[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Dane wejściowe
Do tego polecenia cmdlet można przekazać potok obiektu zawierającego 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. Jeśli obiekty inne niż ciągi są przesyłane potokiem doSet-Content
obiektu , konwertuje go na ciąg przed jego zapisaniem. Aby zapisać obiekty w plikach, użyj poleceniaOut-File
.- Polecenie
Set-Content
cmdlet 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.