PowerShell-Ersetzungsmethode und -operator: Syntax, Beispiele

8. Juni 2021 14361 Ansichten So verwenden Sie PowerShell zum Abrufen von Dateien und einigen App-Versionsinformationen

Power Shell Ersetzen kann verwendet werden, um Zeichen, Zeichenfolgen, Texte oder Sonderzeichen zu ersetzen. PowerShell hat eine Ersetzen Methode und ein Ersetzen Operator .





In dieser S Zone lernen Sie, wie Sie PowerShell verwenden Ersetzen Methode und Ersetzen Operator um verschiedene Ersetzungsaufgaben auszuführen.



Der Leitfaden besteht aus 2 Abschnitten. Der erste Abschnitt umfasst die Ersetzen Methode mit mehreren Beispielen.

Im zweiten Abschnitt erfahren Sie dann, wie Sie die verwenden Ersetzen Operator , auch mit mehreren Beispielen.



Post-Themen durchsuchen



So verwenden Sie die PowerShell-Ersetzungsmethode mit mehreren Beispielen

So verwenden Sie die PowerShell-Ersetzungsmethode mit mehreren Beispielen

Wie ich in der Einleitung erwähnt habe, lernen Sie in diesem Abschnitt, wie Sie die verwenden Methode ersetzen . Der Abschnitt beginnt mit der Syntax der Methode ersetzen .

avastui.exe hohe CPU-Auslastung

Syntax der PowerShell-Replace-Methode

Die Syntaxen der Ersetzen Methode ist…



|_+_| |_+_|

Die Syntaxen sind dasselbe. Der einzige Grund, warum ich beides habe, ist, zu veranschaulichen, dass Sie Zeichen oder Zeichenfolgen ersetzen können.



Die erste Syntax zeigt, wie die PowerShell-Replace-Methode verwendet wird, um Zeichen zu ersetzen. Die zweite Syntax zeigt jedoch, wie eine Zeichenfolge ersetzt wird.

So listen Sie die Methoden in einem PowerShell-Objekt auf

Ich habe bereits erwähnt, dass PowerShell eine Replace-Methode und einen Operator hat. Sie können alle Methoden auflisten, die in einem PowerShell-Objekt verfügbar sind, indem Sie das Objekt per Pipping an die Get-Mitglied Befehl.

Um beispielsweise die in diesem Objekt verfügbaren Methoden zu finden, führen Sie den folgenden Befehl aus:

|_+_|

Der Befehl gibt eine Reihe von Methoden zurück. Ich habe die hervorgehoben Ersetzen Methode im Screenshot unten.

Darüber hinaus gibt es eine andere Möglichkeit, die auszuführen Get-Mitglied Befehl. Anstatt das Objekt in die zu kippen Get-Mitglied Befehl können Sie das Objekt im InputObject-Parameter von angeben Get-Mitglied .

Hier ist ein Beispiel…

|_+_|

Das Ergebnis listet auch eine Reihe von Methoden auf, die im Objekt verfügbar sind – einschließlich der Ersetzen Methode .

So verwenden Sie die PowerShell-Ersetzungsmethode mit mehreren Beispielen

Eine letzte Sache, bevor ich zum nächsten Unterabschnitt übergehe: Wenn Sie sich die Beschreibungsspalte des Ergebnisses der letzten beiden Befehle ansehen, hat es die Syntax der Methode.

Dies ist sehr nützlich, da es Ihnen sagt, wie Sie die Methode verwenden.

So verwenden Sie die PowerShell-Replace-Methode, um ein Zeichen in einer Zeichenfolge zu ersetzen

Ich habe im Unterabschnitt Syntax erwähnt, dass Sie Zeichen oder Zeichenfolgen ersetzen können. Um Ihnen ein einfaches Beispiel zu geben, möchte ich V in Victor durch den kleinen Buchstaben v ersetzen.

Hier ist der Befehl …

|_+_|

Und hier ist das Ergebnis in PowerShell…

