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 -Forceersetzt den Inhalt in der schreibgeschützten Datei. | 
| -Encoding | Die Textkodierung der Zieldatei ist standardmäßig auf utf8NoBOMeingestellt. | 
| -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 OperationSet-Contenteingeschlossen werden müssen. | 
| -PassThru | Wenn das Argument PassThruangegeben 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.
