Sdílet prostřednictvím


Set-Content

Zapíše nový obsah nebo nahradí existující obsah v souboru.

Syntaxe

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

Description

Set-Content je rutina pro zpracování řetězců, která zapisuje nový obsah nebo nahrazuje obsah v souboru. Set-Content nahradí existující obsah a liší se od rutiny Add-Content, která připojuje obsah k souboru. K odesílání obsahu do Set-Content můžete použít parametr Hodnota na příkazovém řádku nebo odeslat obsah prostřednictvím kanálu.

Pokud potřebujete vytvořit soubory nebo adresáře pro následující příklady, přečtěte si New-Item .

Příklady

Příklad 1: Nahrazení obsahu více souborů v adresáři

Tento příklad nahrazuje obsah více souborů v aktuálním adresáři.

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

Rutina Get-ChildItem používá parametr Path k výpisu .txt souborů, které začínají Test* v aktuálním adresáři. Rutina Set-Content používá k určení Test*.txt souborů parametr Path. Parametr hodnota poskytuje textový řetězec Hello, World, který nahradí existující obsah v každém souboru. Rutina Get-Content pomocí parametru Cesta určuje soubory Test*.txt a zobrazí obsah jednotlivých souborů v konzole PowerShellu.

Příklad 2: Vytvoření nového souboru a zápis obsahu

Tento příklad vytvoří nový soubor a zapíše aktuální datum a čas do souboru.

Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt

1/30/2019 09:55:08

Set-Content používá parametry Path a Value k vytvoření nového souboru s názvem DateTime.txt v aktuálním adresáři. Parametr hodnoty používá k získání aktuálního data a času Get-Date. Set-Content zapíše objekt DateTime do souboru jako řetězec. Rutina Get-Content používá parametr Path k zobrazení obsahu DateTime.txt v konzole PowerShellu.

Příklad 3: Nahrazení textu v souboru

Tento příkaz nahradí všechny instance slova v existujícím souboru.

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.

Rutina Get-Content používá parametr Path k určení souboru Notice.txt v aktuálním adresáři. Příkaz Get-Content se zabalí do závorek, aby se příkaz dokončil před odesláním kanálu.

Obsah souboru Notice.txt se odešle do kanálu do rutiny ForEach-Object. ForEach-Object používá automatickou proměnnou $_ a nahradí každý výskyt upozornění Upozornění. Objekty se odesílají do Set-Content rutiny. Set-Content použije parametr Path k určení souboru Notice.txt a zapíše aktualizovaný obsah do souboru.

Poslední Get-Content rutina zobrazí aktualizovaný obsah souboru v konzole PowerShellu.

Příklad 4: Použití filtrů s Set-Content

Můžete zadat filtr pro Set-Content rutinu. Při použití filtrů k kvalifikaci parametru Path musíte zahrnout koncovou hvězdičku (*), která označuje obsah cesty.

Následující příkaz nastaví obsah všech *.txt souborů v adresáři C:\Temp na hodnotu hodnota prázdné.

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

Parametry

-AsByteStream

Toto je dynamický parametr zpřístupněný poskytovatelem FileSystem. Další informace najdete v tématu about_FileSystem_Provider.

Určuje, že obsah by měl být zapsán jako datový proud bajtů. Tento parametr byl představen v PowerShellu 6.0.

K upozornění dojde, když použijete parametr AsByteStream s parametrem Encoding. Parametr AsByteStream ignoruje kódování a výstup se zapíše jako datový proud bajtů.

Typ:SwitchParameter
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Confirm

Před spuštěním rutiny vás vyzve k potvrzení.

Typ:SwitchParameter
Aliasy:cf
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Credential

Poznámka

Tento parametr nejsou podporovány žádnými poskytovateli nainstalovanými v PowerShellu. Pokud chcete zosobnit jiného uživatele nebo zvýšit oprávnění při spuštění této rutiny, použijte Invoke-Command.

Typ:PSCredential
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-Encoding

Toto je dynamický parametr zpřístupněný poskytovatelem FileSystem. Další informace najdete v tématu about_FileSystem_Provider.

Určuje typ kódování cílového souboru. Výchozí hodnota je utf8NoBOM.

Kódování je dynamický parametr, který zprostředkovatel FileSystem přidává do Set-Content. Tento parametr funguje jenom na jednotkách systému souborů.

Přijatelné hodnoty pro tento parametr jsou následující:

  • ascii: Používá kódování znakové sady ASCII (7bitová).
  • ansi: Používá kódování pro znakovou stránku ANSI aktuální jazykové verze. Tato možnost byla přidána v PowerShellu 7.4.
  • bigendianunicode: Kóduje ve formátu UTF-16 pomocí pořadí velkých bajtů.
  • bigendianutf32: Kóduje ve formátu UTF-32 pomocí pořadí velkých bajtů.
  • oem: Používá výchozí kódování pro MS-DOS a konzolové programy.
  • unicode: Kóduje ve formátu UTF-16 pomocí pořadí malých bajtů.
  • utf7: Kóduje ve formátu UTF-7.
  • utf8: Kóduje ve formátu UTF-8.
  • utf8BOM: Kódování ve formátu UTF-8 pomocí značky pořadí bajtů (BOM)
  • utf8NoBOM: Kódování ve formátu UTF-8 bez značky pořadí bajtů (BOM)
  • utf32: Kóduje ve formátu UTF-32.

