Zeichenketten in PowerShell sind wahrscheinlich der am häufigsten verwendete Datentyp in PowerShell. Von der Anzeige von Nachrichten, der Aufforderung zur Eingabe oder dem Senden von Daten an Dateien ist es fast unmöglich, Skripte zu schreiben, ohne dass Zeichenketten beteiligt sind.
In diesem Artikel erfahren Sie, dass Zeichenketten nicht nur zum Lesen und Anzeigen gedacht sind. Sie können auch so manipuliert werden, dass sie dem Zweck der jeweiligen Aufgabe entsprechen, für die Sie das Skript schreiben. Wie beispielsweise das Ersetzen von Zeichen oder ganzen Wörtern, das Zusammensetzen von Zeichenketten zu einer neuen Zeichenkette oder sogar das Aufteilen einer Zeichenkette in mehrere Zeichenketten.
Verständnis von Zeichenketten
Nach der .NET-Definition von Zeichenkette – „Eine Zeichenkette ist eine sequenzielle Sammlung von Zeichen, die zur Darstellung von Text verwendet wird“. Zusammengefasst bedeutet dies, solange es eine Abfolge von Zeichen gibt, die einen Text bilden, gibt es eine Zeichenkette.
Definition von Systemzeichenketten in PowerShell
Zeichenketten werden definiert, indem eine Reihe von Zeichen in einfache oder doppelte Anführungszeichen eingeschlossen werden. Im Folgenden finden Sie Beispiele für eine Zeichenkette.
Zeichenketten sind tatsächlich System.Strings in .NET.
Wie Sie aus dem obigen Beispiel sehen können, ist die erste Zeichenkette mit einem einfachen Anführungszeichen und die zweite Zeichenkette mit einem doppelten Anführungszeichen eingeschlossen. Falls Sie sich fragen, der einzige Unterschied zwischen den beiden besteht darin, dass Zeichenketten in doppelten Anführungszeichen die Zeichenkettenexpansion unterstützen, während ein einfaches Anführungszeichen nur für wörtliche Zeichenketten steht.
Um das Konzept von einfachen gegenüber doppelten Anführungszeichen zu bestätigen, können Sie beide Zeichenketten aus dem obigen Beispiel in PowerShell einfügen.
Der Screenshot unten zeigt, dass eine einzelne in Anführungszeichen gesetzte Zeichenkette die exakte wörtliche Zeichenkette zurückgibt, die definiert wurde. Während die doppelt in Anführungszeichen gesetzte Zeichenkette die Zeichenkette mit dem Ausdrucksergebnis des Get-Date
-Befehls zurückgibt.

Das oben gezeigte Ergebnis verdeutlicht den Unterschied, wann es angebracht ist, einfache oder doppelte Anführungszeichen zur Definition von Zeichenketten zu verwenden.
Das String-Objekt
Wie bereits in der vorherigen Sektion erwähnt, ist die Sammlung von Zeichen, die einen Text bilden, eine Zeichenkette. Der resultierende Wert der Zeichenkette ist das String-Objekt. Das String-Objekt ist ein .NET-Objekt vom Typ [System.String].
Und da System.String ein Objekt ist, verfügt es über Eigenschaften, auf die Sie mit dem Get-Member
-Befehl zugreifen können. Im Folgenden fügen wir eine Variable in eine Zeichenkette mit doppelten Anführungszeichen ein.
Der Screenshot unten zeigt den Typnamen und die partielle Liste der Eigenschaften des String-Objekts.

