Test-Path
Détermine si tous les éléments d'un chemin d'accès existent.
Syntax
Test-Path
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
Test-Path
-LiteralPath <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
Description
L’applet Test-Path
de commande détermine si tous les éléments du chemin existent. Elle retourne $true
si tous les éléments existent et $false
s’ils 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 élément terminal ou 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, l’applet de commande retourne une erreur sans fin.
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 existent, y compris le C:
répertoire, le Documents and Settings
répertoire et le DavidC
répertoire. S’il en manque, l’applet de commande retourne $false
. Sinon, $true
est 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 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
, 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 dehors d’un type spécifié
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
Cette commande vérifie s’il existe des fichiers autres que les fichiers .dwg dans le répertoire Des bâtiments commerciaux.
La commande utilise le paramètre Path pour spécifier le chemin d’accès. Étant donné que le chemin d’accès comprend un espace, il est placé entre guillemets. L'astérisque situé à la fin du chemin d'accès indique le contenu du répertoire Commercial Building. Avec des chemins longs, comme 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 Exclude pour spécifier les fichiers à omettre de l’évaluation.
Dans ce cas, étant donné que le répertoire contient uniquement .dwg fichiers, 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 $profile
variable mène à un fichier. Dans ce cas, étant donné que le profil PowerShell est un .ps1
fichier, l’applet de commande retourne $true
.
Exemple 5 : Vérifier les chemins dans le Registre
Ces commandes s’utilisent Test-Path
avec le fournisseur de Registre PowerShell.
La première commande teste si le chemin du 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’accès d’une entrée de Registre, elle retourne $false
toujours , 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 pwsh.exe
fichier sur l’ordinateur est plus récent que July 13, 2009
.
Le paramètre NewerThan fonctionne uniquement dans les lecteurs de système de fichiers.
Test-Path $pshome\pwsh.exe -NewerThan "July 13, 2009"
True
Exemple 7 : Tester un chemin avec null comme valeur
L’erreur retournée pour null
, tableau de null
ou tableau vide est une erreur sans 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’une chaîne d’espace blanc est fournie pour le paramètre Path , elle retourne $false
. Il s’agit d’un changement par Windows PowerShell 5.1. 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 ''
False
False
Exemple 9 : Tester un chemin qui peut 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
Notes
Ce paramètre n’est pris en charge par aucun fournisseur installé 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
Spécifie les éléments que cette applet de commande omet. La valeur de ce paramètre qualifie le paramètre Path. Entrez un élément ou un modèle de chemin d’accès, tel que *.txt
. Les caractères génériques sont autorisés.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 de laisser PowerShell filtrer les objets après leur récupération.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 ou un modèle de chemin d’accès, tel que *.txt
. Les caractères génériques sont autorisés.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-IsValid
Indique que cette applet de commande 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 quand le lecteur n’existe pas. PowerShell retourne false, car il ne sait pas quel fournisseur de lecteurs tester.
Notes
Un changement cassant dans les API Path a été introduit dans .NET 2.1. Ces méthodes ne case activée plus pour les caractères de chemin non valides. Cette modification a provoqué une régression dans PowerShell où l’case activée IsValid ne teste plus les caractères non valides. La régression sera traitée dans une version ultérieure. Pour plus d’informations, consultez Changements cassants dans .NET Core 2.1.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Spécifie un chemin d’accès à vérifier. Contrairement à Path, la valeur du paramètre LiteralPath est utilisée exactement comme il est tapé. Aucun caractère n'est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères qui peuvent être interprétés par PowerShell comme des séquences d’échappement, vous devez placer le chemin d’accès entre guillemets simples afin qu’ils ne soient pas interprétés.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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
. - 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 pour tester l’âge des répertoires.
Pour plus d’informations, consultez about_FileSystem_Provider.
Type: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
À partir 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 pour tester l’ancienneté des répertoires.
Pour plus d’informations, consultez about_FileSystem_Provider.
Type: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Spécifie un chemin d’accès à vérifier. Les caractères génériques sont autorisés. Si le chemin d’accès inclut des espaces, mettez-le entre guillemets.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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 valides pour ce paramètre sont :
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, comme un fichier.Any
- Un conteneur ou une feuille.
Indique si le dernier élément figurant dans le chemin d’accès est d’un type particulier.
Attention
Jusqu’à PowerShell version 6.1.2, lorsque les commutateurs IsValid et PathType sont spécifiés ensemble, l’applet Test-Path
de commande ignore le commutateur PathType et valide uniquement le chemin syntaxique sans valider le type de chemin d’accès.
Selon le problème #8607, la correction de ce comportement peut être un changement cassant dans une version ultérieure, où les commutateurs IsValid et PathType appartiennent à des ensembles de paramètres distincts, et ne peuvent donc pas être utilisés ensemble, évitant cette confusion.
Type: | TestPathType |
Aliases: | Type |
Accepted values: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger une chaîne qui contient un chemin, 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 nom Path (applets de commande Path ) fonctionnent avec path 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 où vous souhaitez afficher tout ou partie d’un chemin dans un format particulier. Utilisez-les comme vous utiliseriez Dirname, Normpath, Realpath, Join ou d’autres manipulateurs de chemin.
est Test-Path
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.