Dela via


Set-Content

Skriver nytt innehåll eller ersätter befintligt innehåll i en fil.

Syntax

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 är en cmdlet för strängbearbetning som skriver nytt innehåll eller ersätter innehållet i en fil. Set-Content ersätter det befintliga innehållet och skiljer sig från cmdleten Add-Content som lägger till innehåll i en fil. Om du vill skicka innehåll till Set-Content kan du använda parametern Värde på kommandoraden eller skicka innehåll via pipelinen.

Om du behöver skapa filer eller kataloger för följande exempel kan du läsa Nytt objekt.

Exempel

Exempel 1: Ersätt innehållet i flera filer i en katalog

Det här exemplet ersätter innehållet för flera filer i den aktuella katalogen.

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

Cmdleten Get-ChildItem använder parametern Sökväg för att lista .txt filer som börjar med Test* i den aktuella katalogen. Cmdleten Set-Content använder parametern Path för att ange Test*.txt filerna. Parametern Value innehåller textsträngen Hello, World som ersätter det befintliga innehållet i varje fil. Cmdleten Get-Content använder parametern Path för att ange Test*.txt filerna och visar varje fils innehåll i PowerShell-konsolen.

Exempel 2: Skapa en ny fil och skriva innehåll

Det här exemplet skapar en ny fil och skriver aktuellt datum och tid till filen.

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

1/30/2019 09:55:08

Set-Content använder parametrarna Sökväg och Värde för att skapa en ny fil med namnet DateTime.txt i den aktuella katalogen. Parametern Value använder Get-Date för att hämta aktuellt datum och tid. Set-Contentskriver DateTime-objektet till filen som en sträng. Cmdleten Get-Content använder parametern Sökväg för att visa innehållet i DateTime.txt i PowerShell-konsolen.

Exempel 3: Ersätt text i en fil

Det här kommandot ersätter alla instanser av ord i en befintlig fil.

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.

Cmdleten Get-Content använder parametern Path för att ange den Notice.txt filen i den aktuella katalogen. Kommandot Get-Content är omslutet med parenteser så att kommandot slutförs innan det skickas nedåt i pipelinen.

Innehållet i Notice.txt-filen skickas ned i pipelinen till cmdletenForEach-Object. ForEach-Object använder den automatiska variabeln $_ och ersätter varje förekomst av Varning med Varning. Objekten skickas ned i pipelinen till cmdleten Set-Content . Set-Contentanvänder parametern Sökväg för att ange Notice.txt-filen och skriver det uppdaterade innehållet till filen.

Den senaste Get-Content cmdleten visar det uppdaterade filinnehållet i PowerShell-konsolen.

Exempel 4: Använd filter med set-content

Du kan ange ett filter för cmdleten Set-Content . När du använder filter för att kvalificera sökvägsparametern måste du inkludera en avslutande asterisk (*) för att ange innehållet i sökvägen.

Följande kommando anger innehållet som alla *.txt filer i C:\Temp katalogen till Värdet tomt.

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

Parametrar

-AsByteStream

Det här är en dynamisk parameter som görs tillgänglig av FileSystem-providern . Mer information finns i about_FileSystem_Provider.

Anger att innehållet ska skrivas som en ström med byte. Den här parametern introducerades i PowerShell 6.0.

En varning inträffar när du använder parametern AsByteStream med kodningsparametern . Parametern AsByteStream ignorerar all kodning och utdata skrivs som en ström med byte.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

Typ:SwitchParameter
Alias:cf
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Credential

Kommentar

Den här parametern stöds inte av några leverantörer som är installerade med PowerShell. Om du vill personifiera en annan användare eller höja dina autentiseringsuppgifter när du kör den här cmdleten använder du Invoke-Command.

Typ:PSCredential
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Encoding

Det här är en dynamisk parameter som görs tillgänglig av FileSystem-providern . Mer information finns i about_FileSystem_Provider.

Anger typen av kodning för målfilen. Standardvärdet är utf8NoBOM.

Kodning är en dynamisk parameter som FileSystem-providern lägger till i Set-Content. Den här parametern fungerar bara på filsystemenheter.

Godkända värden för den här parametern är följande:

  • ascii: Använder kodningen för ASCII-teckenuppsättningen (7-bitars).
  • ansi: Använder kodningen för för den aktuella kulturens ANSI-kodsida. Det här alternativet lades till i PowerShell 7.4.
  • bigendianunicode: Kodar i UTF-16-format med hjälp av den stora byteordningen.
  • bigendianutf32: Kodar i UTF-32-format med hjälp av storslutsbyteordningen.
  • oem: Använder standardkodning för MS-DOS och konsolprogram.
  • unicode: Kodar i UTF-16-format med hjälp av den lite endianska byteordningen.
  • utf7: Kodar i UTF-7-format.
  • utf8: Kodar i UTF-8-format.
  • utf8BOM: Kodar i UTF-8-format med Byte Order Mark (BOM)
  • utf8NoBOM: Kodar i UTF-8-format utan Byte Order Mark (BOM)
  • utf32: Kodar i UTF-32-format.

