Share via


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>]

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, $False est retourné. Si le chemin d’accès est $null, tableau de $null ou tableau vide, une erreur sans 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 existent, c’est-à-dire 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, $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 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 qui seront omis 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 $Falsetoujours , 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 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’espaces blancs 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

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.

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 au paramètre Path, la valeur du paramètre LiteralPath est utilisée exactement telle qu'elle est tapée. 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

Spécifiez une heure en tant qu’objet DateTime .

Type:Nullable<T>[DateTime]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OlderThan

Spécifiez une heure en tant qu’objet DateTime .

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 :

  • Conteneur. élément qui contient d'autres éléments (répertoire ou clé de Registre, par exemple).
  • Feuille. élément qui ne contient pas d'autres éléments (fichier, par exemple).
  • Tout. conteneur ou nœud terminal.

Indique si le dernier élément figurant dans le chemin d’accès est d’un type particulier.

Attention

Jusqu’à la version 6.1.2 de PowerShell, 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.

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 jeux de paramètres distincts, et ne peuvent donc pas être utilisés ensemble pour éviter 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

String

Vous pouvez diriger une chaîne qui contient un chemin, 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 Path (les applets de commande Path ) fonctionnent avec des noms de chemin et retournent les noms dans un format concis que tous les fournisseurs PowerShell peuvent interpréter. Elles sont conçues pour être utilisées dans des programmes et des scripts dans lesquels vous voulez afficher l’intégralité ou une partie d’un nom de chemin d’accès 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.