Konkatenation von PowerShell-Zeichenketten
Die Konkatenation von Zeichenketten wird als das Zusammenfügen von zwei oder mehr Zeichenketten beschrieben, wodurch im Wesentlichen ein Zeichenkettenobjekt aus mehreren separaten Zeichenkettenobjekten erstellt wird. Es gibt mehrere Methoden in PowerShell, um Zeichenketten zu konkatenieren. Jede Methode ist unterschiedlich, und welche Methode verwendet wird, hängt davon ab, wie Sie die Zeichenkettenkonkatenation implementieren möchten.
A typical example of using string concatenation in the real world is Active Directory user creation. Perhaps you’re creating a user creation script that takes the first name, last name, and department values from a list.
Mit der Zeichenkettenverkettung können Sie die Standardbenennungskonvention für den Namen, Anzeigenamen, Benutzernamen und E-Mail-Adresse formulieren. In diesem Beispiel arbeiten Sie mit den unten gezeigten Zeichenketten. Kopieren Sie diesen Code und fügen Sie ihn in Ihre PowerShell-Sitzung ein.
Verwenden Sie die oben angegebenen Variablenwerte, um die folgenden Werte zu ermitteln, indem Sie Zeichenketten miteinander verketten.
- Name = Vorname Nachname
- Anzeigename = Vorname Nachname (Abteilung)
- SamAccountName = Vorname.Nachname
- E-Mail-Adresse = [email protected]
In den nächsten Abschnitten werden die oben aufgeführten Werte mithilfe der verschiedenen in PowerShell verfügbaren Methoden zur Zeichenkettenverkettung erstellt.
Beginnen wir!
Verwendung des PowerShell-Zeichenkettenverkettungsoperators
Programmiersprachen haben ihren eigenen Zeichenkettenverkettungsoperator zur Verkettung von Zeichenketten. Zum Beispiel ist in Visual Basic die Verkettungsmethode das Kaufmanns-Und-Zeichen (&
). PowerShell hat auch seine eigene Verkettungsmethode, das Pluszeichen (+
).
Mit dem Zeichenkettenverkettungsoperator können Sie Zeichenketten mit dem folgenden Code verketten.
Mit der PowerShell-String-Erweiterung
Die Verwendung der String-Erweiterung ist möglicherweise die Methode, die den kürzesten Code ergibt, wenn Zeichenketten konkateniert werden. Wie aus dem unten stehenden Code ersichtlich ist, müssen Sie die Zeichenketten lediglich so anordnen, wie sie erscheinen sollen, und sie in doppelte Anführungszeichen setzen.
Dann interpretiert und behandelt PowerShell die String-Erweiterung innerhalb des Zeichenketten mit doppelten Anführungszeichen, um die konkatenierte Zeichenkette als Ergebnis auszugeben. Sie können sich auf das unten stehende Beispielergebnis beziehen.

Verwendung des PowerShell-Formatoperators
Der Formatoperator (-f
) wird hauptsächlich für zusammengesetzte Formatierung verwendet. Wichtig ist zu beachten, dass bei dieser Methode drei Teile verwendet werden -f
.
Beachten Sie die dritte Zeile des unten stehenden Codes. "{0} {1}"
stellt das Format und die Platzhalter dar. Die Zahlen in den geschweiften Klammern geben den Index der Zeichenkette in der Sammlung an, die an ihrer Stelle angezeigt werden soll. Die Anführungszeichen können ein- oder doppelte Anführungszeichen sein.
Die Eingabe der Zeichensammlung in diesem Beispiel wird durch $vorname,$nachname
repräsentiert. Dies bedeutet, dass der Index der Variablen $vorname
0 ist, während $nachname
1 ist.
Schließlich ist -f
der Ort zwischen dem Platzhalter und der Sammlung von Zeichenketten, die durch (-f
) dargestellt werden.
Der obige Code führt zu den unten gezeigten Ergebnissen.

Verwendung des PowerShell-Operators -Join
Der Operator -Join
kann auf zwei Arten verwendet werden, um Zeichenketten zu einer einzelnen Zeichenkette zu verbinden.
Die erste Möglichkeit, -Join
zu verwenden, besteht darin, ihm das Array von Zeichenketten anzuhängen, die Sie zusammenfügen möchten. Der Operator -Join
bietet keine Option zum Hinzufügen eines Trennzeichens. Alle Zeichenketten im Array werden ohne Trennzeichen zusammengeklebt.
Die zweite Möglichkeit, den Operator -Join
zu verwenden, besteht darin, das zu verwendende Trennzeichen anzugeben. Das Array von Zeichenketten wird zusammengefügt, wobei das angegebene Trennzeichen zwischen jede Zeichenkette eingefügt wird.
Zurück zum Ziel, Zeichenketten zu verbinden, demonstriert der folgende Code, wie der Operator -Join
verwendet wird, um Zeichenketten zusammenzusetzen.
Wenn Sie den obigen Beispielcode in PowerShell ausführen, sollten Sie eine ähnliche Ausgabe wie die unten gezeigte erwarten.

