Test-Path
Détermine si tous les éléments d’un chemin existent.
Syntaxe
Path (Default) - FileSystem provider
Test-Path
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[-UseTransaction]
[-OlderThan <datetime>]
[-NewerThan <datetime>]
[<CommonParameters>]
LiteralPath - FileSystem provider
Test-Path
-LiteralPath <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[-UseTransaction]
[-OlderThan <datetime>]
[-NewerThan <datetime>]
[<CommonParameters>]
Path (Default) - All providers
Test-Path
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[-UseTransaction]
[<CommonParameters>]
LiteralPath - All providers
Test-Path
-LiteralPath <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[-UseTransaction]
[<CommonParameters>]
Description
L’applet de commande Test-Path détermine si tous les éléments du chemin d’accès existent. Elle retourne $true si tous les éléments existent et $false si certains sont manquants. Il peut également indiquer si la syntaxe du chemin d’accès est valide et si le chemin mène à un conteneur ou à un terminal ou un élément feuille. Si le chemin d’accès est un espace blanc ou une chaîne vide, l’applet de commande retourne $false. Si le chemin d'accès est $null, un tableau de $null ou un tableau vide, la cmdlet renvoie une erreur non terminale
Exemples
Exemple 1 : Tester un chemin d’accès
Test-Path -Path "C:\Documents and Settings\DavidC"
True
Cette commande vérifie si tous les éléments du chemin d’accès existent, y compris le répertoire C:, le répertoire Documents and Settings et le répertoire DavidC. S'il en manque, la cmdlet renvoie $false Sinon, $trueest retourné.
Exemple 2 : Tester le chemin d’accès d’un profil
Test-Path -Path $PROFILE
False
Test-Path -Path $PROFILE -IsValid
True
Ces commandes testent le chemin d’accès du profil PowerShell.
La première commande détermine si tous les éléments du chemin d’accès existent. La deuxième commande détermine si la syntaxe du chemin d’accès est correcte. Dans ce cas, le chemin est $false, mais la syntaxe est correcte $true. Ces commandes utilisent $PROFILE, la variable automatique qui pointe vers l’emplacement du profil, même si le profil n’existe pas.
Pour plus d’informations sur les variables automatiques, consultez about_Automatic_Variables.
Exemple 3 : Vérifier s’il existe des fichiers en plus d’un type spécifié
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
Cette commande vérifie s’il existe des fichiers dans le répertoire Bâtiments commerciaux autres que les fichiers .dwg.
La commande utilise le paramètre Path pour spécifier le chemin d’accès. Comme le chemin d'accès comprend un espace, il est placé entre guillemets. L’astérisque à la fin du chemin indique les contenus du répertoire Bâtiment commercial. Avec des chemins longs, tels que celui-ci, tapez les premières lettres du chemin, puis utilisez la touche TAB pour terminer le chemin.
La commande spécifie le paramètre Exclure pour spécifier les fichiers à omettre de l’évaluation.
Dans ce cas, étant donné que le répertoire contient uniquement des fichiers .dwg, le résultat est $false.
Exemple 4 : Rechercher un fichier
Test-Path -Path $PROFILE -PathType Leaf
True
Cette commande vérifie si le chemin d’accès stocké dans la variable $PROFILE conduit à un fichier. Dans ce cas, étant donné que le profil PowerShell est un fichier .ps1, l’applet de commande retourne $true.
Exemple 5 : Vérifier les chemins d’accès dans le Registre
Ces commandes utilisent Test-Path avec le fournisseur de Registre PowerShell.
La première commande teste si le chemin d'accès au Registre de la clé de Registre Microsoft.PowerShell est correct sur le système. Si PowerShell est installé correctement, l’applet de commande retourne $true.
Important
Test-Path ne fonctionne pas correctement avec tous les fournisseurs PowerShell. Par exemple, vous pouvez utiliser Test-Path pour tester le chemin d’accès d’une clé de Registre, mais si vous l’utilisez pour tester le chemin d’une entrée de Registre, il retourne toujours $false, même si l’entrée de Registre est présente.
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
True
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy"
False
Exemple 6 : Tester si un fichier est plus récent qu’une date spécifiée
Cette commande utilise le paramètre dynamique NewerThan pour déterminer si le fichier powershell.exe sur l’ordinateur est plus récent que July 13, 2009.
Le paramètre NewerThan fonctionne uniquement dans les lecteurs du système de fichiers.
Test-Path $PSHOME\powershell.exe -NewerThan "July 13, 2009"
True
Exemple 7 : Tester un chemin d’accès avec null comme valeur
L'erreur retournée pour null, un tableau contenant null ou un tableau vide est une erreur non terminante. Il peut être supprimé à l’aide de -ErrorAction SilentlyContinue. L’exemple suivant montre tous les cas qui retournent l’erreur NullPathNotPermitted.
Test-Path $null
Test-Path $null, $null
Test-Path @()
Test-Path : Cannot bind argument to parameter 'Path' because it is null.
At line:1 char:11
+ Test-Path $null
+ ~~~~~
+ CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
Exemple 8 : Tester un chemin avec un espace blanc comme valeur
Lorsqu’une chaîne d’espace blanc est fournie pour le paramètre Path, elle retourne $true. Lorsqu’une chaîne vide est fournie, Test-Path retourne une erreur. L’exemple suivant montre un espace blanc et une chaîne vide.
Test-Path ' '
Test-Path ''
True
Test-Path : Cannot bind argument to parameter 'Path' because it is an empty string.
At line:1 char:11
+ Test-Path ''
+ ~~
+ CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
Exemple 9 : Testez un chemin d'accès susceptible d'avoir un lecteur non valide
Lorsque vous testez un chemin qui inclut une spécification de lecteur, le test de la validité du chemin échoue si le lecteur n’existe pas. Vous pouvez préfixer le lecteur avec le nom du fournisseur pour contourner ce problème.
Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True
Paramètres
-Credential
Remarque
Ce paramètre n’est pas pris en charge par les fournisseurs installés avec PowerShell. Pour emprunter l’identité d’un autre utilisateur ou élever vos informations d’identification lors de l’exécution de cette applet de commande, utilisez Invoke-Command.
Propriétés du paramètre
| Type: | PSCredential |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-Exclude
Spécifie les éléments omis par cette applet de commande. La valeur de ce paramètre qualifie le paramètre Path. Entrez un élément de chemin ou un modèle, tel que *.txt. Les caractères génériques sont autorisés.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | True |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Filter
Spécifie un filtre dans le format ou la langue du fournisseur. La valeur de ce paramètre qualifie le paramètre Path. La syntaxe du filtre, y compris l’utilisation de caractères génériques, dépend du fournisseur. Les filtres sont plus efficaces que d’autres paramètres, car le fournisseur les applique lorsqu’il récupère les objets au lieu d’avoir PowerShell filtrer les objets après leur récupération.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | True |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Include
Spécifie les chemins d’accès que cette applet de commande teste. La valeur de ce paramètre qualifie le paramètre Path. Entrez un élément de chemin ou un modèle, tel que *.txt. Les caractères génériques sont autorisés.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | True |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-IsValid
Indique que cette cmdlet teste la syntaxe du chemin d'accès, que les éléments du chemin existent ou non. Cette applet de commande retourne $true si la syntaxe du chemin d’accès est valide et $false si ce n’est pas le cas. Si le chemin d’accès testé inclut une spécification de lecteur, l’applet de commande retourne false lorsque le lecteur n’existe pas. PowerShell renvoie false car il ne sait pas quel fournisseur de lecteur tester.
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-LiteralPath
Spécifie un chemin d’accès à tester. Contrairement à Path, la valeur du paramètre LiteralPath est utilisée exactement tel qu'elle est saisie. Aucun caractère n'est interprété en tant que caractère générique. Si le chemin inclut des caractères qui peuvent être interprétés par PowerShell comme séquences d’échappement, vous devez placer le chemin dans un guillemet unique afin qu’ils ne soient pas interprétés.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | PSPath |
Jeux de paramètres
LiteralPath
| Position: | Named |
| Obligatoire: | True |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-NewerThan
Il s’agit d’un paramètre dynamique mis à disposition par le fournisseur FileSystem.
Spécifiez une heure en tant qu’objet DateTime.
Avant PowerShell 7.5, l’applet de commande ignore :
- Ce paramètre lorsque vous spécifiez PathType comme valeur autre que
Any. - Le paramètre OlderThan lorsqu'il est utilisé avec ce paramètre.
- Ce paramètre lorsque Path pointe vers un répertoire.
À compter de PowerShell 7.5, vous pouvez utiliser ce paramètre avec n’importe quelle valeur pour le paramètre PathType, pour tester une plage de dates avec le paramètre OlderThan et tester l’âge des répertoires.
Pour plus d’informations, consultez about_FileSystem_Provider.
Propriétés du paramètre
| Type: | |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-OlderThan
Il s’agit d’un paramètre dynamique mis à disposition par le fournisseur FileSystem.
Spécifiez une heure en tant qu’objet DateTime.
Avant PowerShell 7.5, l’applet de commande ignore :
- Ce paramètre lorsque vous spécifiez PathType comme valeur autre que
Any. - Ce paramètre est utilisé avec le paramètre NewerThan.
- Ce paramètre lorsque Path pointe vers un répertoire.
À compter de PowerShell 7.5, vous pouvez utiliser ce paramètre avec n’importe quelle valeur pour le paramètre PathType, pour tester une plage de dates avec le paramètre NewerThan et tester l’âge des répertoires.
Pour plus d’informations, consultez about_FileSystem_Provider.
Propriétés du paramètre
| Type: | |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-Path
Spécifie un chemin d’accès à tester. Les caractères génériques sont autorisés. Si le chemin inclut des espaces, placez-le entre guillemets.
Propriétés du paramètre
| Type: | String[] |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | True |
| DontShow: | False |
Jeux de paramètres
Path
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | True |
| Valeur des arguments restants: | False |
-PathType
Spécifie le type de l'élément final du chemin. Cette applet de commande retourne $true si l’élément est du type spécifié et $false si ce n’est pas le cas. Les valeurs acceptables pour ce paramètre sont les suivantes :
-
Container: élément qui contient d’autres éléments, tels qu’un répertoire ou une clé de Registre. -
Leaf: élément qui ne contient pas d’autres éléments, tels qu’un fichier. -
Any: un conteneur ou une feuille.
Indique si l’élément final dans le chemin d’accès est d’un type particulier.
Avertissement
Jusqu’à PowerShell version 6.1.2, lorsque les commutateurs IsValid et PathType sont spécifiés ensemble, l’applet de commande Test-Path ignore le commutateur PathType et valide uniquement le chemin syntactique sans valider le type de chemin d’accès.
Selon le problème #8607 dans, corriger ce comportement pourrait entraîner un changement majeur dans une version future, où les interrupteurs IsValid et PathType appartiendraient à des ensembles de paramètres distincts et, par conséquent, ne pourraient pas être utilisés ensemble, évitant ainsi cette confusion.
Propriétés du paramètre
| Type: | TestPathType |
| Valeur par défaut: | None |
| Valeurs acceptées: | Any, Container, Leaf |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | Catégorie |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
-UseTransaction
Inclut la commande dans la transaction active. Ce paramètre est valide uniquement lorsqu’une transaction est en cours. Pour plus d’informations, consultez about_Transactions
Propriétés du paramètre
| Type: | SwitchParameter |
| Valeur par défaut: | False |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
| Alias: | usetx |
Jeux de paramètres
(All)
| Position: | Named |
| Obligatoire: | False |
| Valeur du pipeline: | False |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
Entrées
String
Vous pouvez diriger une chaîne qui contient un chemin d’accès, mais pas un chemin littéral, vers cette applet de commande.
Sorties
Boolean
L’applet de commande retourne une valeur booléenne.
Notes
Les applets de commande qui contiennent le nom chemin (les applets de commande chemin) fonctionnent avec le chemin et renvoient les noms en format concis que tous les fournisseurs PowerShell peuvent interpréter. Ils sont conçus pour être utilisés dans les programmes et les scripts dans lesquels vous souhaitez afficher tout ou partie d’un chemin d’accès dans un format particulier. Utilisez-les comme vous les utiliseriez avec Dirname, Normpath, Realpath, Joinou d’autres manipulateurs de chemin d’accès.
Le Test-Path est conçu pour fonctionner avec les données exposées par n’importe quel fournisseur. Pour répertorier les fournisseurs disponibles dans votre session, tapez Get-PSProvider. Pour plus d’informations, voir about_Providers.