Müssen Sie Pfade aufteilen, um bestimmte Teile davon zu erhalten? Wenn ja, dann können Sie sich auf PowerShell Split-Path
verlassen. Wenn Sie mit Dateien, Zertifikaten und der Registrierung arbeiten, werden Sie feststellen, dass Pfade ihre Speicherorte darstellen.
Und irgendwann müssen Sie möglicherweise filtern, welcher Teil eines Pfades zurückgegeben werden soll, vielleicht bei der Automatisierung. Glücklicherweise wird Ihnen dieses Tutorial verschiedene Möglichkeiten zeigen, wie Sie das PowerShell Split-Path
Cmdlet verwenden können, um dies zu tun.
Los geht’s! Lesen Sie weiter und lassen Sie uns Ihnen eine neue Waffe für Ihren PowerShell-Arsenal geben!
Voraussetzungen
Wenn Sie die Beispiele in diesem praxisorientierten Tutorial ausprobieren möchten, benötigen Sie einen Computer mit einer beliebigen aktuellen Version von Windows, auf dem PowerShell 5.1 oder höher ausgeführt wird. In diesem Tutorial wird Windows 10 20H2 mit PowerShell 7.1.1 verwendet.
Was steckt in einem Pfad?
Bevor wir uns ausführlich mit dem PowerShell Split-Path
Cmdlet beschäftigen, stellen wir sicher, dass Sie wissen, was ein Pfad ist. Ein Pfad bestimmt den Speicherort eines Elements, das einem bestimmten Format folgt.
Zum Beispiel könnte der Pfad einer Datei C:\demo\subfolder1\TestFile_11.txt sein. Wenn Sie diesen Pfad in Teile aufteilen, enthält der Pfad Folgendes:
- C: is the drive or the qualifier, or the specified path. The qualifier is the part of the path from the left up to the colon (
:
) character. - \demo\subfolder1\ ist der Ordner und die Unterordner oder Container.
- TestFile_11.txt ist der Dateiname oder das Blatt. Das Blatt ist das letzte Element oder Teil eines Pfades.
Denken Sie daran, dass Pfade nicht ausschließlich auf Dateien und Ordner beschränkt sind. Andere gültige Pfade können beinhalten:
- Zertifikat (z. B. Cert:\CurrentUser\My)
- Registrierung (z. B. HKCU:\Software)
- Funktion (z. B. Function:\New-Guid)
- Variable (z. B. Variable:\PSEdition)
- Active Directory (z. B. AD:\CN=Benutzer,DC=Constoso,DC=com)
Die PowerShell Split-Path-Parameter
Wie jeder Cmdlet wird Split-Path
mit einem Satz von Parametern geliefert, die beeinflussen, wie sich das Cmdlet verhält und seinen Ausgabewert zurückgibt. Und diese Parameter bilden die Syntax von PowerShell Split-Path
.
-Path
– Dieser Parameter akzeptiert einen oder mehrere Pfadzeichenfolgen, die Sie aufteilen möchten. Dieser Parameter akzeptiert auch Pipeline-Eingaben. Platzhalter in Pfaden sind ebenfalls akzeptabel.-LiteralPath
– Wie der-Path
-Parameter akzeptiert auch der-LiteralPath
-Parameter Pfade zum Aufteilen. Dieser Parameter behandelt den Pfad jedoch nur so, wie er geschrieben wurde. Das bedeutet, dass das Kommando Platzhalter nicht interpretiert, wenn Sie diesen Parameter zum Angeben von Pfaden verwenden.-Resolve
– Dieser Parameter teilt demSplit-Path
-Cmdlet mit, die Dateien oder Elemente aufzulösen, auf die der von Ihnen bereitgestellte Pfad verweist. Aufgrund seiner wörtlichen Natur können Sie diesen Parameter nicht zusammen mit dem-LiteralPath
-Parameter verwenden.-IsAbsolute
– Dieser Parameter gibt einen booleschen Wert zurück, um festzustellen, ob der angegebene Pfad ein absoluter Pfad ist oder nicht.
Das PowerShell
Split-Path
-Cmdlet verfügt ebenfalls über einen Parameter namens-Credential
, der angeblich ein Anmeldeinformations-PSCredential-Objekt akzeptiert. Aber laut Microsoft wird dieser Parameter von keinem der integrierten PowerShell-Anbieter unterstützt und führt zu einem Fehler, wenn er verwendet wird.
Die folgenden Parameter werden als die Split Location Parameters bezeichnet. Diese Parameter geben dem PowerShell Split-Path
-Cmdlet an, welches Element oder welcher Teil eines Pfads zurückgegeben werden soll. Da das Cmdlet nur ein Element eines Pfads zurückgeben kann, können Sie jeweils nur einen dieser Parameter verwenden.
-Parent
– Gibt den übergeordneten Speicherort (ohne das Element oder den Dateinamen) des angegebenen Pfads zurück. Dieser Parameter ist auch der Standard-Split-Location-Parameter, was bedeutet, dass Sie diesen Parameter weglassen können und trotzdem den übergeordneten Speicherort als Ergebnis erhalten.-Leaf
– Gibt nur das letzte Element des Pfads oder das Blatt zurück.-LeafBase
– Gibt nur das letzte Element des Pfads oder das Blatt ohne Erweiterung zurück. Dieser Parameter ist nur in PowerShell 6.0 und höher verfügbar.-Extension
– Gibt nur die Erweiterung des Blattes zurück (vom letzten Punkt „.
“ bis zum letzten Zeichen des Pfads). Dieser Parameter steht nur in PowerShell 6.0 und höher zur Verfügung.-Qualifier
– Gibt nur das Laufwerk oder den Qualifier des Pfads zurück.-NoQualifier
– Entfernt das Laufwerk oder den Qualifier aus dem restlichen Pfad.
Verwendung des PowerShell Split-Path-Cmdlets (Beispiele)
Das PowerShell Split-Path-Cmdlet ermöglicht es Ihnen, Teile eines Pfads zu trennen und zu zerlegen. Anschließend können Sie angeben, welchen Teil eines Pfads Sie zurückgeben möchten. Je nach Ausgabeanforderung können Sie den Qualifier, den Pfad ohne Qualifier und Dateiname(n) auswählen.
Holen des übergeordneten Ordners eines Pfads
Um den übergeordneten Ordner des Pfads zurückzugeben, führen Sie das PowerShell Split-Path
-Cmdlet aus und fügen Sie den Parameter -Parent
hinzu.
Das Ergebnis unten zeigt, dass der Befehl den Pfad des übergeordneten Ordners zurückgibt.

