Set-Content

Schreibt neuen Inhalt in ein Element oder ersetzt den Inhalt eines Elements durch neuen Inhalt.

Syntax

Set-Content [-LiteralPath] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

Set-Content [-Path] <string[]> [-Value] <Object[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

Beschreibung

Das Cmdlet "Set-Content" ist ein Cmdlet für die Zeichenfolgenverarbeitung, das Inhalt in ein angegebenes Element, z. B. eine Datei, schreibt bzw. Inhalt in diesem ersetzt. Während mit dem Cmdlet "Add-Content" Inhalt an eine Datei angefügt wird, wird mit Set-Content der vorhandene Inhalt ersetzt. Sie können den Inhalt im Befehl eingeben oder über die Pipeline an Set-Content übergeben.

Parameter

-Credential <PSCredential>

Gibt ein Benutzerkonto an, das über die Berechtigung zum Ausführen dieser Aktion verfügt. Der Standardwert ist der aktuelle Benutzer.

Geben Sie einen Benutzernamen ein, z. B. "User01" oder "Domain01\User01", oder geben Sie ein PSCredential-Objekt ein, z. B. ein vom Cmdlet "Get-Credential" generiertes Objekt. Wenn Sie einen Benutzernamen eingeben, werden Sie zur Eingabe eines Kennworts aufgefordert.

Dieser Parameter wird nicht von mit Windows PowerShell installierten Anbietern unterstützt.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

true (ByPropertyName)

Platzhalterzeichen akzeptieren?

false

-Exclude <string[]>

Lässt die angegebenen Elemente aus. Der Path-Parameter wird durch den Wert dieses Parameters qualifiziert. Geben Sie ein Pfadelement oder -muster wie "*.txt" ein. Platzhalter sind zulässig.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Filter <string>

Gibt einen Filter im Format oder in der Sprache des Anbieters an. Der Path-Parameter wird durch den Wert dieses Parameters qualifiziert. Die Syntax des Filters einschließlich der Verwendung von Platzhaltern ist vom Anbieter abhängig. Filter sind effizienter als andere Parameter, da sie beim Abrufen der Objekte vom Anbieter angewendet werden und die Objekte nicht erst nach dem Abrufen von Windows PowerShell gefiltert werden.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Force

Ermöglicht es dem Cmdlet, den Inhalt einer Datei selbst dann festzulegen, wenn die Datei schreibgeschützt ist. Die Implementierung unterscheidet sich bei den einzelnen Anbietern. Weitere Informationen finden Sie unter "about_Providers". Auch bei Verwendung des Force-Parameters kann das Cmdlet keine Sicherheitseinschränkungen außer Kraft setzen.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Include <string[]>

Ändert nur die angegebenen Elemente. Der Path-Parameter wird durch den Wert dieses Parameters qualifiziert. Geben Sie ein Pfadelement oder -muster wie "*.txt" ein. Platzhalter sind zulässig.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-LiteralPath <string[]>

Gibt den Pfad zu dem Element an, das den Inhalt erhalten soll. Im Gegensatz zu "Path" wird der Wert von "LiteralPath" genau so verwendet, wie er eingegeben wurde. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen veranlassen Windows PowerShell, Zeichen nicht als Escapesequenzen zu interpretieren.

Erforderlich?

true

Position?

1

Standardwert

Pipelineeingaben akzeptieren?

true (ByPropertyName)

Platzhalterzeichen akzeptieren?

false

-PassThru

Gibt ein Objekt zurück, das den Inhalt darstellt. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Path <string[]>

Gibt den Pfad zu dem Element an, das den Inhalt erhalten soll. Platzhalter sind zulässig.

Erforderlich?

true

Position?

1

Standardwert

Pipelineeingaben akzeptieren?

true (ByPropertyName)

Platzhalterzeichen akzeptieren?

false

-Value <Object[]>

Gibt den neuen Inhalt für das Element an.

Erforderlich?

true

Position?

2

Standardwert

Pipelineeingaben akzeptieren?

true (ByValue, ByPropertyName)

Platzhalterzeichen akzeptieren?

false

-Confirm

Fordert Sie vor der Ausführung des Befehls zur Bestätigung auf.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-WhatIf

Beschreibt die Auswirkungen einer Ausführung des Befehls, ohne den Befehl tatsächlich auszuführen.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-UseTransaction

Schließt den Befehl in die aktive Transaktion ein. Dieser Parameter ist nur gültig, wenn eine Transaktion ausgeführt wird. Weitere Informationen finden Sie unter "about_Transactions".

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

<CommonParameters>

Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.

Eingaben und Ausgaben

Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.

Eingaben

System.Object

Sie können ein Objekt, das den neuen Wert für das Element enthält, über die Pipeline an Set-Content übergeben.

Ausgaben

Keiner oder System.String

Wenn Sie den Passthru-Parameter verwenden, generiert Set-Content ein System.String-Objekt, das den Inhalt darstellt. Andernfalls wird von diesem Cmdlet keine Ausgabe generiert.

Hinweise

Sie können auch über den integrierten Alias "sc" auf Set-Content verweisen. Weitere Informationen finden Sie unter "about_Aliases".

Set-Content wird für die Zeichenfolgenverarbeitung verwendet. Wenn Sie andere Objekte als Zeichenfolgenobjekte über die Pipeline an Set-Content übergeben, wird das Objekt vor dem Schreibvorgang in eine Zeichenfolge konvertiert. Um Objekte in Dateien zu schreiben, verwenden Sie Out-File.

Das Cmdlet "Set-Content" ist für die Verwendung mit Daten konzipiert, die von beliebigen Anbietern verfügbar gemacht werden. Um die in der Sitzung verfügbaren Anbieter aufzuführen, geben Sie "Get-PsProvider" ein. Weitere Informationen finden Sie unter "about_Providers".

Beispiel 1

C:\PS>set-content -path C:\Test1\test*.txt -value "Hello, World"

Beschreibung
-----------
Mit diesem Befehl wird der Inhalt aller Dateien im Verzeichnis "Test1", deren Name mit "test" beginnt, durch "Hello, World" ersetzt. In diesem Beispiel wird veranschaulicht, wie Inhalt angegeben wird, indem dieser im Befehl eingegeben wird.





Beispiel 2

C:\PS>get-date | set-content C:\Test1\date.csv

Beschreibung
-----------
Mit diesem Befehl wird eine durch Kommas getrennte Datei mit variabler Länge (CSV-Datei) erstellt, die nur das aktuelle Datum und die aktuelle Uhrzeit enthält. Mit dem Cmdlet "Get-Date" werden das aktuelle Systemdatum und die aktuelle Systemzeit abgerufen. Mit dem Pipelineoperator wird das Ergebnis an Set-Content übergeben, wodurch die Datei erstellt und der Inhalt geschrieben wird.

Wenn das Verzeichnis "Test1" nicht vorhanden ist, tritt beim Verarbeiten des Befehls ein Fehler auf. Wenn die Datei hingegen nicht vorhanden ist, wird sie vom Befehl erstellt.





Beispiel 3

C:\PS>(get-content Notice.txt) | foreach-object {$_ -replace "Warning", "Caution"} | set-content Notice.txt

Beschreibung
-----------
Mit diesem Befehl werden alle Vorkommen von "Warning" in der Datei "Notice.txt" durch "Caution" ersetzt. 

Mit dem Cmdlet "Get-Content" wird der Inhalt von "Notice.txt" abgerufen. Mit dem Pipelineoperator werden die Ergebnisse an das Cmdlet "ForEach-Object" übergeben. Dieses wendet den Ausdruck auf die einzelnen Inhaltszeilen in "Get-Content" an. Im Ausdruck wird mit dem Symbol "$_" auf das aktuelle Element verwiesen, und mit dem Replace-Parameter wird der zu ersetzende Text angegeben. 

Ein weiterer Pipelineoperator übergibt den geänderten Inhalt an Set-Content, wodurch der Text in "Notice.txt" durch den neuen Inhalt ersetzt wird.

Durch die runden Klammern um den Befehl "Get-Content" wird sichergestellt, dass der Get-Vorgang abgeschlossen ist, bevor mit dem Set-Vorgang begonnen wird. Ohne die Klammern verursacht der Befehl einen Fehler, da beide Funktionen versuchen, auf die gleiche Datei zuzugreifen.





Siehe auch

Konzepte

about_Providers
Add-Content
Get-Content
Clear-Content