Počínaje PowerShellem 6.2 umožňuje parametr Encoding také číselné ID registrovaných znakových stránek (například -Encoding 1251) nebo názvy řetězců registrovaných znakových stránek (například -Encoding "windows-1251"). Další informace naleznete v dokumentaci .NET pro Encoding.CodePage.

Počínaje PowerShellem 7.4 můžete použít hodnotu Ansi parametru Encoding a předat číselné ID pro znakovou stránku ANSI aktuální jazykové verze, aniž byste ji museli zadávat ručně.

Poznámka

UTF-7* se už nedoporučuje používat. Od PowerShellu 7.1 se zapíše upozornění, pokud pro parametr Encoding zadáte utf7.

Typ:Encoding
Přípustné hodnoty:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:utf8NoBOM
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Exclude

Určuje, jako pole řetězců, položku nebo položky, které tato rutina vylučuje v operaci. Hodnota tohoto parametru kvalifikuje parametr Path. Zadejte prvek cesty nebo vzor, například *.txt. Jsou povoleny zástupné znaky. Parametr Exclude je efektivní pouze v případě, že příkaz obsahuje obsah položky, například C:\Windows\*, kde zástupný znak určuje obsah adresáře C:\Windows.

Typ:String[]
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:True

-Filter

Určuje filtr pro kvalifikaci parametru Path. Zprostředkovatel FileSystem je jediným nainstalovaným poskytovatelem PowerShellu, který podporuje použití filtrů. Syntaxi jazyka filtru FileSystem najdete v about_Wildcards. Filtry jsou efektivnější než jiné parametry, protože je poskytovatel použije, když rutina získá objekty místo toho, aby objekty po jejich načtení vyfiltroval PowerShell.

Typ:String
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:True

-Force

Vynutí rutinu nastavit obsah souboru, i když je soubor jen pro čtení. Implementace se liší od zprostředkovatele po zprostředkovatele. Další informace naleznete v tématu about_Providers. Parametr Force nepřepíše omezení zabezpečení.

Typ:SwitchParameter
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Include

Určuje, jako pole řetězců, položku nebo položky, které tato rutina zahrnuje v operaci. Hodnota tohoto parametru kvalifikuje parametr Path. Zadejte prvek cesty nebo vzor, například "*.txt". Jsou povoleny zástupné znaky. Parametr Include je efektivní pouze v případě, že příkaz obsahuje obsah položky, například C:\Windows\*, kde zástupný znak určuje obsah adresáře C:\Windows.

Typ:String[]
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:True

-LiteralPath

Určuje cestu k jednomu nebo více umístěním. Hodnota LiteralPath se používá přesně tak, jak je zadána. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence.

Další informace najdete v tématu about_Quoting_Rules.

Typ:String[]
Aliasy:PSPath, LP
Position:Named
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-NoNewline

Toto je dynamický parametr zpřístupněný poskytovatelem FileSystem. Další informace najdete v tématu about_FileSystem_Provider.

Řetězcové reprezentace vstupních objektů jsou zřetězeny tak, aby vytvořily výstup. Mezi výstupní řetězce se nevkládají žádné mezery ani nové čáry. Za poslední výstupní řetězec se nepřidá žádný nový řádek.

Typ:SwitchParameter
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-PassThru

Vrátí objekt, který představuje obsah. Ve výchozím nastavení tato rutina negeneruje žádný výstup.

Typ:SwitchParameter
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Path

Určuje cestu k položce, která přijímá obsah. Jsou povoleny zástupné znaky.

Typ:String[]
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:True

-Stream

Toto je dynamický parametr zpřístupněný poskytovatelem FileSystem. Tento parametr je k dispozici pouze ve Windows. Další informace najdete v tématu about_FileSystem_Provider.

Určuje alternativní datový proud pro obsah. Pokud stream neexistuje, tato rutina ho vytvoří. Zástupné znaky nejsou podporovány.

Stream je dynamický parametr, který zprostředkovatel FileSystem přidává do Set-Content. Tento parametr funguje jenom na jednotkách systému souborů.

Pomocí rutiny Set-Content můžete vytvořit nebo aktualizovat obsah jakéhokoli alternativního datového proudu, například Zone.Identifier. Nedoporučujeme to ale jako způsob, jak eliminovat kontroly zabezpečení, které blokují soubory stažené z internetu. Pokud ověříte, že je stažený soubor v bezpečí, použijte rutinu Unblock-File.

Tento parametr byl představen v PowerShellu 3.0. Od PowerShellu 7.2 může Set-Content nastavit obsah alternativních datových proudů z adresářů i souborů.

Typ:String
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Value

Určuje nový obsah položky.

Typ:Object[]
Position:1
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-WhatIf

Ukazuje, co se stane, když se rutina spustí. Rutina se nespustí.

Typ:SwitchParameter
Aliasy:wi
Position:Named
Default value:False
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

Vstupy

Object

Objekt, který obsahuje novou hodnotu položky, můžete do této rutiny převést.

Výstupy

None

Ve výchozím nastavení tato rutina nevrací žádný výstup.

String

Pokud použijete parametr PassThru, vrátí tato rutina řetězec představující obsah.

Poznámky

  • Set-Content je určená ke zpracování řetězců. Pokud před zápisem převedete neřetězcové objekty na Set-Content, převede objekt na řetězec. K zápisu objektů do souborů použijte Out-File.
  • Rutina Set-Content je navržená tak, aby fungovala s daty vystavenými jakýmkoli poskytovatelem. Pokud chcete zobrazit seznam poskytovatelů dostupných v relaci, zadejte Get-PsProvider. Další informace naleznete v tématu about_Providers.