Bei den Werten in der PowerShell-Replace-Methode muss die Groß-/Kleinschreibung beachtet werden. Die Werte werden auf die exakte Groß- und Kleinschreibung geprüft. Wenn ich beispielsweise versucht habe, das kleine v in Victor zu ersetzen und es durch A zu ersetzen, gibt der Befehl das gleiche Ergebnis zurück.

Hier ist der Befehl, den ich in der Notiz oben beschrieben habe …

|_+_|

Als ich diesen Befehl in PowerShell ausführte, gab er Victor zurück, das ursprüngliche Objekt, da der String Victor keinen Kleinbuchstaben v enthält!

In der PowerShell Ersetzen Operator Abschnitt dieses Handbuchs erfahren Sie, dass – im Gegensatz zur Replace-Methode – die Ersetzen Operator Groß- und Kleinschreibung wird nicht beachtet.

So verwenden Sie die PowerShell-Ersetzungsmethode, um mehrere Zeichenfolgen in einer Textdatei zu ersetzen

In Anlehnung an die Gedanken in diesem Handbuch können Sie auch mehrere Zeichenfolgen in einer Textdatei ersetzen.

In diesem Beispiel habe ich eine Textdatei mit einigen Servernamen. Hier ist ein Screenshot der Textdatei.

So verwenden Sie die PowerShell-Ersetzungsmethode, um mehrere Zeichenfolgen in einer Textdatei zu ersetzen

Ich möchte den Servernamen ITGServer1 durch ITGServer4 ersetzen. Außerdem möchte ich ITGServer2 durch ITGServer5 und ITGServer3 durch ITGServer6 ersetzen.

Hier ist das Skript, das die Aufgabe erledigt …

|_+_|

Die erste Zeile des Skripts verwendet Get-Content um den Inhalt der Textdatei in PowerShell zu importieren. Leiten Sie dann das Ergebnis an ForEach-Objekt .

Schließlich innerhalb der ForEach-Objekt Schleife verwendet PowerShell die athematische Variable $_, die für jedes Objekt von erstellt wird ForEach-Objekt um die Artikel wie angegeben zu ersetzen.

Ich habe die PowerShell-Replace-Methode verkettet. Andernfalls erzeugt das Skript ein unerwünschtes Ergebnis.

Um das Skript auszuführen, kopieren Sie es in PowerShell ISE und führen Sie es aus.

In der letzten Version des Skripts zeigt PowerShell das Ergebnis in der Konsole an. Sie können schreibe die Ausgabe indem Sie die vorhandenen Befehle an die Set-Inhalt Befehl.

Hier ist das aktualisierte Skript. Um Schreibfehler zu vermeiden, habe ich die Ausgabe der vorherigen Version des Skripts in einer Variablen gespeichert. Dann habe ich die Variable in eine Pipe geleitet Set-Inhalt Befehl.

|_+_|

Hier ist die Ausgabe der neuen Textdatei…

So verwenden Sie die PowerShell-Ersetzungsmethode, um mehrere Zeichenfolgen in einer Textdatei zu ersetzen

So verwenden Sie die PowerShell-Replace-Methode, um mehrere Zeichen zu ersetzen

Die Verarbeitung zum Ersetzen mehrerer Zeichenketten in einer Textdatei ist dieselbe wie das Ersetzen mehrerer Zeichen in einer Zeichenkette. Aus dem Beispiel im letzten Abschnitt ist es besser, die Replace-Methode zu verketten.

In diesem Beispiel möchte ich das M in Methode durch T ersetzen. Außerdem möchte ich d durch D ersetzen.

Hier ist der Befehl …

|_+_|

Und das Ergebnis in PowerShell…

So verwenden Sie die PowerShell-Ersetzungsmethode in der Pipeline

Im letzten Abschnitt habe ich diesen Befehl ausgeführt, ohne die Zeichenfolge Method to the weiterzuleiten Ersetzen Methode:

|_+_|

Ich kann denselben Befehl ausführen, aber dieses Mal wird die Zeichenfolge an die Replace-Methode weitergeleitet. Sobald ich es jedoch an eine Pipeline übergebe, muss ich die Zeichenfolge mit der automatischen Pipeline-Variablen $_ aufrufen.

