Test-Path
Bepaalt of alle elementen van een pad bestaan.
Syntax
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. Deze retourneert $true als alle elementen bestaan en $false of er ontbrekende elementen zijn. 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 $falsede cmdlet . Als het pad is $null, een matrix van $null of een lege matrix, retourneert de cmdlet een fout die niet eindigt.
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 map. Als er iets ontbreekt, retourneert $falsede cmdlet . Anders wordt $true geretourneerd.
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 $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_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 directory Commercial Building 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.
In dit geval is het resultaat $false, omdat de map alleen .dwg bestanden bevat.
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 $truede cmdlet .
Voorbeeld 5: Paden controleren in het register
Deze opdrachten worden gebruikt Test-Path met de PowerShell-registerprovider.
Met de eerste opdracht wordt getest of het registerpad van de Microsoft. PowerShell registersleutel is juist op het systeem. Als PowerShell correct is geïnstalleerd, wordt de cmdlet geretourneerd $true.
Important
Test-Path werkt niet goed met alle PowerShell-providers. U kunt bijvoorbeeld het Test-Path pad van een registersleutel testen, maar als u dit gebruikt om het pad van een registervermelding te testen, wordt het 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
Met deze opdracht wordt de dynamische parameter NewerThan gebruikt om te bepalen of het pwsh.exe bestand op de computer nieuwer is dan July 13, 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 geretourneerde fout 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 gevallen waarin de NullPathNotPermitted fout wordt geretourneerd.
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 path-parameter , wordt deze geretourneerd $false. Dit is een wijziging van Windows PowerShell 5.1. Wanneer er 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
Voorbeeld 9: Een pad testen dat mogelijk een ongeldig station heeft
Wanneer u een pad test dat een stationsspecificatie bevat, mislukt het testen van de geldigheid van het pad als het station niet bestaat. U kunt het station vooraf laten gaan door de providernaam 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 geeft 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 syntaxis van het pad geldig is en $false als dit niet het juiste is. Als het pad dat wordt getest een stationsspecificatie bevat, retourneert de cmdlet onwaar 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 langer op ongeldige padtekens. Deze wijziging heeft een regressie veroorzaakt in PowerShell, waarbij de IsValid-controle niet langer test op ongeldige tekens. De regressie wordt in een toekomstige release opgelost. Zie Breaking changes in .NET Core 2.1 voor 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 wordt genegeerd, negeert 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 Path naar een map verwijst.
Vanaf PowerShell 7.5 kunt u deze parameter gebruiken met elke waarde voor de parameter PathType , een datumbereik testen met de parameter OlderThan en de leeftijd van mappen testen.
Zie about_FileSystem_Providervoor meer informatie.
Parametereigenschappen
| Type: | |
| 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 wordt genegeerd, negeert de cmdlet:
- Deze parameter wanneer u PathType opgeeft als een andere waarde dan
Any. - Deze parameter bij gebruik met de parameter NewerThan .
- Deze parameter wanneer Path naar een map verwijst.
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: | |
| 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 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 of dit 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 leaf.
Hiermee wordt aangegeven of het laatste element in het pad van een bepaald type is.
Caution
Tot PowerShell versie 6.1.2, wanneer de Switches IsValid en PathType samen worden opgegeven, negeert de Test-Path cmdlet de PathType-switch en valideert alleen het syntactische pad 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 deel uitmaken van 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: | Typ |
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 naamwoord Path (de Path-cmdlets ) bevatten, werken met het pad en retourneren de namen in een beknopte indeling die alle PowerShell-providers kunnen interpreteren. 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, Join of andere pad manipulators zou gebruiken.
Het 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.