Share via


Test-Path

Bepaalt of alle elementen van een pad bestaan.

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

De Test-Path cmdlet bepaalt of alle elementen van het pad bestaan. Het retourneert $True als alle elementen bestaan en $False als deze ontbreken. Het kan ook zien of de padsyntaxis geldig is en of het pad naar een container of een terminal- of leaf-element leidt. Als het pad een witruimte of lege tekenreeks is, $False wordt geretourneerd. Als pad , matrix van $null of lege matrix is$null, wordt een niet-afsluitfout geretourneerd.

Voorbeelden

Voorbeeld 1: Een pad testen

Test-Path -Path "C:\Documents and Settings\DavidC"

True

Met deze opdracht wordt gecontroleerd of alle elementen in het pad bestaan, namelijk de C: map, de Documents and Settings map en de DavidC map. Als er een ontbreekt, retourneert $Falsede cmdlet . Anders wordt geretourneerd $True.

Voorbeeld 2: Het pad van een profiel testen

Test-Path -Path $profile

False

Test-Path -Path $profile -IsValid

True

Met deze opdrachten wordt het pad van het PowerShell-profiel getest.

De eerste opdracht bepaalt of alle elementen in het pad bestaan. De tweede opdracht bepaalt of de syntaxis van het pad juist is. In dit geval is $Falsehet pad , maar de syntaxis is juist $True. Deze opdrachten gebruiken $profile, de automatische variabele die verwijst naar de locatie voor het profiel, zelfs als het profiel niet bestaat.

Zie about_Automatic_Variables voor meer informatie over automatische variabelen.

Voorbeeld 3: Controleren of er bestanden zijn naast een opgegeven type

Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg

False

Met deze opdracht wordt gecontroleerd of er andere bestanden in de map Commerciële gebouwen staan dan .dwg bestanden.

De opdracht gebruikt de parameter Path om het pad op te geven. Omdat het pad een spatie bevat, staat het pad tussen aanhalingstekens. Het sterretje aan het einde van het pad geeft de inhoud van de map Commercieel gebouw aan. Met lange paden, zoals deze, typt u de eerste paar letters van het pad en gebruikt u vervolgens de TAB-toets om het pad te voltooien.

Met de opdracht geeft u de parameter Exclude op om bestanden op te geven die uit de evaluatie worden weggelaten.

Omdat de map in dit geval alleen .dwg bestanden bevat, is $Falsehet resultaat .

Voorbeeld 4: Controleren op een bestand

Test-Path -Path $profile -PathType leaf

True

Met deze opdracht wordt gecontroleerd of het pad dat is opgeslagen in de $profile variabele naar een bestand leidt. In dit geval, omdat het PowerShell-profiel een .ps1 bestand is, retourneert $Truede cmdlet .

Voorbeeld 5: paden in het register controleren

Deze opdrachten worden gebruikt Test-Path met de PowerShell-registerprovider.

Met de eerste opdracht wordt getest of het registerpad van de registersleutel Microsoft.PowerShell juist is op het systeem. Als PowerShell correct is geïnstalleerd, retourneert $Truede cmdlet .

Belangrijk

Test-Path werkt niet correct met alle PowerShell-providers. U kunt bijvoorbeeld gebruiken Test-Path om het pad van een registersleutel te testen, maar als u deze gebruikt om het pad van een registervermelding te testen, wordt altijd geretourneerd $False, zelfs als de registervermelding aanwezig is.

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

Voorbeeld 6: Testen of een bestand nieuwer is dan een opgegeven datum

Deze opdracht gebruikt de dynamische parameter NewerThan om te bepalen of het bestand 'PowerShell.exe' op de computer nieuwer is dan '13 juli 2009'.

De parameter NewerThan werkt alleen in bestandssysteemstations.

Test-Path $pshome\pwsh.exe -NewerThan "July 13, 2009"

True

Voorbeeld 7: Een pad testen met null als de waarde

De fout die wordt geretourneerd voor null, matrix van null of lege matrix is een niet-afsluitfout. Het kan worden onderdrukt met behulp van -ErrorAction SilentlyContinue. In het volgende voorbeeld ziet u alle cases die de NullPathNotPermitted fout retourneren.

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

Voorbeeld 8: Een pad testen met witruimte als de waarde

Wanneer een witruimtetekenreeks wordt opgegeven voor de path-parameter , retourneert deze Onwaar. Dit is een wijziging van Windows PowerShell 5.1. Wanneer een lege tekenreeks wordt opgegeven, Test-Path wordt een fout geretourneerd. In het volgende voorbeeld ziet u witruimte en lege tekenreeks.