Der Befehl muss wie folgt geändert werden:

|_+_|

Wie Sie auf dem Screenshot unten sehen können, erzeugt der letzte Befehl das gleiche Ergebnis wie der Befehl im letzten Unterabschnitt…

So verwenden Sie die PowerShell-Ersetzungsmethode in der Pipeline

So verwenden Sie die PowerShell-Ersetzungsmethode, um alle Zeichenfolgen nach einem Zeichen zu ersetzen

In dem Beispiel in diesem Unterabschnitt möchte ich alles nach dem letzten Backslash in dieser Zeichenfolge – c:programfiles vversion8uninstall.exe – durch eine leere Zeichenfolge ersetzen.

Diese beiden Befehle erledigen die Arbeit.

|_+_|

Der erste Befehl speichert den String in einer Variablen. Dann verwendet der zweite Befehl die PowerShell-Replace-Methode, um alles nach der Zeichenfolge durch ein Leerzeichen zu ersetzen.

Effektiv wird alles nach gelöscht. Hier ist das Ergebnis der Befehle..

So verwenden Sie die PowerShell-Replace-Methode, um eine Zeichenfolge in einer Textdatei zu ersetzen

Ich habe eine Textdatei namens Processfile1.txt . Die Textdatei hat einen Wert, AgentSvc, den ich durch AgentSvc_New ersetzen möchte.

So verwenden Sie die PowerShell-Replace-Methode, um eine Zeichenfolge in einer Textdatei zu ersetzen

Die folgenden Befehle werden die Aufgabe abschließen…

|_+_|

Der erste Befehl speichert den Dateipfad in einer Variablen. Außerdem speichert der zweite Befehl den Wert, den ich finden möchte, in einer anderen Variablen.

Darüber hinaus speichert die dritte Zeile die Ersetzungszeichenfolge in einer anderen Variablen. Schließlich rufe ich im letzten Befehl die Replace-Methode im Ergebnis von auf Get-Content Befehl.

Dann verwende ich innerhalb der Replace-Methode den in den Variablen $find und $replace gespeicherten Wert. Leiten Sie dann die Ausgabe an Set-Inhalt die die Textdatei mit den neuen Werten aktualisiert.

Nach dem Ausführen der Befehle ist hier der neue Wert in der Textdatei.

So verwenden Sie die PowerShell-Ersetzungsmethode, um doppelte Anführungszeichen durch einfache Anführungszeichen zu ersetzen

In diesem Unterabschnitt möchte ich das doppelte Anführungszeichen in ersetzen 234″20.1.2021 mit einfachen Anführungszeichen. Hier sind die Befehle…

|_+_|

Die erste Zeile speichert den String, 234″20.1.2021 in einer Variablen. Dann habe ich in der zweiten Zeile die PowerShell-Replace-Methode verwendet, um das doppelte Anführungszeichen in der Zeichenfolge durch einfache Anführungszeichen zu ersetzen.

Der Trick liegt in der Anwendung und Verwendung von PowerShell-Quoting-Regeln. PowerShell verwendet sowohl einfache als auch doppelte Anführungszeichen, um eine Literalzeichenfolge anzugeben.

In diesem Beispiel möchten wir doppelte Anführungszeichen, , in einer Zeichenfolge durch einfache Anführungszeichen, , ersetzen. Wenn Sie sich jedoch erinnern, benötigen Sie in PowerShell Replace Method auch Anführungszeichen, um den zu ersetzenden Wert und den neuen Wert anzugeben.

Um also den aktuellen Wert (die doppelten Anführungszeichen) im Ersetzungsbefehl anzugeben, schließen wir das doppelte Anführungszeichen in einfache Anführungszeichen ein – ‘‘.

lg v10 lässt sich nicht einschalten oder aufladen

Um den neuen Wert (die einfachen Anführungszeichen) anzugeben, setzen Sie sie außerdem in doppelte Anführungszeichen – .

Aufgrund des Vorhandenseins von doppelten Anführungszeichen in der ursprünglichen Zeichenfolge 234″20.1.2021 , um die Zeichenfolge in einer Variablen zu speichern, musste ich die Zeichenfolge in einfache Anführungszeichen setzen.

