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 Add-Content
rutiny, která připojuje obsah k souboru. Pokud chcete odeslat obsah, Set-Content
můžete použít parametr Value 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 téma Nová položka.
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
pomocí parametru Path zobrazí seznam .txt souborů, které začínají Test*
v aktuálním adresáři. Rutina Set-Content
k určení Test*.txt
souborů používá parametr Path. Parametr Value poskytuje textový řetězec Hello, World , který nahradí existující obsah v každém souboru. Rutina Get-Content
pomocí parametru Path určuje Test*.txt
soubory a zobrazí obsah každého souboru 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
pomocí parametrů Cesta a Hodnota vytvoří v aktuálním adresáři nový soubor s názvem DateTime.txt. Parametr Value používá Get-Date
k získání aktuálního data a času.
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
je zabalený pomocí závorek, aby se příkaz dokončil před odesláním kanálu.
Obsah souboru Notice.txt se do rutiny odešle do kanáluForEach-Object
.
ForEach-Object
používá automatickou proměnnou $_
a nahradí každý výskyt upozornění upozorněním. Objekty se odesílají do rutiny Set-Content
. 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 obsahem sady
Můžete zadat filtr pro rutinu Set-Content
. Při použití filtrů pro kvalifikaci parametru Path musíte zahrnout koncovou hvězdičku (*
), která označuje obsah cesty.
Následující příkaz nastavil obsah všech *.txt
souborů v C:\Temp
adresáři na prázdnou hodnotu .
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Parametry
-AsByteStream
Jedná se o dynamický parametr, který zpřístupnil zprostředkovatel 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.
Při použití parametru AsByteStream s parametrem Encoding dojde k upozornění. Parametr AsByteStream ignoruje jakékoli 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 zobrazí výzvu 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 úroveň přihlašovacích údajů 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
Jedná se o dynamický parametr, který zpřístupnil zprostředkovatel 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
souboru . 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 kódovou 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í malého bajtového pořadí.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 Kódování také číselná ID registrovaných znakových stránek (jako -Encoding 1251
) nebo názvy řetězců registrovaných znakových stránek (například -Encoding "windows-1251"
). Další informace najdete v dokumentaci k .NET pro Encoding.CodePage.
Počínaje PowerShellem 7.4 můžete hodnotu parametru Encoding použít Ansi
k předání číselného 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 při zadání parametru Encoding zapíše utf7
upozornění.
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 element nebo vzor cesty, například *.txt
. Jsou povoleny zástupné znaky. Parametr Exclude je účinný pouze v případě, že příkaz obsahuje obsah položky, například C:\Windows\*
, kde zástupný znak určuje obsah C:\Windows
adresáře.
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, který má kvalifikovat parametr 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 najdete 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 element nebo vzor cesty, 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 C:\Windows
adresáře.
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
Jedná se o dynamický parametr, který zpřístupnil zprostředkovatel 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
Jedná se o dynamický parametr, který zpřístupnil zprostředkovatel 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, ke kterému zprostředkovatel FileSystem přidává Set-Content
. Tento parametr funguje jenom na jednotkách systému souborů.
Pomocí této 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 stažený soubor je bezpečný, použijte tuto rutinu Unblock-File
.
Tento parametr byl představen v PowerShellu 3.0. Od PowerShellu 7.2 Set-Content
můžete 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
Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.
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
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.
Pokud použijete parametr PassThru , vrátí tato rutina řetězec představující obsah.
Poznámky
Set-Content
je určen pro zpracování řetězců. Pokud před zápisem objektuSet-Content
převede objekt na řetězec, převede objekt na řetězec. K zápisu objektů do souborů použijteOut-File
.- Rutina
Set-Content
je navržená tak, aby fungovala s daty vystavenými libovolným poskytovatelem. Pokud chcete zobrazit seznam poskytovatelů dostupných v relaci, zadejteGet-PsProvider
. Další informace najdete v tématu about_Providers.