Dela via


Test-Path

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

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

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 Path är en blankstegssträng eller en tom sträng returnerar cmdleten $false. Om Path är $null, en matris med $null eller en tom matris returnerar cmdleten 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, inklusive katalogen C:, katalogen Documents and Settings och katalogen DavidC. Om några saknas returnerar cmdleten $false. Annars returneras $true.

Exempel 2: Testa sökvägen till 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 sökvägen $false, men syntaxen är korrekt $true. Dessa kommandon 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 förutom 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 mellanslag, omsluts 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 TAB-nyckeln för att slutföra sökvägen.

Kommandot anger parametern Exclude 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 resultatet $false.

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 cmdleten $true.

Exempel 5: Kontrollera sökvägar i registret

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

Det första kommandot testar om registersökvägen för Microsoft.PowerShell registernyckel är korrekt i systemet. Om PowerShell är korrekt installerat returnerar cmdleten $true.

Viktigt!

Test-Path fungerar inte korrekt med alla PowerShell-leverantörer. 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 alltid $false, ä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 finns i ett datumintervall

Det här kommandot använder dynamiska parametrarna NewerThan och OlderThan för att avgöra om pwsh.exe filen på datorn är nyare än July 13, 2009 och äldre än förra veckan.

Parametrarna NewerThan och OlderThan fungerar bara på filsystemenheter.

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

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

Felet som returnerades för null, matris av null eller tom matris är ett ej avslutande fel. Det kan undertryckas med hjälp av -ErrorAction SilentlyContinue. I följande exempel visas alla fall som returnerar felet NullPathNotPermitted.

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 returnerar Test-Path ett fel. I följande exempel visas blanksteg och tom sträng.

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

Exempel 9: Testa en sökväg som kan ha en ogiltig enhet

När du testar en sökväg som innehåller en enhetsspecifikation misslyckas testningen av sökvägens giltighet om enheten inte finns. Du kan prefixa enheten med providernamnet för att kringgå det här problemet.

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

Parametrar

-Credential

Anmärkning

Den här parametern stöds inte av några leverantörer 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.

Parameteregenskaper

Typ:PSCredential
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument: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.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:True
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-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 effektivare än andra parametrar eftersom providern tillämpar dem när de hämtar objekten i stället för att Låta PowerShell filtrera objekten när de har hämtats.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:True
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Include

Anger sökvägar som den här cmdleten 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.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:True
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-IsValid

Anger att denna cmdlet testar sökvägens syntax, oavsett om elementen i sökvägen finns. Den här cmdleten returnerar $true om sökvägssyntaxen är giltig och $false om den inte är det. Om sökvägen som testas innehåller en enhetsspecifikation returnerar cmdleten false när enheten inte finns. PowerShell returnerar falskt eftersom det inte vet vilken enhetsleverantör som ska testas.

Anmärkning

En ändring som är oförenlig med tidigare versioner i Path-API:erna introducerades i .NET 2.1. Dessa metoder söker inte längre efter ogiltiga sökvägstecken. Den här ändringen orsakade en regression i PowerShell där IsValid kontroll inte längre testar för ogiltiga tecken. Regressionen kommer att åtgärdas i en framtida version. För mer information, se brytförändringar i .NET Core 2.1.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-LiteralPath

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

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:PSPath, SP

Parameteruppsättningar

LiteralPath
Position:Named
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument:False

-NewerThan

Det här är en dynamisk parameter som görs tillgänglig av FileSystem-providern.

Ange en tid som ett DateTime- objekt.

Innan PowerShell 7.5 ignorerar cmdleten:

  • Den här parametern när du anger PathType som något annat värde än Any.
  • Parametern OlderThan när den används med den här parametern.
  • Den här parametern när Path pekar på en katalog.

Från och med PowerShell 7.5 kan du använda den här parametern med valfritt värde för parametern PathType, testa ett datumintervall med parametern OlderThan och testa katalogernas ålder.

Mer information finns i about_FileSystem_Provider.

Parameteregenskaper

Typ:

Nullable<T>[[DateTime]]

Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-OlderThan

Det här är en dynamisk parameter som görs tillgänglig av FileSystem-providern.

Ange en tid som ett DateTime- objekt.

Innan PowerShell 7.5 ignorerar cmdleten:

  • Den här parametern när du anger PathType som något annat värde än Any.
  • Den här parametern används med parametern NewerThan.
  • Den här parametern när Path pekar på en katalog.

Från och med PowerShell 7.5 kan du använda den här parametern med valfritt värde för parametern PathType, testa ett datumintervall med parametern NewerThan och testa katalogernas ålder.

Mer information finns i about_FileSystem_Provider.

Parameteregenskaper

Typ:

Nullable<T>[[DateTime]]

Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Path

Anger en sökväg som ska testas. Jokertecken tillåts. Om sökvägen innehåller blanksteg, omge den med citattecken.

Parameteregenskaper

Typ:

String[]

Standardvärde:None
Stöder jokertecken:True
DontShow:False

Parameteruppsättningar

Path
Position:0
Obligatorisk:True
Värde från pipeline:True
Värde från pipeline efter egenskapsnamn:True
Värde från återstående argument:False

-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 godtagbara värdena för den här parametern är:

  • Container – ett element som innehåller andra element, till exempel en katalog eller registernyckel.
  • Leaf – ett element som inte innehåller andra element, till exempel en fil.
  • Any – antingen en container eller ett löv.

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

Försiktighet

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

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

Parameteregenskaper

Typ:TestPathType
Standardvärde:None
Godkända värden:Any, Container, Leaf
Stöder jokertecken:False
DontShow:False
Alias:Typ

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

CommonParameters

Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.

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

Cmdlets som innehåller substantivet Path (Path cmdlets) används med sökvägar och returnerar sökvägsnamnen 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 en del av en sökväg i ett visst format. Använd dem som du skulle använda Dirname, Normpath, Realpath, Joineller 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 tillgängliga leverantörer i sessionen skriver du Get-PSProvider. Mer information finns i om_Leverantörer.