Från och med PowerShell 6.2 tillåter kodningsparametern även numeriska ID:n för registrerade kodsidor (till exempel -Encoding 1251) eller strängnamn för registrerade kodsidor (till exempel -Encoding "windows-1251"). Mer information finns i .NET-dokumentationen för Encoding.CodePage.

Från och med PowerShell 7.4 kan du använda Ansi värdet för kodningsparametern för att skicka det numeriska ID:t för den aktuella kulturens ANSI-kodsida utan att behöva ange det manuellt.

Kommentar

UTF-7* rekommenderas inte längre att använda. Från och med PowerShell 7.1 skrivs en varning om du anger utf7 för kodningsparametern .

Typ:Encoding
Godkända värden:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Standardvärde:utf8NoBOM
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Exclude

Anger, som en strängmatris, ett objekt eller objekt som den här cmdleten exkluderar i åtgärden. Värdet för den här parametern kvalificerar parametern Path . Ange ett sökvägselement eller mönster, till exempel *.txt. Jokertecken tillåts. Parametern Exkludera gäller endast när kommandot innehåller innehållet i ett objekt, till exempel C:\Windows\*, där jokertecknet anger innehållet i C:\Windows katalogen.

Typ:String[]
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:True

-Filter

Anger ett filter för att kvalificera parametern Sökväg . FileSystem-providern är den enda installerade PowerShell-providern som stöder användning av filter. Du hittar syntaxen för filterspråket FileSystem i about_Wildcards. Filter är effektivare än andra parametrar eftersom providern tillämpar dem när cmdleten hämtar objekten i stället för att Låta PowerShell filtrera objekten när de har hämtats.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:True

-Force

Tvingar cmdleten att ange innehållet i en fil, även om filen är skrivskyddad. Implementeringen varierar från leverantör till leverantör. Mer information finns i about_Providers. Force-parametern åsidosätter inte säkerhetsbegränsningar.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Include

Anger, som en strängmatris, ett objekt eller objekt som den här cmdleten innehåller i åtgärden. Värdet för den här parametern kvalificerar parametern Path . Ange ett sökvägselement eller mönster, till exempel "*.txt". Jokertecken tillåts. Parametern Include är endast effektiv när kommandot innehåller innehållet i ett objekt, till exempel C:\Windows\*, där jokertecknet anger innehållet i C:\Windows katalogen.

Typ:String[]
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:True

-LiteralPath

Anger en sökväg till en eller flera platser. Värdet för LiteralPath används exakt som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken gör att PowerShell inte tolkar några tecken som escape-sekvenser.

Mer information finns i about_Quoting_Rules.

Typ:String[]
Alias:PSPath, LP
Position:Named
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-NoNewline

Det här är en dynamisk parameter som görs tillgänglig av FileSystem-providern . Mer information finns i about_FileSystem_Provider.

Strängrepresentationerna av indataobjekten sammanfogas för att bilda utdata. Inga blanksteg eller nya radrutor infogas mellan utdatasträngarna. Ingen ny rad läggs till efter den senaste utdatasträngen.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-PassThru

Returnerar ett objekt som representerar innehållet. Som standard genererar den här cmdleten inga utdata.

Typ:SwitchParameter
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Path

Anger sökvägen till det objekt som tar emot innehållet. Jokertecken tillåts.

Typ:String[]
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:True

-Stream

Det här är en dynamisk parameter som görs tillgänglig av FileSystem-providern . Den här parametern är endast tillgänglig i Windows. Mer information finns i about_FileSystem_Provider.

Anger en alternativ dataström för innehåll. Om strömmen inte finns skapar den här cmdleten den. Jokertecken stöds inte.

Stream är en dynamisk parameter som FileSystem-providern lägger till i Set-Content. Den här parametern fungerar bara på filsystemenheter.

Du kan använda cmdleten Set-Content för att skapa eller uppdatera innehållet i valfri alternativ dataström, till exempel Zone.Identifier. Vi rekommenderar dock inte detta som ett sätt att eliminera säkerhetskontroller som blockerar filer som laddas ned från Internet. Om du kontrollerar att en nedladdad fil är säker använder du cmdleten Unblock-File .

Den här parametern introducerades i PowerShell 3.0. Från och med PowerShell 7.2 Set-Content kan du ange innehållet i alternativa dataströmmar från kataloger och filer.

Typ:String
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Value

Anger det nya innehållet för objektet.

Typ:Object[]
Position:1
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

Typ:SwitchParameter
Alias:wi
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

Object

Du kan skicka ett objekt som innehåller det nya värdet för objektet till den här cmdleten.

Utdata

None

Som standard returnerar den här cmdleten inga utdata.

String

När du använder parametern PassThru returnerar den här cmdleten en sträng som representerar innehållet.

Kommentarer

  • Set-Content är utformad för strängbearbetning. Om du skicka icke-strängobjekt till Set-Contentkonverteras objektet till en sträng innan det skrivs. Om du vill skriva objekt till filer använder du Out-File.
  • Cmdleten Set-Content är utformad för att fungera med data som exponeras av alla leverantörer. Om du vill visa en lista över tillgängliga leverantörer i sessionen skriver du Get-PsProvider. Mer information finns i about_Providers.