Zurück zu den Befehlen…

|_+_|

Hier ist das Ergebnis in PowerShell…

So verwenden Sie die PowerShell-Ersetzungsmethode, um doppelte Anführungszeichen durch einfache Anführungszeichen zu ersetzen

So einfach dieses Beispiel auch aussieht, wenn Sie die PowerShell-Zitatregeln nicht verstehen, werden Sie Schwierigkeiten haben, PowerShell dazu zu bringen, diese Aufgabe zu erledigen!

So verwenden Sie die PowerShell-Ersetzungsmethode, um die genaue Übereinstimmung zu ersetzen

Dieser Abschnitt enthält ein weiteres Beispiel für die PowerShell-Ersetzungsmethode. Dieses Mal möchte ich Ihnen beibringen, wie Sie eine exakte Übereinstimmung in einer Zeichenfolge ersetzen.

Das Beispiel in diesem Abschnitt stammt davon stackoverflow.com Faden. Der Benutzer, der die Frage gestellt hat, möchte Tee in dieser Zeichenfolge ersetzen. Ich habe Tee für mein Team mit Kaffee mitgebracht.

Hier ist der Befehl, der die Arbeit erledigt …

|_+_|

Und hier ist das Ergebnis des Befehls in PowerShell…

Verwendung der PowerShell-Replace-Methode zum Ersetzen des umgekehrten Schrägstrichs ()

In diesem Unterabschnitt werde ich den einzelnen umgekehrten Schrägstrich () in dieser Zeichenfolge ersetzen, 23420.1.2021 mit doppeltem Backslash, (\). Hier ist der Befehl …

|_+_|

Das Ergebnis in PowerShell…

Verwendung der PowerShell-Replace-Methode zum Ersetzen des umgekehrten Schrägstrichs ()

Wie Sie im PowerShell-Ersetzungsoperator-Abschnitt dieses Handbuchs sehen werden, ist das Ersetzen eines einzelnen umgekehrten Schrägstrichs durch den Ersetzungsoperator nicht so einfach.

So ersetzen Sie ungültige Dateinamenzeichen in PowerShell

Das Windows-Betriebssystem enthält einige Zeichen, die nicht zum Benennen von Dateien oder Ordnern verwendet werden können. Diese Zeichen werden im Allgemeinen als ungültige Dateinamenzeichen bezeichnet.

Wenn Sie versuchen, einen Dateinamen mit einem der Zeichen zu erstellen, erhalten Sie eine Fehlermeldung.

Wenn Sie also ein PowerShell-Skript schreiben, das eine Ausgabe verwendet, um einen Dateinamen zu erstellen, diese Ausgaben jedoch eines der ungültigen Dateinamenzeichen enthalten, müssen Sie diese Zeichen entfernen.

Das in diesem Unterabschnitt besprochene Skript verwendet nicht die PowerShell-Replace-Methode. Ich habe mich jedoch entschieden, es aufzunehmen, weil ich glaube, dass es ein einzigartiges Problem behebt, mit dem die meisten SysAdmins konfrontiert sind.

Weiter geht es mit dem Beispiel, das ich gleich besprechen werde stackoverflow.com Frage. Der Benutzer, der die Frage gestellt hat, möchte ungültige Zeichen aus einer Zeichenfolge entfernen, bevor er die Zeichenfolge zum Erstellen einer Datei verwendet.

Wenn die Zeichenfolge Leerzeichen enthält, möchte der Benutzer außerdem die Leerzeichen im Dateinamen beibehalten.

Ich habe mir die von verschiedenen Benutzern bevorzugten Lösungen angesehen. Diejenige mit der besten Lösung wurde von gepostet John Longmuir .

In Johns Beispiel möchte er alle ungültigen Dateinamenzeichen in der Zeichenfolge „abc*def.txt“ entfernen. Wie vom Autor der ursprünglichen Frage gefordert, möchte er jedoch die Leerzeichen in der Zeichenfolge beibehalten.

