Unterstützung für Platzhalter in Cmdlet-Parametern

Häufig müssen Sie ein Cmdlet so entwerfen, dass es für eine Gruppe von Ressourcen und nicht für eine einzelne Ressource ausgeführt wird. Beispielsweise muss ein Cmdlet möglicherweise alle Dateien in einem Datenspeicher suchen, die denselben Namen oder dieselbe Erweiterung haben. Sie müssen Platzhalterzeichen unterstützen, wenn Sie ein Cmdlet entwerfen, das für eine Gruppe von Ressourcen ausgeführt wird.

Hinweis

Die Verwendung von Platzhalterzeichen wird manchmal als Globzeichen bezeichnet.

Windows PowerShell Cmdlets, die Platzhalter verwenden

Viele Windows PowerShell-Cmdlets unterstützen Platzhalterzeichen für ihre Parameterwerte. Beispielsweise unterstützt fast jedes Cmdlet, das über einen - oder Name Path -Parameter verfügt, Platzhalterzeichen für diese Parameter. (Obwohl die meisten Cmdlets, die über einen Parameter verfügen, auch einen Path LiteralPath Parameter haben, der keine Platzhalterzeichen unterstützt.) Der folgende Befehl zeigt, wie ein Platzhalterzeichen verwendet wird, um alle Cmdlets in der aktuellen Sitzung zurück zu geben, deren Name das Get-Verb enthält.

Get-Command get-*

Unterstützte Platzhalterzeichen

Windows PowerShell unterstützt die folgenden Platzhalterzeichen.

Platzhalter BESCHREIBUNG Beispiel Treffer Stimmt nicht überein mit
* Entspricht null oder mehr Zeichen, beginnend an der angegebenen Position a* A, ag, Apple
? Entspricht einem beliebigen Zeichen an der angegebenen Position. ?n An, in, on Lief
[ ] Entspricht einem Zeichenbereich [a-l]ook Buch, Cook, Look nook, took
[ ] Entspricht den angegebenen Zeichen. [bn]ook book, nook cook, look

Wenn Sie Cmdlets entwerfen, die Platzhalterzeichen unterstützen, lassen Sie Kombinationen von Platzhalterzeichen zu. Der folgende Befehl verwendet beispielsweise das Cmdlet , um alle .txt-Dateien abzurufen, die sich im Ordner c:\Techdocs befinden und mit den Buchstaben Get-ChildItem "a" bis "l" beginnen.

Get-ChildItem c:\techdocs\[a-l]\*.txt

Der vorherige Befehl verwendet den Bereichsplatzhalter, um anzugeben, dass der Dateiname mit den Zeichen "a" bis "l" beginnen soll, und verwendet das Platzhalterzeichen als Platzhalter für alle Zeichen zwischen dem ersten Buchstaben des Dateinamens und der [a-l] * .txt-Erweiterung.

Im folgenden Beispiel wird ein Bereichs-Platzhaltermuster verwendet, das den Buchstaben "d" ausschließt, aber alle anderen Buchstaben von "a" bis "f" enthält.

Get-ChildItem c:\techdocs\[a-cef]\*.txt

Behandeln von Literalzeichen in Platzhaltermustern

Wenn das von Ihnen angegebenen Platzhaltermuster Literalzeichen enthält, die nicht als Platzhalterzeichen interpretiert werden sollen, verwenden Sie das Backtickzeichen ( ` ) als Escapezeichen. Wenn Sie Literalzeichen int der PowerShell-API angeben, verwenden Sie einen einzelnen Backtick. Wenn Sie literale Zeichen an der PowerShell-Eingabeaufforderung angeben, verwenden Sie zwei Backticks.

Das folgende Muster enthält beispielsweise zwei Klammern, die wörtlich genommen werden müssen.

Verwenden Sie bei Verwendung in der PowerShell-API:

  • "John Smith ` [*']"

Bei Verwendung über die PowerShell-Eingabeaufforderung:

  • "John Smith ` ` [* ` ']"

Dieses Muster entspricht "John Smith [Marketing]" oder "John Smith [Entwicklung]". Beispiel:

PS> "John Smith [Marketing]" -like "John Smith ``[*``]"
True

PS> "John Smith [Development]" -like "John Smith ``[*``]"
True

Cmdlet-Ausgabe und Platzhalterzeichen

Wenn Cmdlet-Parameter Platzhalterzeichen unterstützen, generiert der Vorgang in der Regel eine Arrayausgabe. Gelegentlich ist es nicht sinnvoll, eine Arrayausgabe zu unterstützen, da der Benutzer möglicherweise nur ein einzelnes Element verwendet. Das Cmdlet unterstützt beispielsweise Set-Location keine Arrayausgabe, da der Benutzer nur einen einzelnen Speicherort fest legt. In diesem Fall unterstützt das Cmdlet weiterhin Platzhalterzeichen, erzwingt jedoch die Auflösung an einem einzelnen Speicherort.

Weitere Informationen

Schreiben eines Windows PowerShell-Cmdlets

WildcardPattern-Klasse