Test-Path
Détermine si tous les éléments d’un chemin existent.
Syntaxe
Test-Path
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-UseTransaction]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-UseTransaction]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<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
le cas échéant.
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 Path
est blanc, $False
est retourné.
Si le Path
est une chaîne vide, $null
, tableau de $null
ou tableau vide, une erreur de non-fin est retournée.
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, c’est-à-dire le répertoire C : , le répertoire Documents et Paramètres et le répertoire DavidC.
En cas d’absence, l’applet de commande retourne $False
.
Sinon, elle retourne $True
.
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 d’accès 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. Étant donné que le chemin inclut un espace, le chemin est placé entre guillemets. L’astérisque à la fin du chemin indique le contenu du répertoire Du 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 qui seront omis à partir 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 $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 « 13 juillet 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
, tableau de null
ou tableau vide est une erreur de non-fin.
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’un espace blanc est ou une chaîne vide fournie pour le paramètre -Path
, elle retourne false.
L’exemple suivant montre l’espace blanc et la chaîne vide.
Test-Path ' '
Test-Path ''
False
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
Paramètres
-Credential
Note
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.
Type: | PSCredential |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | 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 d’accès ou un modèle, tel que « *.txt». Les caractères génériques sont autorisés.
Type: | String[] |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | True |
-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.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | True |
-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 d’accès ou un modèle, tel que « *.txt». Les caractères génériques sont autorisés.
Type: | String[] |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | True |
-IsValid
Indique que cette applet de commande teste la syntaxe du chemin d’accès, que les éléments du chemin d’accès existent.
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.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-LiteralPath
Spécifie un chemin d’accès à tester. Contrairement à Path, la valeur du paramètre LiteralPath est utilisée exactement comme il est typé. Aucun caractère n’est interprété comme des caractères génériques. Si le chemin inclut des caractères d’échappement, placez-le entre guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement.
Type: | String[] |
Alias: | PSPath |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-NewerThan
Spécifiez une heure en tant qu’objet DateTime.
Type: | DateTime |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-OlderThan
Spécifiez une heure en tant qu’objet DateTime.
Type: | DateTime |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | 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.
Type: | String[] |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | True |
-PathType
Spécifie le type de l’élément final dans le chemin d’accès.
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 :
- Conteneur. Élément qui contient d’autres éléments, tels qu’un répertoire ou une clé de Registre.
- Feuille. Élément qui ne contient pas d’autres éléments, tels qu’un fichier.
- Quelconque. Un conteneur ou une feuille.
Indique si l’élément final dans le chemin d’accès est d’un type particulier.
Prudence
Jusqu’à PowerShell version 6.1.2, lorsque les commutateurs
Selon problème #8607, la résolution de ce comportement peut être un changement cassant dans une version ultérieure, où le IsValid et commutateurs PathType appartiennent à des jeux de paramètres distincts, et par conséquent, ne peuvent pas être utilisés ensemble pour éviter cette confusion.
Type: | TestPathType |
Alias: | Type |
Valeurs acceptées: | Any, Container, Leaf |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | 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
Type: | SwitchParameter |
Alias: | usetx |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
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
L’applet de commande retourne une valeur booléenne.
Notes
Les applets de commande qui contiennent le chemin d’accès nom (les applets de commande Path) fonctionnent avec les noms de chemin d’accès et retournent les noms dans un 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 nom de chemin d’accès dans un format particulier. Utilisez-les comme vous l’utiliseriez 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, consultez about_Providers.