Tipp: Das Ausführen des PowerShell Split-Path-Cmdlets ohne Parameter gibt standardmäßig den übergeordneten Ordner zurück, das gleiche Verhalten wie bei Verwendung des Parameters
-Parent
.
Tipp: Der Parameter
-Path
akzeptiert mehrere Pfade, was es Ihnen ermöglicht, mehrere Pfadzeichenfolgen in einem einzigen Befehl zu trennen.e.g.,
Split-Path -Path 'c:\folder1','c:\folder2'
Anzeigen eines Pfads ohne Qualifier
Stellen Sie sich vor, Sie erstellen ein Skript, das eine Ordnerbaumstruktur von einem Laufwerk auf ein anderes dupliziert (z. B. C:\demo\subfolder1 nach D:\demo\subfolder1). Möglicherweise möchten Sie, dass Ihr Code den Quellpfad aufteilt und nur die Ordnerstruktur ohne den Laufwerksbuchstaben erhält.
Um den Pfad ohne Qualifikator zu erhalten, führen Sie das PowerShell Split-Path
-Cmdlet mit dem -NoQualifier
-Parameter aus, wie im folgenden Befehl. Dieser Befehl teilt den Pfad und lässt dabei den Laufwerksbuchstaben im Ergebnis weg.
Wie aus dem untenstehenden Ergebnis ersichtlich ist, gibt die Verwendung des Parameters noQualifier
den Pfad, jedoch ohne den Qualifikatorstring, zurück.

