Delen via


Test-Path

Bepaalt of alle elementen van een pad bestaan.

Syntaxis

Path (Default) - FileSystem provider

Test-Path
    [-Path] <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]

LiteralPath - FileSystem provider

Test-Path
    -LiteralPath <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]

Path (Default) - All providers

Test-Path
    [-Path] <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [<CommonParameters>]

LiteralPath - All providers

Test-Path
    -LiteralPath <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [<CommonParameters>]

Description

De Test-Path cmdlet bepaalt of alle elementen van het pad bestaan. Het retourneert $true als alle elementen bestaan en $false als er een ontbreekt. Er kan ook worden aangegeven 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, retourneert de cmdlet $false. Als het pad is $null, retourneert de cmdlet een matrix van $null of een lege matrix, dan geeft de cmdlet een niet-terminale foutmelding terug.

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, inclusief de C: map, de Documents and Settings map en de DavidC directory. Als er iets ontbreekt, retourneert de cmdlet $false. Anders retourneert het $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.

Met de eerste opdracht wordt bepaald of alle elementen in het pad bestaan. Met de tweede opdracht wordt bepaald of de syntaxis van het pad juist is. In dit geval is het pad $false, 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_Variablesvoor 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 bestanden in de map Commerciële gebouwen staan, behalve .dwg bestanden.

De opdracht gebruikt de parameter Path om het pad op te geven. Omdat het pad een spatie bevat, wordt het pad tussen aanhalingstekens geplaatst. Het sterretje aan het einde van het pad geeft de inhoud van de Commercial Building-directorie 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 Uitsluiten op om bestanden op te geven die moeten worden weggelaten uit de evaluatie.

Omdat de map alleen .dwg bestanden bevat, wordt het resultaat $false.

Voorbeeld 4: Controleren op een bestand

Test-Path -Path $PROFILE -PathType Leaf
True

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

Voorbeeld 5: Paden controleren in het register

Deze opdrachten gebruiken Test-Path met de PowerShell-registerprovider.

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

Belangrijk

Test-Path werkt niet goed met alle PowerShell-providers. U kunt bijvoorbeeld Test-Path gebruiken om het pad van een registersleutel te testen, maar als u dit gebruikt om het pad van een registervermelding te testen, wordt altijd $falsegeretourneerd, 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 zich in een datumbereik bevindt

Deze opdracht maakt gebruik van de NewerThan en OlderThan dynamische parameters om te bepalen of het pwsh.exe bestand op de computer nieuwer is dan July 13, 2009 en ouder dan vorige week.

De parameters NewerThan en OlderThan werken alleen in bestandssysteemstations.

Get-Command pwsh |
    Select-Object -ExpandProperty Path |
    Test-Path -NewerThan "July 13, 2009" -OlderThan (Get-Date).AddDays(-7)
True

Voorbeeld 7: Een pad testen met null als de waarde

De geretourneerde fout voor null, array van null of lege array is een niet-beëindigende fout. Het kan worden onderdrukt met behulp van -ErrorAction SilentlyContinue. In het volgende voorbeeld ziet u alle gevallen 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 er een witruimtetekenreeks wordt opgegeven voor de parameter Path, wordt $falsegeretourneerd. Dit is een wijziging van Windows PowerShell 5.1. Wanneer er een lege tekenreeks wordt opgegeven, retourneert Test-Path een fout. In het volgende voorbeeld ziet u witruimte en lege tekenreeks.

Test-Path ' '
Test-Path ''
False
False

Voorbeeld 9: Een pad testen dat mogelijk een ongeldige schijf heeft

Wanneer u een pad test dat een schijfstationsspecificatie bevat, zal het testen van de geldigheid van het pad mislukken als het schijfstation niet bestaat. U kunt de naam van de provider toevoegen aan het station om dit probleem te omzeilen.

Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True

Parameters

-Credential

Opmerking

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

Parametereigenschappen

Type:PSCredential
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:True
Waarde van resterende argumenten:False

-Exclude

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

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:True
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Filter

Hiermee specificeert u een filter in de indeling of taal van de provider. De waarde van deze parameter komt in aanmerking voor de parameter Path. 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 PowerShell de objecten te filteren nadat ze zijn opgehaald.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:True
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-Include

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

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:True
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-IsValid