Hier ist Johns Skript …

|_+_|

Im ersten Befehl speichert er den String in einer Variablen. Dann konvertiert er im ersten Teil des zweiten Befehls (vor der Pipeline) die $ na me-Variable in einen [char]-Datentyp.

Der Datentyp [char] ist ein Unicode-16-Bit-Zeichen.

Im zweiten Teil des Befehls leitet John die Ausgabe des konvertierten [char]-Datentyps an einen Where-Object-Befehl weiter. Innerhalb des Where-Object-Skriptblocks ruft er die GetinvalidFileNameChars() Methode der Pfadklasse , [IO.Pfad] .

Dann weist PowerShell an, nur Werte zurückzugeben, die nicht in der enthalten sind GetinvalidFileNameChars() Methode.

Der GetinvalidFileNameChars() Die Methode listet alle ungültigen Dateinamenzeichen auf.

Nachdem die ungültigen Dateinamenzeichen entfernt wurden, verwendet er schließlich PowerShell Join, um alle Zeichen in eine Zeichenfolge zu verwandeln.

8 Bit Music Maker App

Das Endergebnis ist … Die Sonderzeichen (ungültige Dateinamenzeichen) sind weg, aber die Zeichenfolge wird mit den Leerzeichen zurückgegeben!

Um die Verwendung zu vereinfachen und basierend auf dem Originalskript, das von der stackoverflow.com Frageautor, ich habe beschlossen, Johns Skript in eine PowerShell-Funktion umzuwandeln.

Hier ist die PowerShell-Funktion Remove-InvalidFileNameChars.

|_+_|

So verwenden Sie den PowerShell-Ersetzungsoperator mit mehreren Beispielen

So verwenden Sie den PowerShell-Ersetzungsoperator mit mehreren Beispielen

Im ersten Abschnitt dieses Handbuchs habe ich verschiedene Beispiele für die PowerShell-Replace-Methode behandelt. In diesem Abschnitt konzentriere ich mich auf den PowerShell-Replace-Operator.

Der Abschnitt beginnt mit der Erörterung der Syntax des PowerShell-Replace-Operators.

Syntax des PowerShell-Replace-Operators

Die Syntax des PowerShell-Replace-Operators lautet…

|_+_| |_+_|

Ein klarer Unterschied zwischen einer PowerShell-Methode und einem Operator ist die Art und Weise, wie sie verwendet werden. In einer Methode platzieren Sie einen Punkt (.) neben dem Objekt, gefolgt vom Namen der Methode und () Klammern.

Im Gegensatz dazu fügen Sie für einen Operator ein Leerzeichen nach dem PowerShell-Objekt hinzu, gefolgt von – und dem Namen des Operators.

Also, in den folgenden Beispielen, anstatt zu verwenden .Ersetzen() , werde ich verwenden -Ersetzen !

So verwenden Sie die PowerShell-Ersetzungsmethode, um ein Zeichen in einer Zeichenfolge zu operieren

Um das Zeichen i durch I in der Zeichenfolge Victor zu ersetzen, verwende ich den folgenden Befehl…

|_+_|

Das Ergebnis in PowerShell…

Anders als bei der PowerShell-Ersetzungsmethode, bei der die Groß-/Kleinschreibung beachtet wird, ist dies beim PowerShell-Ersetzungsoperator nicht der Fall. Der folgende Befehl führt also zum gleichen Ergebnis wie der vorherige Befehl …

|_+_|

Dieses Mal habe ich ein großes I auf der Wertseite verwendet Ersetzen Operator. Beachten Sie, dass der String kein großes I enthält, Victor.

Wenn Sie also ein PowerShell-Skript schreiben, das Groß- und Kleinbuchstaben ersetzen muss, verwenden Sie den Replace-Operator anstelle der Replace-Methode.

So verwenden Sie die PowerShell-Ersetzungsmethode, um mehrere Zeichenfolgen in einer Textdatei zu ersetzen

Im Abschnitt „Ersetzungsmethode“ habe ich ein Beispiel gegeben, in dem ich Servernamen in dieser Textdatei ersetzt habe.