Das Abrufen des Laufwerks oder Qualifikators eines Pfads
Es gibt möglicherweise Situationen, in denen Sie nur den Qualifikator oder den Laufwerksbuchstaben zurückgeben müssen. Zum Beispiel, wenn Sie möchten, dass Ihr Skript die Ergebnisse basierend auf Laufwerksbuchstaben zusammenfasst.
Und um dies zu tun, führen Sie den PowerShell-Befehl Split-Path
unten mit dem -Qualifier
-Parameter aus. Dieser Befehl teilt den Pfad auf und gibt nur den Qualifikatorstring als Ergebnis zurück.

Anzeigen des Namens einer Datei, eines Verzeichnisses oder eines Elements
Denken Sie an einen Pfad als einen Baum. Der Qualifikator ist der Baum selbst, Ordner sind die Äste, und am Ende finden Sie das Blatt. Ein Blatt ist ein nicht-nuller Zeichenfolgenwert am Ende des Pfads.
Wenn Sie einen Pfad aufteilen müssen, um das Blatt zu erhalten, führen Sie den Split-Path
-Befehl unten aus und fügen Sie den Parameter -Leaf
hinzu.
Als Ergebnis zeigt das Bild unten, dass der Befehl nur den Dateinamen aus dem angegebenen Pfad zurückgegeben hat.

Trennen des Dateinamens und der Erweiterung (≥PowerShell 6.0)
Hinweis: Dieser Abschnitt gilt für PowerShell 6.0 und höher.
Sie haben also den Pfad geteilt und den Gegenstand zurückgegeben. Und der Gegenstand ist in diesem Fall ein Dateiname (TestFile_11.txt), der aus zwei Teilen besteht – der Basis und der Erweiterung. Die PowerShell Split-Path
cmdlet ermöglicht es Ihnen, das Blatt weiter in diese beiden Teile mit dem -LeafBase
und -Extension
Parameter zu teilen.
Um die Basis und die Erweiterung eines Dateinamens zu erhalten, führen Sie die folgenden Befehle aus.
Wenn der Pfad keine Erweiterung hat, gibt der
Extension
Parameter eine leere Zeichenkette zurück.

Trennen des Dateinamens und der Erweiterung (≤ Windows PowerShell 5.1)
Leider sind die -LeafBase
und -Extension
Parameter in Windows PowerShell 5.1 und niedrigeren Versionen nicht verfügbar. Keine Sorge, mit etwas PowerShell Magie können Sie die Ausgabe dieser Parameter sogar replizieren, wenn Sie nur Windows PowerShell 5.1 haben.
Aber anstelle der Split-Path
cmdlet, verwenden Sie das nächstbeste – die Kombination der split()
Methode und des -replace
Operators.
A PowerShell string object, such as the path, contains a split()
method. This method allows you to split a string into multiple elements based on a delimiter character that you provide. And in the case of paths, the delimiter is the (\\
) back-slash character.
Andererseits ermöglicht Ihnen der -replace
-Operator, Zeichenfolgen mithilfe von regulären Ausdrücken (RegEx) zu ersetzen.
Um die Ergebnisse des Parameters -LeafBase
nachzuahmen, führen Sie den folgenden Befehl in PowerShell aus.
Als Ergebnis zeigt der Screenshot unten, dass der Befehl nur den Basisnamen der Datei zurückgegeben hat.

Um nur die Dateierweiterung zu erhalten, führen Sie den folgenden Befehl in PowerShell aus.
Das Ergebnis unten zeigt, dass der Befehl nur die Dateierweiterung zurückgegeben hat – txt
.

