Sdílet prostřednictvím


Test-Path

Určuje, zda existují všechny prvky cesty.

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

Cmdlet Test-Path určuje, jestli existují všechny elementy cesty. Vrátí $true, pokud existují všechny prvky a pokud nějaké chybí, $false. Může také zjistit, zda je syntaxe cesty platná a zda cesta vede ke kontejneru, nebo terminálu nebo prvku typu list. Pokud je Cesta mezerou nebo prázdným řetězcem, vrátí příkaz cmdlet $false. Pokud je cesta$null, pole $null nebo prázdné pole, vrátí rutina neukončující chybu.

Příklady

Příklad 1: Testování cesty

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

Tento příkaz zkontroluje, jestli existují všechny prvky v cestě, včetně adresáře C:, adresáře Documents and Settings a adresáře DavidC. Pokud nějaké chybí, příkaz vrátí $false. V opačném případě vrátí $true.

Příklad 2: Otestování cesty k profilu

Test-Path -Path $profile
False
Test-Path -Path $profile -IsValid
True

Tyto příkazy otestují cestu k profilu PowerShellu.

První příkaz určuje, zda existují všechny prvky v cestě. Druhý příkaz určuje, zda je syntaxe cesty správná. V tomto případě je cesta $false, ale syntaxe je správná $true. Tyto příkazy používají $profile, automatickou proměnnou, která odkazuje na umístění profilu, i když profil neexistuje.

Další informace o automatických proměnných najdete v tématu about_Automatic_Variables.

Příklad 3: Zkontrolujte, jestli existují nějaké soubory kromě zadaného typu.

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

Tento příkaz zkontroluje, jestli v adresáři Komerční budovy nejsou jiné soubory než .dwg soubory.

Příkaz k zadání cesty používá parametr Path. Protože cesta obsahuje mezeru, je uzavřena do uvozovek. Hvězdička na konci cesty označuje obsah adresáře Komerční budova. U dlouhých cest, například této cesty, zadejte několik prvních písmen cesty a pak pomocí klávesy TAB cestu dokončete.

Příkaz určuje parametr Exclude, který určuje soubory, které se mají vynechat z vyhodnocení.

V tomto případě, protože adresář obsahuje pouze .dwg soubory, výsledek je $false.

Příklad 4: Kontrola souboru

Test-Path -Path $profile -PathType leaf
True

Tento příkaz zkontroluje, jestli cesta uložená v proměnné $profile vede k souboru. V tomto případě, protože profil PowerShellu je .ps1 soubor, rutina vrátí $true.

Příklad 5: Kontrola cest v registru

Tyto příkazy používají Test-Path s poskytovatelem registru PowerShellu.

První příkaz testuje, zda je cesta k klíči registru Microsoft.PowerShell na systému správná. Pokud je PowerShell správně nainstalovaný, rutina vrátí $true.

Důležité

Test-Path nefunguje správně se všemi poskytovateli PowerShellu. Můžete například použít Test-Path k otestování cesty klíče registru, ale pokud ji použijete k otestování cesty položky registru, vždy vrátí $false, i když je položka registru přítomna.

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

Příklad 6: Test, jestli je soubor novější než zadané datum

Tento příkaz používá NewerThan dynamický parametr k určení, zda pwsh.exe soubor v počítači je novější než July 13, 2009.

Parametr NewerThan funguje pouze na jednotkách systému souborů.

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

Příklad 7: Testování cesty s hodnotou null

Chyba vrácená pro null, pole null nebo pro prázdné pole je chyba, která nezastaví běh programu. Může být potlačen pomocí -ErrorAction SilentlyContinue. Následující příklad ukazuje všechny případy, které vrací chybu 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

Příklad 8: Testování cesty s prázdnými znaky jako hodnotou

Pokud je pro parametr Path zadaný řetězec prázdných znaků, vrátí $false. Jedná se o změnu prostředí Windows PowerShell 5.1. Pokud je zadaný prázdný řetězec, Test-Path vrátí chybu. Následující příklad ukazuje mezery a prázdný řetězec.

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

Příklad 9: Testování cesty, která může mít neplatnou jednotku

Při testování cesty, která obsahuje specifikaci jednotky, testování platnosti cesty selže, pokud jednotka neexistuje. Tento problém můžete obejít tak, že před názvem jednotky uvedete název zprostředkovatele.

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

Parametry

-Credential

Poznámka:

Tento parametr nejsou podporovány žádnými poskytovateli nainstalovanými v PowerShellu. Pokud chcete zosobnit jiného uživatele nebo zvýšit oprávnění při spuštění této rutiny, použijte Invoke-Command.

Vlastnosti parametru

Typ:PSCredential
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-Exclude

Určuje položky, které tento cmdlet opomene. Hodnota tohoto parametru kvalifikuje parametr Path. Zadejte prvek cesty nebo vzor, například *.txt. Jsou povoleny zástupné znaky.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Filter

Určuje filtr ve formátu nebo jazyce poskytovatele. Hodnota tohoto parametru kvalifikuje parametr Path. Syntaxe filtru, včetně použití zástupných znaků, závisí na poskytovateli. Filtry jsou efektivnější než jiné parametry, protože je poskytovatel použije, když načte objekty místo toho, aby objekty po načtení vyfiltroval PowerShell.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Include

