Test-Path
Určuje, zda existují všechny prvky cesty.
Syntaxe
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
Rutina Test-Path
určuje, jestli existují všechny prvky 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 Path
prázdné znaky, vrátí se $False
.
Pokud je Path
prázdný řetězec, $null
, pole $null
nebo prázdné pole, vrátí se neukončující chyba.
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ě, tj. adresář C: adresář, adresář Dokumenty a Nastavení a adresář DavidC.
Pokud nějaké chybí, rutina 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. Vzhledem k tomu, že cesta obsahuje mezeru, je cesta 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 k určení souborů, které budou z vyhodnocení vynechány.
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 cesta registru Microsoft.PowerShell klíč registru je v 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 "PowerShell.exe" soubor v počítači je novější než "13. července 2009".
Parametr NewerThan funguje pouze na jednotkách systému souborů.
Test-Path $pshome\PowerShell.exe -NewerThan "July 13, 2009"
True
Příklad 7: Testování cesty s hodnotou null
Chyba vrácená pro null
, pole null
nebo prázdné pole je neukončující chyba.
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 prázdný nebo prázdný řetězec zadaný pro parametr -Path
, vrátí hodnotu false.
Následující příklad ukazuje prázdné znaky a prázdný řetězec.
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
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.
Typ: | PSCredential |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Exclude
Určuje položky, které tato rutina vynechá. Hodnota tohoto parametru kvalifikuje parametr Path. Zadejte prvek cesty nebo vzor, například "*.txt". Jsou povoleny zástupné znaky.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-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 při načítání objektů místo toho, aby objekty po načtení vyfiltroval PowerShell.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-Include
Určuje cesty, které tato rutina testuje. Hodnota tohoto parametru kvalifikuje parametr Path. Zadejte prvek cesty nebo vzor, například "*.txt". Jsou povoleny zástupné znaky.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-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 není.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-LiteralPath
Určuje cestu, která se má testovat. Na rozdíl od Pathse hodnota parametru LiteralPath používá přesně tak, jak je zadán. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence.
Typ: | String[] |
Aliasy: | PSPath |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-NewerThan
Zadejte čas jako objekt DateTime.
Typ: | DateTime |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-OlderThan
Zadejte čas jako objekt DateTime.
Typ: | DateTime |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Path
Určuje cestu, která se má testovat. Jsou povoleny zástupné znaky. Pokud cesta obsahuje mezery, uzavřete ji do uvozovek.
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-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:
- Kontejner. Prvek, který obsahuje další prvky, například adresář nebo klíč registru.
- List. Prvek, který neobsahuje jiné prvky, například soubor.
- Jakýkoliv. Buď kontejner, nebo list.
Určuje, zda poslední prvek v cestě je určitého typu.
Opatrnost
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ém č. 8607, oprava tohoto chování může být zásadní změnou v budoucí verzi, kde IsValid a PathType přepínače patří do samostatných sad parametrů, a proto se nelze použít společně.
Typ: | TestPathType |
Aliasy: | Type |
Přípustné hodnoty: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-UseTransaction
Zahrnuje příkaz v aktivní transakci. Tento parametr je platný pouze v případě, že probíhá transakce. Další informace najdete v tématu about_Transactions
Typ: | SwitchParameter |
Aliasy: | usetx |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Řetězec, který obsahuje cestu, ale ne literálovou cestu, můžete do této rutiny převést.
Výstupy
Rutina vrátí logickou hodnotu.
Poznámky
Rutiny, které obsahují Cestu podstatné jméno (rutiny Cesta), pracují s názvy cest a vracejí názvy ve stručné podobě, které můžou interpretovat všichni poskytovatelé PowerShellu. Jsou určené pro použití v programech a skriptech, ve kterých chcete zobrazit název cesty v určitém formátu nebo jeho část. 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.
Pokud chcete zobrazit seznam poskytovatelů dostupných v relaci, zadejte Get-PSProvider
.
Další informace naleznete v tématu about_Providers.