Udostępnij za pośrednictwem


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

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 , możesz użyć parametru Value w wierszu polecenia lub wysłać zawartość za pośrednictwem potoku.

Jeśli musisz utworzyć pliki lub katalogi, aby zapoznać się z poniższymi przykładami, 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 Ścieżka , aby wyświetlić listę.txt plików rozpoczynających się od Test* bieżącego 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 nowego pliku i zapisu 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 polecenia Get-Date , 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 , aby wyświetlić zawartość 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 Ścieżka 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żeniaprzestrogą. Obiekty są wysyłane w dół potoku Set-Content do polecenia cmdlet. Set-Content używa parametru Ścieżka , aby określić plik 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żna określić filtr polecenia Set-Content cmdlet. W przypadku używania filtrów w celu zakwalifikowania parametru Ścieżka należy dołączyć gwiazdkę (*), aby wskazać zawartość ścieżki.

Następujące polecenie ustawiło zawartość wszystkich *.txt plików w C:\Temp katalogu na wartość pustą.

Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"

Parametry

-AsByteStream

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

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-Contentelementu . 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-bitowych).
  • 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 zamówienia bajtów (BOM)
  • utf32: Koduje w formacie UTF-32.

Począwszy od programu PowerShell 6.2, parametr kodowania umożliwia również identyfikatory liczbowe zarejestrowanych stron kodu (takich jak ) lub nazwy ciągów zarejestrowanych stron kodu (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. Od programu PowerShell 7.1 jest napisane ostrzeżenie, jeśli zostanie określone utf7 dla parametru 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 w celu zakwalifikowania parametru Ś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ść LiterałuPath 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

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

Uwaga

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

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

Object

Możesz przekazać potok obiektu zawierającego nową wartość elementu do Set-Content.

Dane wyjściowe

None or System.String

Gdy używasz parametru PassThru, generuje obiekt System.String, Set-Content który reprezentuje zawartość. W przeciwnym razie to polecenie cmdlet nie generuje żadnych danych wyjściowych.

Uwagi

  • Możesz również odwołać się do Set-Content jego wbudowanego aliasu . sc Aby uzyskać więcej informacji, zobacz about_Aliases.
  • Set-Content jest przeznaczony do przetwarzania ciągów. W przypadku potoku obiektów Set-Contentinnych niż ciąg do obiektu program konwertuje obiekt na ciąg przed zapisaniem go. Aby zapisać obiekty w plikach, użyj polecenia Out-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, wpisz Get-PsProvider. Aby uzyskać więcej informacji, zobacz about_Providers.