Die .NET String.Format()
-Methode
Die .NET String.Format-Methode ist das .NET-Gegenstück zum PowerShell-Formatoperator. Sie funktioniert genauso wie der Formatoperator, bei dem das Format und die Platzhalter angegeben werden müssen.
Der folgende Screenshot zeigt die String.Format-Methode in Aktion.

Die .NET String.Concat()
-Methode
Eine andere Methode, um Zeichenketten zu verknüpfen, besteht darin, die .NET String.Concat-Methode zu verwenden. Die .NET String.Concat-Methode ist das .NET-Gegenstück zum PowerShell-Zeichenkettenverknüpfungsoperator (+
). Anstatt das +-Zeichen zum Verbinden von Zeichenketten zu verwenden, können Sie alle Zeichenketten innerhalb der Methode hinzufügen, wie dies hier möglich ist – [string]::Concat(string1,string2...)
.
Der unten stehende Screenshot zeigt das Ergebnis des Aufrufs der .NET String.Concat-Methode. Sie können sehen, dass PowerShell die Zeichenfolgen string1 und string2 zusammengeführt hat.

Die .NET String.Join()
-Methode
Die .NET String.Join-Methode ist das Gegenstück zum PowerShell Join-Operator (-join
). Das Format für diese Methode ist [string]::Join(<Trennzeichen>,<Zeichenfolge1>,<Zeichenfolge2>,...)
.
Der erste Eintrag in der -Join
-Methode ist immer das Trennzeichen. Die nachfolgenden Einträge sind die Zeichenfolgen, die Sie zusammenfügen möchten. Im folgenden Beispielcode sehen Sie dies. Beachten Sie, dass der erste Eintrag immer das Trennzeichen ist. Wenn Sie kein Trennzeichen hinzufügen möchten, können Sie dies so angeben -> ''
.

