Freigeben über


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 statt 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 aufweisen. Sie müssen Unterstützung für Wildcardzeichen bereitstellen, wenn Sie ein Cmdlet entwerfen, das für eine Gruppe von Ressourcen ausgeführt wird.

Hinweis

Die Verwendung von Wildcardzeichen wird manchmal als globbingbezeichnet.

Windows PowerShell-Cmdlets, die Platzhalter verwenden

Viele Windows PowerShell-Cmdlets unterstützen Platzhalterzeichen für ihre Parameterwerte. Beispielsweise unterstützt fast jedes Cmdlet mit einem Name- oder Path-Parameter Wildcardzeichen für diese Parameter.For example, every cmdlet that has a Name or Path parameter supports wildcard characters for these parameters. (Obwohl die meisten Cmdlets mit einem Path Parameter auch einen LiteralPath Parameter aufweisen, der keine Wildcardzeichen unterstützt.) Der folgende Befehl zeigt, wie ein Wildcardzeichen verwendet wird, um alle Cmdlets in der aktuellen Sitzung zurückzugeben, deren Name das Verb "Get" enthält.

Get-Command get-*

Unterstützte Wildcardzeichen

Windows PowerShell unterstützt die folgenden Platzhalterzeichen.

Platzhalter BESCHREIBUNG Beispiel Treffer Passt nicht
* Gleicht null oder mehr Zeichen ab, 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, Koch, Look nook, nahm
[ ] Entspricht den angegebenen Zeichen. [bn]ook Buch, nook Kochen, Aussehen

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

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

Der vorherige Befehl verwendet den Bereichsplatzhalter[a-l] 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 .txt Erweiterung.

Im folgenden Beispiel wird ein Bereichs-Wildcardmuster 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 Wildcardmustern

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

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

Bei Verwendung in der PowerShell-API verwenden Sie Folgendes:

  • "John Smith '[*']"

Bei Verwendung über die PowerShell-Eingabeaufforderung:

  • "John Smith ''[*']"

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

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

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

Cmdlet-Ausgabe- und Wildcardzeichen

Wenn Cmdlet-Parameter Wildcardzeichen 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 Set-Location unterstützt beispielsweise keine Arrayausgabe, da der Benutzer nur einen einzigen Speicherort festlegt. In diesem Fall unterstützt das Cmdlet weiterhin Wildcardzeichen, er erzwingt jedoch die Auflösung an einer einzelnen Position.

Siehe auch

Schreiben eines Windows PowerShell-Cmdlets

WildcardPattern-Klasse