So verwenden Sie die PowerShell-Ersetzungsmethode, um mehrere Zeichenfolgen in einer Textdatei zu ersetzen

Ich möchte den Servernamen ITGServer1 durch ITGServer4 ersetzen. Außerdem möchte ich ITGServer2 durch ITGServer5 und ITGServer3 durch ITGServer6 ersetzen.

Hier ist die Replace-Operator-Version des Skripts, das im Beispiel der Replace-Methode verwendet wird…

avast nimmt zu viel Speicher in Anspruch
|_+_| Wie im Beispiel zum Ersetzen der Methode ist der Teil des Ersetzen-Operators des letzten Skripts verkettet.

Verwendung des PowerShell-Ersetzungsoperators zum Ersetzen von Zeichenfolgen und Zeichen mit Berücksichtigung der Groß-/Kleinschreibung

An verschiedenen Stellen in diesem Handbuch habe ich angedeutet, dass bei der PowerShell-Replace-Methode die Groß-/Kleinschreibung beachtet wird. PowerShell Replace Operator ist es jedoch nicht.

In diesem Abschnitt möchte ich dies anhand eines Beispiels veranschaulichen.

Beispielsweise ersetzt dieser Befehl R NICHT, da bei der Ersetzungsmethode zwischen Groß- und Kleinschreibung unterschieden wird.

|_+_|

Dieser Befehl ersetzt jedoch R, da Operator ersetzen standardmäßig NICHT zwischen Groß- und Kleinschreibung unterscheidet

|_+_|

Verwendung des PowerShell-Ersetzungsoperators zum Ersetzen des umgekehrten Schrägstrichs ()

Im ersten Abschnitt dieses Handbuchs habe ich diesen PowerShell-Befehl verwendet, um den einzelnen umgekehrten Schrägstrich () in dieser Zeichenfolge zu ersetzen. 23420.1.2021 , mit doppeltem Backslash, (\)…

|_+_|

Wie Sie sehen können, habe ich einfach den einzelnen Backslash in der Replace-Methode ohne Probleme verwendet.

Wenn ich jedoch den letzten Befehl in die Replace-Operator-Version umwandele, erhalte ich eine Fehlermeldung. Hier ist die Replace-Operator-Version des Befehls:

|_+_|

Wenn ich den Befehl in PowerShell ausführe, erhalte ich eine Fehlermeldung…

Der Grund für diesen Fehler liegt darin, dass in PowerShell als reguläres Ausdrucksmuster behandelt wird. Um dieses Problem zu lösen, muss ich einen zweiten umgekehrten Schrägstrich in hinzufügen.

Dadurch wird der einzelne Backslash in wie ein doppeltes \ angezeigt. Der zweite umgekehrte Schrägstrich weist PowerShell jedoch an, nicht als reguläres Ausdrucksmuster zu behandeln.

Also lautet der Befehl jetzt..

|_+_|

Jetzt funktioniert der Befehl wie ein Zauber!

Das ist es – ein umfassender und überarbeiteter PowerShell-Replace-Leitfaden! Ich hoffe, Sie fanden es hilfreich?

Wenn Sie es hilfreich fanden, stimmen Sie bitte ab ja zu der Frage War dieser Beitrag hilfreich unten.

Alternativ können Sie eine Frage stellen, einen Kommentar hinterlassen oder weitere Rückmeldungen geben, indem Sie das Formular „Antwort hinterlassen“ am Ende dieser Seite verwenden.

Weitere PowerShell-Tech-S-Zonen finden Sie schließlich auf unserer Anleitungsseite für Windows PowerShell. Vielleicht finden Sie auch unsere Seite Arbeit von zu Hause aus sehr hilfreich.

Referenzen und weiterführende Literatur

  1. Über Methoden
  2. Über Betreiber
  3. about_Quoting_Rules
  4. How-to: Definieren Sie PowerShell-Datentypen
  5. Pfadklasse
  6. So extrahieren Sie einen Powershell-Teilstring aus einem String
  7. Powershell, falls anders erklärt: Syntax und Beispiele