Aufteilen von PowerShell-Zeichenfolgen
In dem vorherigen Abschnitt haben Sie verschiedene Methoden zum Zusammenfügen von Zeichenfolgen gesehen. In diesem Abschnitt erfahren Sie, wie Sie PowerShell verwenden können, um Zeichenfolgen aufzuteilen. Das Aufteilen von Zeichenfolgen ist die umgekehrte Aktion der Konkatenation.
Sie können Zeichenfolgen in PowerShell auf zwei verschiedene Arten aufteilen – mit der split()
-Funktion/Methode oder dem split
-Operator.
Zeichenfolgen mit der split()
-Methode aufteilen
Wenn Sie eine einfache Möglichkeit suchen, eine Zeichenfolge aufzuteilen und ein Array zu erstellen, dann verwenden Sie die split()
-Methode. Die split()
-Methode ist Teil jedes String-Objekts und kann eine Zeichenfolge in ein Array aufteilen, basierend auf einem nicht-regex-Zeichen.
Zum Beispiel, wenn Sie eine Zeichenfolge wie green|eggs|and|ham
haben und ein Array wie @('green','eggs','and','ham')
erstellen möchten, können Sie diese Zeichenfolge am Pipe-Symbol (|
) aufteilen, wie im folgenden Code-Snippet.
Sie werden dann sehen, dass PowerShell die Zeichenfolge in das gewünschte Array mit dem Pipe-Symbol aufgeteilt hat.
Die split()
-Methode ist eine einfache Möglichkeit, Zeichenfolgen aufzuteilen, hat jedoch ihre Grenzen. Die split()
-Methode erlaubt kein Aufteilen von Zeichenfolgen mittels regulärer Ausdrücke. Wenn Sie erweiterte Funktionen zum Aufteilen einer Zeichenfolge benötigen, müssen Sie den split
-Operator verwenden.
Der -split
-Operator
Der Hauptoperator, der zum Aufteilen von Zeichenfolgen in PowerShell verwendet werden kann, ist der -Split
-Operator. Mit dem -Split
-Operator werden Zeichenfolgen standardmäßig an Leerzeichen aufgeteilt oder an bestimmten Trennzeichen.
Hier ist die Syntax für den -Split
-Operator zur Referenz. Beachten Sie den Unterschied zwischen dem unären und binären Aufteilen.
In diesem Beispiel enthält die Variable $string
den Wert einer einzelnen Zeichenfolge. Mit dem -Split
-Operator wird die einzelne Zeichenfolge in ein PowerShell-Zeichenfolgenarray aufgeteilt. Die resultierende aufgeteilte Zeichenfolge wird in der Variable $split
gespeichert.
Wie Sie aus dem obigen Ergebnis sehen können, wurde aus der ursprünglichen einzelnen Zeichenfolge eine Aufteilung in 7 Teilzeichenfolgen vorgenommen. Dies zeigt, wie PowerShell eine Zeichenfolge in ein Array aufteilt.
Das Zeichenfolgen-Trennzeichen
In dem vorherigen Beispiel hat der -Split
-Operator die einzelne Zeichenfolge in mehrere Teilzeichenfolgen aufgeteilt, auch ohne ein Trennzeichen anzugeben. Das liegt daran, dass das Standardtrennzeichen des -Split
-Operators ein Leerzeichen ist. Trennzeichen können jedoch auch Zeichen, Zeichenfolgen, Muster oder Skriptblöcke sein.
In diesem Beispiel wird als Trennzeichen das Semikolon ;
verwendet.
Wenn Sie den obigen Code in PowerShell testen, erhalten Sie das folgende Ergebnis.

Sie bemerken aus der obigen Ausgabe, dass das Trennzeichen in den resultierenden Teilzeichenketten komplett weggelassen wurde.
Falls Sie aus irgendeinem Grund das Trennzeichen beibehalten müssen, können Sie das Trennzeichen in Klammern setzen.
Nachdem Sie das Trennzeichen wie oben gezeigt geändert haben und den Code ausführen, erhalten Sie das folgende Ergebnis.

Das obige Ergebnis zeigt, dass die Trennzeichen nicht weggelassen werden und in die resultierenden Teilzeichenketten mitgezählt werden.
Das Zeichenketten-Trennzeichen
Zeichenketten können auch anhand einer anderen Zeichenkette als Trennzeichen aufgeteilt werden. In diesem Beispiel wird die Zeichenkette „day“ als Trennzeichen verwendet.
Das Skriptblock-Trennzeichen
A scriptBlock as the delimiter enables the -Split operator to perform custom or complex splitting of strings.
In den vorherigen Beispielen wurde das Trennzeichen als Zeichen oder Zeichenkette verwendet, um die Zeichenketten aufzuteilen. Mit Hilfe eines Skriptblocks können Sie einen Ausdruck erstellen, der effektiv mehr als ein Trennzeichen verwendet.
Das folgende Beispiel verwendet den Ausdruck {$PSItem -eq 'e' -or $PSItem -eq 'y'}
, was bedeutet, dass der String aufgeteilt wird, wenn das eingehende Zeichen 'e'
oder 'a'
ist.
Wenn Sie diesen Befehl ausführen, werden die Ausgabesubstrings aufgeteilt, wobei die im Ausdruck im Skriptblock angegebenen Trennzeichen verwendet werden.

