PowerShell Set-Content-Cmdlet
-
das
Set-Content
-Cmdlet in PowerShell -
Verwenden Sie das Cmdlet
Set-Content
, um Textinhalte in eine einzelne Datei zu schreiben -
Verwenden Sie das Cmdlet
Set-Content
, um den Textinhalt in mehreren Dateien zu ersetzen -
Verwenden Sie
Set-Content
, um den Textinhalt durch eine PIPE zu leiten
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..."
Ausgang:
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!"
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 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:
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.