Feststellen, ob der Pfad absolut ist
Als Systemadministrator stoßen Sie auf zwei Arten von Pfaden—absolut und relativ. Aber was ist der Unterschied? Ein absoluter Pfad beginnt mit einem Qualifikator, wie C:\demo oder HKCU:\Software. Im Gegensatz dazu hat ein relativer Pfad keinen Qualifikator, wie .\demo oder \folder1\folder2.
Das PowerShell Split-Path
Cmdlet kann Ihnen helfen, einen absoluten Pfad mithilfe des Parameters -IsAbsolute
zu identifizieren. Führen Sie die folgenden Befehle aus, um festzustellen, ob der Pfad absolut ist.
Wie Sie unten sehen können, gibt der -isAbsolute
Parameter einen booleschen Wert zurück, um anzuzeigen, ob der Pfad absolut (TRUE
) oder relativ (FALSE
) ist.

Pfade mit Platzhaltern aufteilen und auflösen
Bis jetzt müssen die Pfade, die Sie mit dem Split-Path
Cmdlet aufteilen, nicht existierende Pfade sein. Unabhängig davon, ob ein Pfad existiert oder nicht, teilt Ihnen dieses Cmdlet den Ergebnis mit.
Aber das PowerShell Split-Path
Cmdlet hat einen weiteren Parameter namens -Resolve
. Dieser Parameter ermöglicht es Ihnen, die durch Platzhalter referenzierten Elemente aufzulösen. Wenn Sie diesen Parameter verwenden möchten, müssen der aufzuteilende Pfad und die darin enthaltenen Elemente bereits vorhanden sein.
Zum Beispiel, um die Elemente mit der Dateierweiterung *.txt
zurückzugeben, führen Sie den folgenden Befehl aus. Der -Leaf
Parameter stellt sicher, dass das Cmdlet nur die Elemente und nicht die übergeordneten Container zurückgibt.
Das (
*
) Platzhalterzeichen repräsentiert ein oder mehrere Zeichen zur Übereinstimmung, während (?
) ein Platzhalterzeichen für ein einzelnes Zeichen darstellt.
Das unten stehende Ergebnis listet die Dateien TestFile_11.txt bis TestFile_20.txt auf. Diese Dateien haben alle zur .txt
Dateierweiterung gepasst.

Um eine Übereinstimmung für ein einzelnes Zeichen zu erzielen, ersetzen Sie das Asteriskum (*
) Wildcard durch das (?
) Wildcard, wie im folgenden Befehl.
Die Ausgabe unten zeigt nur die Datei TestFile_20.txt, weil diese Datei die einzige ist, die übereinstimmt.

Wenn der Pfad ein Escape-Zeichen enthält, wie das Grave-Akzent („`), schließen Sie den Pfad in einfache Anführungszeichen ein, um den Pfad aufzulösen. Zum Beispiel spaltet und löst der folgende Befehl einen Pfad mit einem Escape-Zeichen auf.

Als Proof of Concept, wenn Sie diesen Pfad nicht in einfache Anführungszeichen einschließen, gibt der Befehl einen Fehler zurück, dass der Pfad nicht existiert. Der gleiche Fehler tritt auf, wenn Sie stattdessen doppelte Anführungszeichen verwenden.

Fazit
Das PowerShell Split-Path
-Cmdlet ist ein unverzichtbares Werkzeug für Systemadministratoren und Benutzer gleichermaßen. Dieses Tutorial soll Ihnen zeigen, wie das Split-Path
-Cmdlet jeden gegebenen Pfad aufteilen und bestimmte Elemente zurückgeben kann, basierend auf dem verwendeten Parameter.
Haben Sie das Split-Path
-Cmdlet bereits in Ihren Aufgaben verwendet? Falls nicht, hat Sie dieses Tutorial überzeugt, es in Ihren manuellen oder automatisierten Jobs zu verwenden? Oder kennen Sie eine andere Methode, um Pfade besser aufzuteilen als das PowerShell Split-Path
?