Určí cesty, které tento cmdlet testuje. Hodnota tohoto parametru kvalifikuje parametr Path. Zadejte prvek cesty nebo vzor, například *.txt. Jsou povoleny zástupné znaky.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-IsValid

Označuje, že tato rutina testuje syntaxi cesty bez ohledu na to, jestli existují prvky cesty. Tato rutina vrátí $true, pokud je syntaxe cesty platná a $false, pokud ne. Pokud testovaná cesta obsahuje specifikaci jednotky, rutina vrátí hodnotu false, pokud jednotka neexistuje. PowerShell vrátí hodnotu false, protože neví, který z poskytovatelů disků má testovat.

Poznámka:

V rozhraních .NET 2.1 byla zavedena změna způsobující chybu v rozhraních PATH API. Tyto metody už neprovádějí kontrolu neplatných znaků v cestě. Tato změna způsobila regresi v PowerShellu, kde IsValid už neprověřuje neplatné znaky. Regrese bude vyřešena v budoucí verzi. Další informace najdete v tématu Zásadní změny v .NET Core 2.1.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-LiteralPath

Určuje cestu, která se má testovat. Na rozdíl od Pathse hodnota parametru LiteralPath používá přesně tak, jak je zadaný. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje znaky, které by PowerShell mohl interpretovat jako řídicí sekvence, musíte cestu uzavřít do jednoduchých uvozovek, aby se neinterpretovaly.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False
Aliasy:PSPath, PO

Sady parametrů

LiteralPath
Position:Named
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-NewerThan

Toto je dynamický parametr zpřístupněný poskytovatelem FileSystem.

Zadejte čas jako objekt DateTime.

Před PowerShellem 7.5 se cmdlet ignoruje:

  • Tento parametr pokud zadáte PathType na libovolnou hodnotu jinou než Any.
  • Parametr OlderThan při použití s tímto parametrem.
  • Tento parametr při Path odkazuje na adresář.

Počínaje PowerShellem 7.5 můžete použít tento parametr s libovolnou hodnotou parametru PathType a otestovat rozsah dat pomocí parametru OlderThan a otestovat věk adresářů.

Pro více informací se podívejte na about_FileSystem_Provider.

Vlastnosti parametru

Typ:

Nullable<T>[[DateTime]]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-OlderThan

Toto je dynamický parametr zpřístupněný poskytovatelem FileSystem.

Zadejte čas jako objekt DateTime.

Před PowerShellem 7.5 se cmdlet ignoruje:

  • Tento parametr pokud zadáte PathType na libovolnou hodnotu jinou než Any.
  • Tento parametr, když se používá s parametrem NewerThan.
  • Tento parametr při Path odkazuje na adresář.

Počínaje PowerShellem 7.5 můžete použít tento parametr s libovolnou hodnotou parametru PathType a otestovat rozsah dat pomocí parametru NewerThan a otestovat věk adresářů.

Pro více informací se podívejte na about_FileSystem_Provider.

Vlastnosti parametru

Typ:

Nullable<T>[[DateTime]]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Path

Určuje cestu, která se má testovat. Jsou povoleny zástupné znaky. Pokud cesta obsahuje mezery, uzavřete ji do uvozovek.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

Path
Position:0
Povinné:True
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-PathType

Určuje typ konečného prvku v cestě. Tato rutina vrátí $true, pokud je prvek zadaného typu a $false, pokud není. Přijatelné hodnoty pro tento parametr jsou:

  • Container – prvek, který obsahuje další prvky, například adresář nebo klíč registru.
  • Leaf – prvek, který neobsahuje jiné prvky, například soubor.
  • Any – buď kontejner, nebo list.

Určuje, zda poslední prvek v cestě je určitého typu.

Upozornění

Až PowerShell verze 6.1.2, pokud jsou přepínače IsValid a PathType zadány společně, rutina Test-Path ignoruje přepínač PathType a ověří pouze syntaktickou cestu bez ověření typu cesty.

Podle problému č. 8607, oprava tohoto chování může být zásadní změnou v budoucí verzi, kdy IsValid a PathType přepínače patří do samostatných sad parametrů, a proto se nedá použít společně.

Vlastnosti parametru

Typ:TestPathType
Default value:None
Přípustné hodnoty:Any, Container, Leaf
Podporuje zástupné znaky:False
DontShow:False
Aliasy:Typ

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

CommonParameters

Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.

Vstupy

String

Můžete předat řetězec, který obsahuje cestu, ale ne doslovnou cestu, do tohoto příkazu.

Výstupy

Boolean

Cmdlet vrátí logickou hodnotu.

Poznámky

Cmdlety obsahující podstatné jméno Cesta (cmdlety Cesta) pracují s cestami a vracejí názvy ve stručném formátu, který dokáží interpretovat všichni poskytovatelé PowerShellu. Jsou určené pro použití v programech a skriptech, ve kterých chcete zobrazit celou cestu nebo její část v určitém formátu. Použijte je stejně, jako byste použili Dirname, normpath, realpath, Joinnebo jiné manipulátory cest.

Test-Path je navržená tak, aby fungovala s daty vystavenými jakýmkoli poskytovatelem. Chcete-li zobrazit seznam poskytovatelů dostupných ve vaší relaci, napište Get-PSProvider. Pro více informací viz about_Providers.