Test-Path
Bepaalt of alle elementen van een pad bestaan.
Syntaxis
Test-Path
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-UseTransaction]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-UseTransaction]
[-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
indien aanwezig.
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 de Path
witruimte is, wordt $False
geretourneerd.
Als de Path
een lege tekenreeks is, $null
, matrix van $null
of lege matrix, 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, dat wil zeggen de map C:, de map Documenten en Instellingen en de map DavidC.
Als er iets ontbreekt, retourneert de cmdlet $False
.
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 het pad $False
, maar de syntaxis is juist $True
.
Deze opdrachten maken gebruik van $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 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 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 $False
geretourneerd, 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 bestand 'PowerShell.exe' op de computer nieuwer is dan '13 juli 2009'.
De parameter NewerThan werkt alleen in bestandssysteemstations.
Test-Path $pshome\PowerShell.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 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 witruimte is of een lege tekenreeks is opgegeven voor de parameter -Path
, wordt onwaar geretourneerd.
In het volgende voorbeeld ziet u witruimte en lege tekenreeks.
Test-Path ' '
Test-Path ''
False
Test-Path : Cannot bind argument to parameter 'Path' because it is an empty string.
At line:1 char:11
+ Test-Path ''
+ ~~
+ CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
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 |
Vereist: | False |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | 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.
Type: | String[] |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | 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 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.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | True |
-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.
Type: | String[] |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | True |
-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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | 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 escapetekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens geven PowerShell aan dat er geen tekens als escapereeksen moeten worden geïnterpreteerd.
Type: | String[] |
Aliassen: | PSPath |
Position: | Named |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-NewerThan
Geef een tijd op als een DateTime--object.
Type: | DateTime |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-OlderThan
Geef een tijd op als een DateTime--object.
Type: | DateTime |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | 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 |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | 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 acceptabele 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.
- Enig. Een container of een leaf.
Hiermee wordt aangegeven of het laatste element in het pad van een bepaald type is.
Voorzichtigheid
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.
Type: | TestPathType |
Aliassen: | Type |
Geaccepteerde waarden: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-UseTransaction
Bevat de opdracht in de actieve transactie. Deze parameter is alleen geldig wanneer een transactie wordt uitgevoerd. Zie about_Transactions voor meer informatie
Type: | SwitchParameter |
Aliassen: | usetx |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt een tekenreeks met een pad, maar niet een letterlijk pad, doorsluisen naar deze cmdlet.
Uitvoerwaarden
De cmdlet retourneert een Booleaanse waarde.
Notities
De cmdlets die het Pad zelfstandig naamwoord (de cmdlets Path) 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 waarin u alle of een deel van een padnaam in een bepaalde indeling wilt weergeven. Gebruik ze zoals u zou gebruiken Dirname, Normpath, Realpath, Joinof andere padmanipulors.
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.