Dela via


Test-Path

Avgör om alla element i en sökväg finns.

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

Cmdleten Test-Path avgör om alla element i sökvägen finns. Den returnerar $True om alla element finns och $False om några saknas. Den kan också se om sökvägssyntaxen är giltig och om sökvägen leder till en container eller ett terminal- eller lövelement. Om sökvägen är ett tomt utrymme eller en tom sträng returneras den $False . Om sökvägen är $null, matrisen för $null eller den tomma matrisen returneras ett icke-avslutande fel.

Exempel

Exempel 1: Testa en sökväg

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

True

Det här kommandot kontrollerar om alla element i sökvägen finns, d.v.s. C: katalogen, Documents and Settings katalogen och DavidC katalogen. Om några saknas returnerar $Falsecmdleten . Annars returneras $True.

Exempel 2: Testa sökvägen för en profil

Test-Path -Path $profile

False

Test-Path -Path $profile -IsValid

True

Dessa kommandon testar sökvägen till PowerShell-profilen.

Det första kommandot avgör om alla element i sökvägen finns. Det andra kommandot avgör om sökvägens syntax är korrekt. I det här fallet är $Falsesökvägen , men syntaxen är korrekt $True. De här kommandona använder $profile, den automatiska variabeln som pekar på profilens plats, även om profilen inte finns.

Mer information om automatiska variabler finns i about_Automatic_Variables.

Exempel 3: Kontrollera om det finns några filer utöver en angiven typ

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

False

Det här kommandot kontrollerar om det finns några filer i katalogen Kommersiella byggnader förutom .dwg filer.

Kommandot använder parametern Path för att ange sökvägen. Eftersom sökvägen innehåller ett blanksteg omges sökvägen av citattecken. Asterisken i slutet av sökvägen anger innehållet i katalogen Commercial Building. Med långa sökvägar, till exempel den här, skriver du de första bokstäverna i sökvägen och använder sedan TABB-tangenten för att slutföra sökvägen.

Kommandot anger parametern Exkludera för att ange filer som ska utelämnas från utvärderingen.

I det här fallet, eftersom katalogen endast innehåller .dwg filer, blir $Falseresultatet .

Exempel 4: Sök efter en fil

Test-Path -Path $profile -PathType leaf

True

Det här kommandot kontrollerar om sökvägen som lagras i variabeln $profile leder till en fil. I det här fallet, eftersom PowerShell-profilen är en .ps1 fil, returnerar $Truecmdleten .

Exempel 5: Kontrollera sökvägar i registret

Dessa kommandon används Test-Path med PowerShell-registerprovidern.

Det första kommandot testar om registersökvägen för Microsoft.PowerShell-registernyckeln är korrekt i systemet. Om PowerShell är korrekt installerat returnerar $Truecmdleten .

Viktigt

Test-Path fungerar inte korrekt med alla PowerShell-providrar. Du kan till exempel använda Test-Path för att testa sökvägen till en registernyckel, men om du använder den för att testa sökvägen för en registerpost returneras $Falsealltid , även om registerposten finns.

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

Exempel 6: Testa om en fil är nyare än ett angivet datum

Det här kommandot använder den dynamiska parametern NewerThan för att avgöra om filen "PowerShell.exe" på datorn är nyare än "13 juli 2009".

Parametern NewerThan fungerar bara på filsystemenheter.

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

True

Exempel 7: Testa en sökväg med null som värde

Felet som returneras för null, matrisen med null eller den tomma matrisen är ett icke-avslutande fel. Det kan utelämnas med hjälp -ErrorAction SilentlyContinueav . I följande exempel visas alla fall som returnerar NullPathNotPermitted felet.

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

Exempel 8: Testa en sökväg med blanksteg som värde

När en blankstegssträng anges för parametern Path returneras False. Det här är en ändring från Windows PowerShell 5.1. När en tom sträng anges Test-Path returneras ett fel. I följande exempel visas tomt utrymme och en tom sträng.

Test-Path ' '
Test-Path ''

False
False

Parametrar

-Credential

Anteckning

Den här parametern stöds inte av några providers som är installerade med PowerShell. Om du vill personifiera en annan användare eller höja dina autentiseringsuppgifter när du kör den här cmdleten använder du Invoke-Command.

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

-Exclude

Anger objekt som denna cmdlet utelämnar. Värdet för den här parametern kvalificerar parametern Path . Ange ett sökvägselement eller mönster, till exempel "*.txt". Jokertecken tillåts.

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

-Filter

Anger ett filter i providerns format eller språk. Värdet för den här parametern kvalificerar parametern Path . Syntaxen för filtret, inklusive användningen av jokertecken, beror på providern. Filter är mer effektiva än andra parametrar, eftersom providern tillämpar dem när den hämtar objekten i stället för att Låta PowerShell filtrera objekten efter att de har hämtats.

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

-Include

Anger sökvägar som denna cmdlet testar. Värdet för den här parametern kvalificerar parametern Path . Ange ett sökvägselement eller mönster, till exempel "*.txt". Jokertecken tillåts.

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

-IsValid

Anger att denna cmdlet testar sökvägens syntax, oavsett om elementen i sökvägen finns eller inte. Denna cmdlet returnerar $True om sökvägssyntaxen är giltig och $False om den inte är det.

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

-LiteralPath

Anger en sökväg som ska testas. Till skillnad från Path används värdet för parametern LiteralPath exakt som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller tecken som kan tolkas av PowerShell som escape-sekvenser måste du omge sökvägen i ett enkelt citattecken så att de inte tolkas.

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

-NewerThan

Ange en tid som ett DateTime-objekt .

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

-OlderThan

Ange en tid som ett DateTime-objekt .

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

-Path

Anger en sökväg som ska testas. Jokertecken tillåts. Om sökvägen innehåller blanksteg omger du den inom citattecken.

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

-PathType

Anger typen av det sista elementet i sökvägen. Den här cmdleten returnerar $True om elementet är av den angivna typen och $False om det inte är det. De acceptabla värdena för den här parametern är:

  • Behållare. Ett element som innehåller andra element, till exempel en katalog eller registernyckel.
  • Blad. Ett element som inte innehåller andra element, till exempel en fil.
  • Någon. Antingen en container eller ett löv.

Anger om det sista elementet i sökvägen är av en viss typ.

Varning

Fram till PowerShell version 6.1.2, när växlarna IsValid och PathType anges tillsammans, ignorerar cmdleten Test-PathPathType-växeln och validerar bara den syntaktiska sökvägen utan att verifiera sökvägstypen.

Enligt problem #8607 kan det vara en icke-bakåtkompatibel ändring i en framtida version att åtgärda det här beteendet, där växlarna IsValid och PathType tillhör separata parameteruppsättningar och därför inte kan användas tillsammans för att undvika den här förvirringen.

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

Indata

String

Du kan skicka en sträng som innehåller en sökväg, men inte en literal sökväg, till den här cmdleten.

Utdata

Boolean

Cmdleten returnerar ett booleskt värde.

Kommentarer

De cmdletar som innehåller path-substantivet (cmdletar för sökväg) fungerar med sökvägsnamn och returnerar namnen i ett kortfattat format som alla PowerShell-leverantörer kan tolka. De är utformade för användning i program och skript där du vill visa hela eller delar av ett sökvägsnamn i ett visst format. Använd dem som du skulle använda Dirname, Normpath, Realpath, Join eller andra sökvägsmanipulatörer.

Test-Path är utformad för att fungera med data som exponeras av alla leverantörer. Om du vill visa en lista över de providrar som är tillgängliga i sessionen skriver du Get-PSProvider. Mer information finns i about_Providers.