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>]
Test-Path
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
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 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, retourneert $false
de cmdlet . Als pad , een matrix van $null
of een lege matrix is$null
, retourneert de cmdlet een niet-afsluitfout.
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 een ontbreekt, retourneert $false
de 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 $false
het 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.
De opdracht geeft de parameter Exclude op om bestanden op te geven die moeten worden weggelaten uit de evaluatie.
Omdat de map in dit geval alleen .dwg bestanden bevat, is $false
het 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 $true
de 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 $true
de 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 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 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 , wordt geretourneerd $false
. 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
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 voorvoegsel van het station door de naam van de provider om dit probleem te omzeilen.
Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True
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. Als het pad dat wordt getest een stationsspecificatie bevat, retourneert de cmdlet false wanneer het station niet bestaat. PowerShell retourneert false omdat het niet weet welke stationsprovider moet worden getest.
Notitie
Er is een belangrijke wijziging in de pad-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-controle niet meer wordt getest op ongeldige tekens. De regressie wordt in een toekomstige release aangepakt. Zie Belangrijke wijzigingen in .NET Core 2.1 voor meer informatie.
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 wordt 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
Dit is een dynamische parameter die beschikbaar is gesteld door de bestandssysteemprovider .
Geef een tijd op als datum /tijd-object .
Vóór PowerShell 7.5 negeert de cmdlet het volgende:
- Deze parameter wanneer u PathType opgeeft als een andere waarde dan
Any
. - De parameter OlderThan bij gebruik met deze parameter.
- Deze parameter wanneer Pad naar een map verwijst.
Vanaf PowerShell 7.5 kunt u deze parameter gebruiken met elke 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_Provider voor meer informatie.
Type: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OlderThan
Dit is een dynamische parameter die beschikbaar is gesteld door de bestandssysteemprovider .
Geef een tijd op als een Datum/tijd-object .
Vóór PowerShell 7.5 negeert de cmdlet het volgende:
- Deze parameter wanneer u PathType opgeeft als een andere waarde dan
Any
. - Deze parameter wordt gebruikt met de parameter NewerThan .
- Deze parameter wanneer Pad naar een map verwijst.
Vanaf PowerShell 7.5 kunt u deze parameter gebruiken met elke 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_Provider voor meer informatie.
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 te testen. 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 het dat niet is. De aanvaardbare 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 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 deel uitmaken van afzonderlijke parametersets 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
U kunt een tekenreeks die een pad bevat, maar geen letterlijk pad, doorsnijden naar deze cmdlet.
Uitvoerwaarden
De cmdlet retourneert een Booleaanse waarde.
Notities
De cmdlets met het zelfstandig naamwoord Pad (de pad-cmdlets ) werken met 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 waarbij u een pad 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.