Avez-vous besoin de diviser les chemins pour obtenir des parties spécifiques ? Si c’est le cas, alors PowerShell Split-Path
est l’ami sur lequel vous pouvez compter. Lorsque vous travaillez avec des fichiers, des certificats et le registre, vous remarquerez que les chemins représentent leurs emplacements.
Et à un moment donné, vous devrez peut-être filtrer quelle partie d’un chemin retourner, peut-être lors de l’automatisation. Heureusement pour vous, ce tutoriel vous apprendra des façons d’utiliser la cmdlet PowerShell Split-Path
pour le faire.
Allez ! Continuez à lire, et permettez-moi de vous procurer une nouvelle arme pour votre arsenal PowerShell !
Prérequis
Si vous prévoyez de suivre les exemples de ce tutoriel pratique, vous aurez besoin d’un ordinateur exécutant n’importe quelle version moderne de Windows avec PowerShell 5.1 ou version ultérieure. Ce tutoriel utilisera Windows 10 20H2 avec PowerShell 7.1.1.
Qu’y a-t-il dans un chemin ?
Avant de plonger profondément avec la cmdlet PowerShell Split-Path
, assurez-vous d’être clair sur ce qu’est un chemin. Un chemin détermine l’emplacement d’un élément qui suit un format spécifique.
Par exemple, le chemin d’un fichier pourrait être C:\demo\subfolder1\TestFile_11.txt. Si vous séparez ce chemin en parties, le chemin inclut ce qui suit :
- 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\ est le dossier et le(s) sous-dossier(s) ou conteneurs.
- TestFile_11.txt est le nom de fichier ou la feuille. La feuille est le dernier élément ou partie d’un chemin.
Remember, cependant, que les chemins ne sont pas exclusifs aux fichiers et dossiers. D’autres chemins valides peuvent inclure :
- Certificat (par exemple, Cert:\CurrentUser\My)
- Registre (par exemple, HKCU:\Software)
- Fonction (par exemple, Function:\New-Guid)
- Variable (par exemple, Variable:\PSEdition)
- Annuaire actif (par exemple, AD:\CN=Utilisateurs,DC=Constoso,DC=com)
Les paramètres de Split-Path dans PowerShell
Comme toute cmdlet, Split-Path
est livré avec un ensemble de paramètres qui manipulent le comportement de la cmdlet et renvoient sa sortie. Et ces paramètres constituent la syntaxe de Split-Path
dans PowerShell.
-Path
– Ce paramètre accepte une ou plusieurs chaînes de chemin que vous souhaitez diviser. Ce paramètre accepte également l’entrée du pipeline. Les jokers dans les chemins sont également acceptables.-LiteralPath
– Comme le paramètre-Path
, le paramètre-LiteralPath
accepte également des chemins à diviser. Mais ce paramètre traitera le chemin tel qu’il est écrit. En d’autres termes, la commande n’interprétera pas les jokers si vous utilisez ce paramètre pour spécifier des chemins.-Resolve
– Ce paramètre indique à la cmdletSplit-Path
de résoudre les fichiers ou éléments référencés par le chemin que vous avez fourni. En raison de sa nature littérale, vous ne pouvez pas utiliser ce paramètre avec le paramètre-LiteralPath
.-IsAbsolute
– Ce paramètre renvoie une valeur booléenne pour déterminer si le chemin spécifié est un chemin absolu ou non.
La cmdlet PowerShell
Split-Path
dispose également d’un paramètre appelé-Credential
, qui accepte apparemment un objet PSCredential. Mais selon Microsoft, ce paramètre n’est pas pris en charge par l’un des fournisseurs PowerShell intégrés et génère une erreur lors de son utilisation.
Les paramètres suivants sont appelés les paramètres de division d’emplacement. Ces paramètres indiquent à la cmdlet PowerShell Split-Path
quel élément ou quelle partie d’un chemin renvoyer. Étant donné que la cmdlet ne peut renvoyer qu’un seul élément d’un chemin, vous ne pouvez utiliser qu’un seul de ces paramètres à la fois.
-Parent
– Renvoie l’emplacement parent (sans l’élément ou le nom de fichier) du chemin spécifié. Ce paramètre est également le paramètre de division d’emplacement par défaut, ce qui signifie que vous pouvez omettre ce paramètre et obtenir quand même l’emplacement parent comme résultat.-Leaf
– Renvoie uniquement le dernier élément du chemin ou la feuille.-LeafBase
– Renvoie uniquement le dernier élément du chemin ou la feuille sans l’extension. Ce paramètre n’est disponible que dans PowerShell 6.0 et ultérieur.- -Extension – Retourne uniquement l’extension de la feuille (du dernier point «
.
» jusqu’au dernier caractère du chemin). Ce paramètre n’est disponible que dans PowerShell 6.0 et supérieur. - -Qualifier – Retourne uniquement le lecteur ou le qualificateur du chemin.
- -NoQualifier – Supprime le lecteur ou le qualificateur du reste du chemin.
Utilisation du cmdlet Split-Path de PowerShell (Exemples)
Le cmdlet Split-Path de PowerShell vous permet de diviser et de disséquer des parties d’un chemin. Ensuite, vous pouvez spécifier quelle partie d’un chemin retourner. Selon vos besoins de sortie, vous pouvez choisir de retourner le qualificateur, le chemin sans qualificateur et le(s) nom(s) de fichier.
Obtenir le dossier parent d’un chemin
Pour retourner le dossier parent du chemin, exécutez le cmdlet PowerShell Split-Path
et ajoutez le paramètre -Parent
.
Le résultat ci-dessous montre que la commande retourne le chemin du dossier parent.