Test-Path ' '
Test-Path ''

False
False

Parameters

-Credential

Notitie

Deze parameter wordt niet ondersteund door providers die zijn geïnstalleerd met PowerShell. Als u een andere gebruiker wilt imiteren of uw referenties wilt verhogen bij het uitvoeren van deze cmdlet, gebruikt u Invoke-Command.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Exclude

Hiermee geeft u items op die door deze cmdlet worden weggelaten. De waarde van deze parameter komt in aanmerking voor de path-parameter . Voer een padelement of -patroon in, zoals *.txt. Jokertekens zijn toegestaan.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Hiermee geeft u een filter in de indeling of taal van de provider. De waarde van deze parameter komt in aanmerking voor de path-parameter . De syntaxis van het filter, inclusief het gebruik van jokertekens, is afhankelijk van de provider. Filters zijn efficiënter dan andere parameters, omdat de provider deze toepast wanneer de objecten worden opgehaald in plaats van dat PowerShell de objecten filtert nadat ze zijn opgehaald.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Include

Hiermee geeft u paden op die met deze cmdlet worden getest. De waarde van deze parameter komt in aanmerking voor de path-parameter . Voer een padelement of -patroon in, zoals *.txt. Jokertekens zijn toegestaan.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-IsValid

Geeft aan dat deze cmdlet de syntaxis van het pad test, ongeacht of de elementen van het pad bestaan. Deze cmdlet retourneert als de padsyntaxis $True geldig is en $False als dit niet het juiste is.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

Hiermee geeft u een pad op dat moet worden getest. In tegenstelling tot Path wordt de waarde van de parameter LiteralPath exact gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad tekens bevat die door PowerShell kunnen worden geïnterpreteerd als escape-reeksen, moet u het pad tussen één aanhalingsteken insluiten, zodat ze niet worden geïnterpreteerd.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NewerThan

Geef een tijd op als datum /tijd-object .

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

-OlderThan

Geef een tijd op als datum /tijd-object .

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

-Path

Hiermee geeft u een pad op dat moet worden getest. Jokertekens zijn toegestaan. Als het pad spaties bevat, plaatst u het tussen aanhalingstekens.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-PathType

Hiermee geeft u het type van het laatste element in het pad. Deze cmdlet retourneert $True als het element van het opgegeven type is en $False als dat niet het is. De aanvaardbare waarden voor deze parameter zijn:

  • Container. Een element dat andere elementen bevat, zoals een map of registersleutel.
  • Blad. Een element dat geen andere elementen bevat, zoals een bestand.
  • Alle. Een container of een leaf.

Hiermee wordt aangegeven of het laatste element in het pad van een bepaald type is.

Waarschuwing

Tot PowerShell versie 6.1.2, wanneer de schakelopties IsValid en PathType samen zijn opgegeven, negeert de Test-Path cmdlet de switch PathType en valideert alleen het syntactische pad zonder het padtype te valideren.

Volgens probleem #8607 kan het oplossen van dit gedrag een wijziging zijn die fouten veroorzaakt in een toekomstige versie, waarbij de schakelopties IsValid en PathType tot afzonderlijke parametersets behoren en dus niet samen kunnen worden gebruikt om deze verwarring te voorkomen.

Type:TestPathType
Aliases:Type
Accepted values:Any, Container, Leaf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Invoerwaarden

String

U kunt een tekenreeks die een pad bevat, maar geen letterlijk pad, doorsnijden naar deze cmdlet.

Uitvoerwaarden

Boolean

De cmdlet retourneert een Booleaanse waarde.

Notities

De cmdlets die het pad-zelfstandig naamwoord (de pad-cmdlets ) bevatten, werken met padnamen en retourneren de namen in een beknopte indeling die alle PowerShell-providers kunnen interpreteren. Ze zijn ontworpen voor gebruik in programma's en scripts waarbij u een padnaam geheel of gedeeltelijk in een bepaalde indeling wilt weergeven. Gebruik deze zoals u Dirname, Normpath, Realpath, Join of andere padmanipulors gebruikt.

De Test-Path is ontworpen om te werken met de gegevens die door een provider worden weergegeven. Als u de providers wilt weergeven die beschikbaar zijn in uw sessie, typt u Get-PSProvider. Zie about_Providers voor meer informatie.