Das nächste Beispiel verwendet einen Skriptblock. Diesmal wird der Ausdruck überprüft, ob:
- das eingehende Zeichen als Ganzzahl übergeben wird und
- sein Wert größer als 1 ist.
Wenn das Ergebnis der Überprüfung wahr ist, verwendet der -Split
-Operator dieses Zeichen als Trennzeichen. Außerdem wird eine Fehlerbehandlung hinzugefügt, um sicherzustellen, dass Fehler herausgefiltert werden.
Nachdem der obige Code ausgeführt wurde, wird erwartet, dass der String an der Stelle aufgeteilt wird, an der der Zeichenwert als Ganzzahl mit einem Wert größer als 1 interpretiert werden kann. Unten ist die erwartete Ausgabe dargestellt.

Der RegEx-Trenner
Standardmäßig verwendet der -Split
-Operator eine RegEx-Übereinstimmung als Trennzeichen. Das bedeutet, dass Sie RegEx auch als Trennzeichen zum Aufteilen von Strings verwenden können.
In diesem nächsten Beispiel enthält der String Wortzeichen und Nicht-Wortzeichen. Das Ziel ist es, den String mit allen Nicht-Wortzeichen zu teilen. In RegEx werden Nicht-Wortzeichen durch \W
dargestellt, während Wortzeichen, die diesen Zeichen entsprechen – [a-zA-Z0-9_]
– durch \w
dargestellt werden.
Beschränkung von Teilzeichenketten
Es ist auch möglich, den -Split-Operator daran zu hindern, eine Zeichenkette in mehrere Teilzeichenketten aufzuteilen. Die Option, um das Ergebnis der Teilzeichenkette zu begrenzen, ist der Parameter <Max-Teilzeichenketten>
.
Wenn Sie auf die -Split-Syntax verweisen, ist der Parameter <Max-Teilzeichenketten>
der Parameter, der direkt auf den Parameter <Begrenzt>
folgt. Die Syntax wird unten zur Referenz erneut angezeigt.
Unter Verwendung der oben genannten Syntax wurde der folgende Beispielcode geändert, um die Anzahl der Aufteilungen/Teilzeichenketten auf 3 zu begrenzen.
Bei Ausführung des oben stehenden Codes ergibt sich folgende Ausgabe. Wie Sie aus der Ausgabe unten sehen können, wurde die Zeichenkette nur in drei Teilzeichenketten aufgeteilt. Die übrigen Trennzeichen wurden übersprungen.

Wenn Sie die Teilzeichenketten begrenzen möchten, aber in umgekehrter Reihenfolge, können Sie den Wert des Parameters <Max-Teilzeichenketten>
auf einen negativen Wert ändern. In diesem nächsten Beispiel wird <Max-Teilzeichenketten>
auf -3
geändert.
Und als Ergebnis des obigen geänderten Codes wurde die Zeichenkette ab den letzten drei übereinstimmenden Trennzeichen aufgeteilt.

Suchen und Ersetzen von Zeichenketten
In diesem Abschnitt erfahren Sie mehr über die beiden Methoden, die zur Suche und Durchführung einer PowerShell-Zeichenkettenersetzung verwendet werden können. Die Methode Replace()
und der Operator -Replace
.
Die Methode Replace()
Das String-Objekt verfügt auch über eine integrierte Methode, die bei der Durchführung von Such- und Ersetzungsvorgängen hilfreich sein kann – die Methode replace()
. Die Methode replace()
akzeptiert maximal vier Überladungen.
Die akzeptable Menge an Überladungen für die Methode replace()
ist unten aufgeführt.
Die einzigen erforderlichen Überladungen sind <original>
und <substitute>
. <ignoreCase>
und <culture>
sind optional.
Im folgenden Beispiel sucht der Code nach allen Vorkommen des Kommas (,
) und ersetzt es durch ein Semikolon (;
).
Neben dem Ersetzen eines einzelnen Zeichens können Sie die Methode replace()
auch zum Suchen und Ersetzen von Zeichenketten verwenden. Der folgende Beispielcode ersetzt das Wort „Tag“ durch „Nacht“.

replace()
methodDer Operator -Replace
Die Syntax für den Ersetzungsoperator wird unten angezeigt.
Mit der oben gezeigten Syntax ersetzt der folgende Beispielcode das Wort „Tag“ durch „Nacht“ mit dem Operator -replace
.