Astuce: Exécuter le cmdlet PowerShell Split-Path sans paramètres retournera le dossier parent par défaut, le même comportement que l’utilisation du paramètre
-Parent
.
Astuce: Le paramètre
-Path
accepte plusieurs chemins, ce qui vous permet de diviser plusieurs valeurs de chaînes de chemin en une seule commande.e.g.,
Split-Path -Path 'c:\folder1','c:\folder2'
Affichage d’un chemin sans le qualificateur
Imaginez que vous créez un script qui duplique une structure d’arborescence de dossiers d’un lecteur à un autre (par exemple, C:\demo\subfolder1 à D:\demo\subfolder1). Vous voudrez peut-être que votre code divise le chemin source et obtienne uniquement la structure de dossiers sans la lettre du lecteur.
Pour obtenir le chemin sans le qualificatif, exécutez la commande PowerShell Split-Path
avec le paramètre -NoQualifier
comme ci-dessous. Cette commande divise le chemin tout en omettant la lettre du lecteur dans le résultat.
Comme vous pouvez le voir dans le résultat ci-dessous, l’utilisation du paramètre noQualifier
renvoie le chemin mais sans la chaîne de qualificatif.

Obtention du lecteur ou du qualificatif d’un chemin
Il peut arriver que vous ayez besoin de renvoyer uniquement le qualificatif ou la lettre du lecteur. Par exemple, lorsque vous voulez que votre script résume les résultats en fonction des lettres de lecteur.
Et pour ce faire, exécutez la commande PowerShell Split-Path
ci-dessous avec le paramètre -Qualifier
. Cette commande divisera le chemin et ne renverra que la chaîne de qualificatif en résultat.

Affichage du nom d’un fichier, d’un répertoire ou d’un élément
Pensez à un chemin comme à un arbre. Le qualificatif est l’arbre lui-même, les dossiers sont les branches et à la fin, vous trouverez la feuille. Une feuille est une chaîne de longueur non nulle à la fin du chemin.
Lorsque vous avez besoin de diviser un chemin pour obtenir la feuille, exécutez la commande Split-Path
ci-dessous et ajoutez le paramètre -Leaf
.
En conséquence, l’image ci-dessous montre que la commande a uniquement renvoyé le nom de fichier du chemin que vous avez spécifié.

Fractionner le nom de fichier et l’extension (≥PowerShell 6.0)
Note : Cette section s’applique à PowerShell 6.0 et versions ultérieures.
Vous avez donc divisé le chemin et récupéré l’élément. Et l’élément, dans ce cas, est un nom de fichier (TestFile_11.txt), qui comprend deux parties – la base et l’extension. La cmdlet PowerShell Split-Path
vous permet de diviser davantage la feuille en ces deux parties avec les paramètres -LeafBase
et -Extension
.
Pour obtenir la base et l’extension d’un nom de fichier, exécutez les commandes ci-dessous.
Si le chemin n’a pas d’extension, le paramètre
Extension
renverra une chaîne vide.