Geeft aan dat deze cmdlet de syntaxis van het pad test, ongeacht of de elementen van het pad bestaan. Deze cmdlet retourneert $true als de padsyntaxis geldig is en $false als deze ongeldig is. Als het pad dat wordt getest een stationsspecificatie bevat, retourneert de cmdlet false wanneer het station niet bestaat. PowerShell retourneert onwaar omdat deze niet weet welke stationsprovider moet worden getest.

Opmerking

Er is een belangrijke wijziging in de Path-API's geïntroduceerd in .NET 2.1. Deze methoden controleren niet meer op ongeldige padtekens. Deze wijziging heeft een regressie veroorzaakt in PowerShell, waarbij de IsValid- geen tests meer uitvoert op ongeldige tekens. De regressie wordt in een toekomstige release opgelost. Zie Belangrijke wijzigingen in .NET Core 2.1voor meer informatie.

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-LiteralPath

Hiermee geeft u een pad op dat moet worden getest. In tegenstelling tot pad, 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 escapereeksen, moet u het pad tussen enkele aanhalingstekens insluiten, zodat ze niet worden geïnterpreteerd.

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:PSPath, LP

Parametersets

LiteralPath
Position:Named
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:True
Waarde van resterende argumenten:False

-NewerThan

Dit is een dynamische parameter die beschikbaar wordt gesteld door de FileSystem provider.

Geef een tijd op als een DateTime--object.

Voordat PowerShell 7.5 uitkwam, negeerde de cmdlet:

  • Deze parameter wanneer u PathType- opgeeft als een andere waarde dan Any.
  • De parameter OlderThan bij gebruik met deze parameter.
  • Deze parameter wanneer Pad verwijst naar een map.

Vanaf PowerShell 7.5 kunt u deze parameter gebruiken met een willekeurige waarde voor de parameter PathType, om een datumbereik te testen met de parameter OlderThan en om de leeftijd van mappen te testen.

Zie about_FileSystem_Providervoor meer informatie.

Parametereigenschappen

Type:

Nullable<T>[[DateTime]]

Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-OlderThan

Dit is een dynamische parameter die beschikbaar wordt gesteld door de FileSystem provider.

Geef een tijd op als een DateTime--object.

Voordat PowerShell 7.5 uitkwam, negeerde de cmdlet:

  • Deze parameter wanneer u PathType- opgeeft als een andere waarde dan Any.
  • Deze parameter wanneer gebruikt met de NewerThan parameter.
  • Deze parameter wanneer Pad verwijst naar een map.

Vanaf PowerShell 7.5 kunt u deze parameter gebruiken met een willekeurige waarde voor de parameter PathType, om een datumbereik te testen met de parameter NewerThan en om de leeftijd van mappen te testen.

Zie about_FileSystem_Providervoor meer informatie.

Parametereigenschappen

Type:

Nullable<T>[[DateTime]]

Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:True
DontShow:False

Parametersets

Path
Position:0
Verplicht:True
Waarde uit pijplijn:True
Waarde uit pijplijn op eigenschapsnaam:True
Waarde van resterende argumenten:False

-PathType

Hiermee wordt het type van het laatste element in het pad aangegeven. Deze cmdlet retourneert $true als het element van het opgegeven type is en $false als dat niet het is. De acceptabele waarden voor deze parameter zijn:

  • Container: een element dat andere elementen bevat, zoals een map of registersleutel.
  • Leaf: een element dat geen andere elementen bevat, zoals een bestand.
  • Any: Een container of een blad.

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

Waarschuwing

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

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

Parametereigenschappen

Type:TestPathType
Default value:None
Geaccepteerde waarden:Any, Container, Leaf
Ondersteunt jokertekens:False
DontShow:False
Aliassen:Typologie

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

CommonParameters

Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.

Invoerwaarden

String

U kunt een tekenreeks die een pad bevat naar deze cmdlet pijpen, maar niet een letterlijk pad.

Uitvoerwaarden

Boolean

De cmdlet retourneert een Booleaanse waarde.

Notities

De cmdlets die het Path-zelfstandig naamwoord (de Path cmdlets) bevatten, werken met paden en geven de namen terug in een beknopt formaat dat door alle PowerShell-providers kan worden geïnterpreteerd. Ze zijn ontworpen voor gebruik in programma's en scripts waarin u alle of een deel van een pad in een bepaalde indeling wilt weergeven. Gebruik ze zoals u Dirname, Normpath, Realpath, Joinof andere padmanipulatoren zou gebruiken.

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