PowerShell Set-Content-Cmdlet

Migel Hewage Nimesha 15 Februar 2024
  1. das Set-Content-Cmdlet in PowerShell
  2. Verwenden Sie das Cmdlet Set-Content, um Textinhalte in eine einzelne Datei zu schreiben
  3. Verwenden Sie das Cmdlet Set-Content, um den Textinhalt in mehreren Dateien zu ersetzen
  4. Verwenden Sie Set-Content, um den Textinhalt durch eine PIPE zu leiten
PowerShell Set-Content-Cmdlet

Manchmal müssen wir möglicherweise denselben Textinhalt in mehrere Textdateien schreiben. PowerShell bietet ein nützliches Cmdlet zum Schreiben von Textinhalten über die Befehlszeile.

In diesem Artikel konzentrieren wir uns auf das Cmdlet Set-Content.

das Set-Content-Cmdlet in PowerShell

Das Cmdlet Set-Content schreibt neue Textinhalte oder ersetzt den bestehenden Text in einer Datei. Dies ähnelt eher dem >-Operator in Linux.

Das Cmdlet Set-Content unterscheidet sich vom Cmdlet Add-Content für die Zeichenfolgenverarbeitung, das Text an eine bestimmte Datei anhängt. Das sc kann als Alias für den Set-Content-Befehl verwendet werden.

Syntax:

Set-Content
    [-Path_to_file] <string[]>
    [-Value] <Object[]>
    [-PassThru]
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-Force]
    [-Credential <pscredential>]
    [-WhatIf]
    [-Confirm]
    [-NoNewline]
    [-Encoding <Encoding>]
    [-AsByteStream]
    [-Stream <string>]
    [<CommonParameters>]

Der Befehl benötigt eine ziemlich große Anzahl von Argumenten, und der Zweck einiger weniger wurde im folgenden Abschnitt beschrieben.

Parameter Beschreibung
-Path_to_file Sie können einen vorhandenen Textdateipfad angeben oder einen neuen im angegebenen Pfad erstellen.
-Value Dieser Parameter wird verwendet, um den Textinhalt zu übergeben, den Sie schreiben werden.
-Force Das Argument -Force ersetzt den Inhalt in der schreibgeschützten Datei.
-Encoding Die Textkodierung der Zieldatei ist standardmäßig auf utf8NoBOM eingestellt.
-Exclude Die Elemente, die bei dieser Operation ausgeschlossen werden müssen, werden als String-Array angegeben.
-Include Dies ist das Gegenteil des Arguments -Exclude. Dieses Argument gibt ein Array von Elementen an, die in die Operation Set-Content eingeschlossen werden müssen.
-PassThru Wenn das Argument PassThru angegeben ist, gibt der Befehl den Textinhalt aus, der der Textdatei hinzugefügt wurde.

Normalerweise wird der Parameter -Value verwendet, um den in die Datei geschriebenen Textinhalt anzugeben. Darüber hinaus können Sie den Textinhalt auch von einem anderen Objekt leiten.

Wenn Sie dem Set-Content-Befehl ein Nicht-String-Objekt übergeben, konvertiert dieser zuerst das Nicht-String-Objekt in einen String und schreibt ihn in die Datei.

Verwenden Sie das Cmdlet Set-Content, um Textinhalte in eine einzelne Datei zu schreiben

Lassen Sie uns Textinhalte in eine Datei namens sometext.txt schreiben, die derzeit nicht existiert. Der Set-Content-Befehl würde also zuerst diese Datei erstellen und den Inhalt schreiben, der mit dem -Value-Argument übergeben wird.

Befehl:

Set-Content -Path D:\codes\sometext.txt -Value "This should create a new file called sometext.txt and write this text to it..."

Textdatei erstellen und Inhaltsbefehl schreiben

Ausgang:

Textdatei erstellen und die Inhaltsausgabe schreiben

Verwenden Sie das Cmdlet Set-Content, um den Textinhalt in mehreren Dateien zu ersetzen

Nehmen wir an, wir haben drei Dateien Datei1.txt, Datei2.txt und Datei3.txt. Wir werden den Inhalt in diesen drei Dateien durch den folgenden Text ersetzen.

Hello, i would be appeared in all the three files!

In diesem Fall verwendet der Befehl Set-Content die Platzhalterzeichen, um die angegebenen drei Dateien abzugleichen.

Befehl:

Set-Content -Path D:\codes\file*.txt -Value "Hello, i would be appeared in all the three files!"

Verwenden Sie das Set-Content-Cmdlet, um den Textinhalt in mehreren Dateien zu ersetzen

Die drei Dateien stimmen mit dem durch file* txt angegebenen Muster überein, wodurch der Befehl gezwungen wird, alle Dateien zu finden, die mit der Phrase file beginnen.

Ausgang:

Verwenden Sie das Set-Content-Cmdlet, um den Textinhalt in der Ausgabe mehrerer Dateien zu ersetzen

Verwenden Sie Set-Content, um den Textinhalt durch eine PIPE zu leiten

Das Argument -Value muss nicht immer angegeben werden. Stattdessen können wir wie folgt ein Textobjekt an den Set-Content PIPE.

Befehl:

(Get-Content D:\codes\file1.txt).replace('all the three files!', 'file4.txt') | Set-Content D:\codes\file4.txt

Das Cmdlet Get-Content liest den Textinhalt aus der Datei file1.txt. Dann verwendet es den Befehl replace, um alle drei Dateien zu ersetzen! Text mit der file4.txt.

Abschließend würde der konstruierte Text in die Datei file4.txt geschrieben.

Ausgang:

Verwenden Sie Set-Content, um den Textinhalt durch eine PIPE-Ausgabe zu leiten

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.