-replace
operatorDieses nächste Beispiel verwendet eine RegEx-Übereinstimmung, um Zeichenfolgen mit dem -replace
-Operator zu ersetzen. Der folgende Code sucht in der here-string nach der Zeichenfolge, die mit (#.
) übereinstimmt, und ersetzt sie durch nichts.

-replace
Extrahieren von Zeichenfolgen aus Zeichenfolgen
Das String-Objekt verfügt über eine Methode namens SubString()
. Die Methode SubString()
wird verwendet, um Zeichenfolgen innerhalb von Zeichenfolgen an bestimmten Positionen zu extrahieren. Die Syntax für die Methode SubString()
wird unten angezeigt.
Der startIndex
ist der Positionsinde, an dem die Methode SubString()
mit der Suche beginnen würde. Der Parameter length
gibt die Anzahl der zurückzugebenden Zeichen ab dem startIndex
an. Der Parameter length
ist optional, und wenn er nicht verwendet wird, gibt die Methode SubString()
alle Zeichen zurück.
Extrahieren einer Teilzeichenfolge ab einer Startposition und mit fester Länge
Der folgende Beispielcode ruft den Teil der $guid
-Zeichenfolgenwertes ab, der ab dem Index 9 beginnt, und gibt genau die 5 folgenden Zeichen zurück.
Extrahieren einer Teilzeichenfolge ab einer dynamischen Startposition
Dieses nächste Beispiel zeigt, wie Sie die Längeneigenschaft eines PowerShell-Strings verwenden können, um einen Startindex dynamisch festzulegen.
Der folgende Code macht folgendes:
- Ruft die Länge des String-Objekts ab.
- Ruft den Index des mittleren Indexes ab, indem die Länge durch 2 dividiert wird.
- Verwendet den mittleren Index als Startindex des Teilstrings.
Da der Länge
-Wert nicht angegeben wurde, hat die Substring()
-Methode alle Zeichen ab dem Startindex zurückgegeben.

Vergleichen von PowerShell-Zeichenketten
Sie können PowerShell auch zum Vergleichen von Zeichenketten verwenden, indem Sie die integrierten Methoden des Zeichenkettenobjekts wie CompareTo()
, Equals()
und Contains()
verwenden. Oder indem Sie die PowerShell Vergleichsoperatoren verwenden.
Verwendung der Methode CompareTo()
Die Methode CompareTo()
gibt den Wert 0 zurück, wenn die beiden Zeichenketten den gleichen Wert haben. Im folgenden Beispiel werden zwei Zeichenkettenobjekte verglichen.
Da die Werte gleich sind, sollte das Ergebnis 0 sein, wie unten gezeigt.

CompareTo()
method to compare stringsVerwendung der Methode Equals()
und des Operators -eq
Die Methode Equals()
und der Operator -eq
können verwendet werden, um zu überprüfen, ob der Wert der beiden Zeichenketten gleich ist.
Das folgende Beispiel verwendet die Methode Equals()
, um die Werte von $string1
und $string2
zu vergleichen.
Der obige Code sollte False
zurückgeben, da die Werte von $string1
und $string2
nicht gleich sind.

Equals()
methodDas nächste Beispiel unten verwendet stattdessen -eq
, um die Werte von $string1
und $string2
zu vergleichen.
Wie aus der untenstehenden Ausgabe ersichtlich ist, sind das Ergebnis bei Verwendung von -eq
und der Methode Equal()
gleich.

-eq
operatorVerwendung der Methode Contains()
In diesem Beispiel werden die beiden Zeichenfolgen verglichen, indem überprüft wird, ob die PowerShell-Zeichenfolge eine Teilzeichenfolge einer anderen Zeichenfolge enthält.
Der folgende Code zeigt, dass die Werte von $string1
und $string2
nicht gleich sind. Der Wert von $string2
ist jedoch eine Teilzeichenfolge von $string1
.
Das Ergebnis des obigen Codes sollte True
sein, wie unten gezeigt.

Contains()
method