Fractionner le nom de fichier et l’extension (≤ Windows PowerShell 5.1)
Malheureusement, les paramètres -LeafBase
et -Extension
ne sont pas disponibles dans Windows PowerShell 5.1 et les versions inférieures. Ne vous inquiétez pas cependant, avec un peu de magie PowerShell, vous pouvez reproduire la sortie de ces paramètres même si vous n’avez que Windows PowerShell 5.1.
Mais au lieu de la cmdlet Split-Path
, vous utiliserez la prochaine meilleure chose – la combinaison de la méthode split()
et de l’opérateur -replace
.
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.
D’autre part, l’opérateur -replace
vous permet de remplacer des chaînes en utilisant des expressions régulières (RegEx).
Pour imiter les résultats du paramètre -LeafBase
, exécutez la commande ci-dessous dans PowerShell.
En conséquence, la capture d’écran ci-dessous montre que la commande a renvoyé uniquement le nom de base du fichier.

Maintenant, pour obtenir uniquement l’extension de fichier, exécutez la commande ci-dessous dans PowerShell.
Le résultat ci-dessous montre que la commande a renvoyé uniquement l’extension de fichier – txt
.

Détermination si le chemin est absolu
En tant qu’administrateur système, vous rencontrerez deux types de chemins—absolu et relatif. Mais quelle est la différence? Un chemin absolu commence par un qualificateur, tel que C:\demo ou HKCU:\Software. En revanche, un chemin relatif n’a pas de qualificateur, comme .\demo ou \folder1\folder2.
Le cmdlet Split-Path
de PowerShell peut vous aider à identifier un chemin absolu en utilisant le paramètre -IsAbsolute
. Pour ce faire, exécutez les commandes ci-dessous pour déterminer si le chemin est absolu.
Comme vous pouvez le voir ci-dessous, le paramètre -isAbsolute
renvoie une valeur booléenne pour indiquer si le chemin est absolu (TRUE
) ou relatif (FALSE
).

Division et Résolution des chemins avec des Jokers
Jusqu’à présent, les chemins que vous avez divisés avec le cmdlet Split-Path
n’ont pas besoin d’exister. Que le chemin existe ou non, ce cmdlet le divisera et vous donnera le résultat.
Mais le cmdlet Split-Path
de PowerShell a un autre paramètre appelé -Resolve
. Ce paramètre vous permet de résoudre les éléments référencés par des jokers. Et si vous utilisez ce paramètre, le chemin que vous diviserez et les éléments à l’intérieur doivent déjà exister.
Par exemple, pour retourner les éléments correspondant à l’extension de fichier *.txt
, exécutez la commande ci-dessous. Le paramètre -Leaf
garantit que le cmdlet ne renvoie que les éléments et non les conteneurs parents.
Le joker (
*
) représente un ou plusieurs caractères à correspondre, tandis que (?
) représente un joker de caractère unique.
Le résultat ci-dessous répertorie les fichiers TestFile_11.txt à TestFile_20.txt. Ces fichiers correspondent tous à l’extension de nom de fichier .txt
.

Pour résoudre une correspondance de caractère unique, remplacez l’astérisque (*
) par le joker (?
), comme dans la commande ci-dessous.
La sortie ci-dessous montre uniquement le fichier TestFile_20.txt car ce fichier est le seul qui correspondait.

Si le chemin contient un caractère d’échappement, tel que l’accent grave (« `), enfermez le chemin entre guillemets simples pour résoudre le chemin. Par exemple, la commande ci-dessous divise et résout un chemin contenant un caractère d’échappement.

À titre de preuve de concept, si vous n’entourez pas ce chemin de guillemets simples, la commande renverra une erreur indiquant que le chemin n’existe pas. La même erreur se produit également si vous utilisez des guillemets doubles à la place.

Conclusion
La commande PowerShell Split-Path
est un outil indispensable pour les administrateurs système et les utilisateurs. Ce tutoriel visait à vous apprendre comment la commande Split-Path
peut diviser n’importe quel chemin donné et renvoyer des éléments spécifiques en fonction du paramètre que vous utilisez.
Avez-vous déjà utilisé Split-Path
dans vos tâches auparavant ? Sinon, ce tutoriel vous a-t-il convaincu de l’utiliser dans vos travaux manuels ou d’automatisation ? Ou connaissez-vous une autre manière de diviser les chemins mieux que Split-Path
de PowerShell ne le peut ?