Test-Path
Meghatározza, hogy az elérési út minden eleme létezik-e.
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
A Test-Path
parancsmag határozza meg, hogy az elérési út minden eleme létezik-e. Visszaadja $true
, ha az összes elem létezik, és ha hiányzik, $false
. Azt is meg tudja állapítani, hogy az elérési út szintaxisa érvényes-e, és hogy az elérési út tárolóhoz, terminálhoz vagy levélelemhez vezet-e. Ha a Elérési út csak szóközöket tartalmaz vagy üres karakterlánc, akkor a parancsmag $false
ad vissza. Ha a Elérési út$null
, $null
vagy üres tömb tömbje, a parancsmag nem végződő hibát ad vissza.
Példák
1. példa: Elérési út tesztelése
Test-Path -Path "C:\Documents and Settings\DavidC"
True
Ez a parancs ellenőrzi, hogy az elérési út összes eleme létezik-e, beleértve a C:
könyvtárat, a Documents and Settings
könyvtárat és a DavidC
könyvtárat. Ha valamelyik hiányzik, a parancsmag $false
ad vissza. Ellenkező esetben az $true
-t adja vissza.
2. példa: Profil elérési útjának tesztelése
Test-Path -Path $PROFILE
False
Test-Path -Path $PROFILE -IsValid
True
Ezek a parancsok tesztelik a PowerShell-profil elérési útját.
Az első parancs határozza meg, hogy az elérési út összes eleme létezik-e. A második parancs határozza meg, hogy az elérési út szintaxisa helyes-e. Ebben az esetben az elérési út $false
, de a szintaxis helyes $true
. Ezek a parancsok $PROFILE
, az automatikus változót használják, amely a profil helyére mutat, még akkor is, ha a profil nem létezik.
Az automatikus változókkal kapcsolatos további információkért lásd: about_Automatic_Variables.
3. példa: Ellenőrizze, hogy vannak-e fájlok a megadott típuson kívül
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
Ez a parancs ellenőrzi, hogy vannak-e olyan fájlok a Kereskedelmi épületek könyvtárban, amelyek nem .dwg fájlok.
A parancs a Path paramétert használja az elérési út megadásához. Mivel az elérési út szóközt tartalmaz, az elérési út idézőjelek közé kerül. Az útvonal végén lévő csillag a Kereskedelmi épület könyvtár tartalmát jelzi. Ha hosszú elérési utakat használ, például ezt, írja be az elérési út első néhány betűét, majd a TAB billentyűvel fejezze be az elérési utat.
A parancs a Kizárás paramétert adja meg a kiértékelésből kihagyandó fájlok megadásához.
Ebben az esetben, mivel a könyvtár csak .dwg fájlokat tartalmaz, az eredmény $false
.
4. példa: Fájl keresése
Test-Path -Path $PROFILE -PathType Leaf
True
Ez a parancs ellenőrzi, hogy a $PROFILE
változóban tárolt elérési út egy fájlhoz vezet-e. Ebben az esetben, mivel a PowerShell-profil egy .ps1
fájl, a parancsmag $true
ad vissza.
5. példa: Elérési utak ellenőrzése a beállításjegyzékben
Ezek a parancsok Test-Path
használnak a PowerShell beállításjegyzék-szolgáltatójával.
Az első parancs ellenőrzi, hogy a Microsoft.PowerShell beállításkulcs beállításjegyzék-elérési útja helyes-e a rendszeren. Ha a PowerShell megfelelően van telepítve, a parancsmag $true
ad vissza.
Fontos
Test-Path
nem működik megfelelően az összes PowerShell-szolgáltatóval. Például használhatja a Test-Path
-t egy beállításkulcs elérési útjának tesztelésére, de ha egy bejegyzés elérési útját teszteli, az mindig a $false
értéket adja vissza, még akkor is, ha a bejegyzés létezik.
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
6. példa: Annak ellenőrzése, hogy egy fájl dátumtartományban van-e
Ez a parancs a NewerThan és OlderThan dinamikus paramétereket használja annak megállapítására, hogy a számítógépen található pwsh.exe
fájl újabb-e, mint July 13, 2009
és régebbi a múlt hétnél.
A NewerThan és OlderThan paraméterek csak fájlrendszer-meghajtókon működnek.
Get-Command pwsh |
Select-Object -ExpandProperty Path |
Test-Path -NewerThan "July 13, 2009" -OlderThan (Get-Date).AddDays(-7)
True
7. példa: Értékként null értékű elérési út tesztelése
A null
, a null
tömb vagy egy üres tömb esetében visszaadott hiba egy nem lezáruló hiba. A -ErrorAction SilentlyContinue
használatával letiltható. Az alábbi példában az összes olyan eset látható, amely a NullPathNotPermitted
hibát adja vissza.
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
8. példa: Elérési út tesztelése üres térrel értékként
Ha a elérési út paraméterhez szóközt tartalmazó sztringet adunk meg, az $false
értéket ad vissza. Ez egy változás a Windows PowerShell 5.1-ről. Ha üres sztringet ad meg, Test-Path
hibát ad vissza.
Az alábbi példa a szóközöket és az üres karakterláncot mutatja be.
Test-Path ' '
Test-Path ''
False
False
9. példa: Érvénytelen meghajtóval rendelkező elérési út tesztelése
Ha egy meghajtó specifikációját tartalmazó elérési utat tesztel, az elérési út érvényességének tesztelése sikertelen lesz, ha a meghajtó nem létezik. A probléma megkerüléséhez adhatja meg a szolgáltató nevét a meghajtó elé előtagként.
Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True
Paraméterek
-Credential
Jegyzet
Ezt a paramétert a PowerShell-lel telepített szolgáltatók nem támogatják. Ha megszemélyesíteni szeretne egy másik felhasználót, vagy a parancsmag futtatásakor emeli a hitelesítő adatait, használja a Invoke-Command.
Típus: | PSCredential |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-Exclude
Megadja azokat az elemeket, amelyeket ez a parancsmag kihagy. Ennek a paraméternek az értéke a Elérési út paramétert minősíti. Adjon meg egy elérési út elemet vagy mintát, például *.txt
. A helyettesítő karakterek használata engedélyezett.
Típus: | String[] |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | True |
-Filter
A szűrőt a szolgáltató formátumában vagy nyelvén adja meg. Ennek a paraméternek az értéke a Elérési út paramétert minősíti. A szűrő szintaxisa, beleértve a helyettesítő karakterek használatát is, a szolgáltatótól függ. A szűrők hatékonyabbak, mint a többi paraméter, mivel a szolgáltató akkor alkalmazza őket, amikor lekéri az objektumokat ahelyett, hogy a PowerShell a lekérésük után szűri az objektumokat.
Típus: | String |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | True |
-Include
Megadja a parancsmag által tesztelt elérési utakat. Ennek a paraméternek az értéke a Elérési út paramétert minősíti. Adjon meg egy elérési út elemet vagy mintát, például *.txt
. A helyettesítő karakterek használata engedélyezett.
Típus: | String[] |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | True |
-IsValid
Azt jelzi, hogy ez a parancsmag teszteli az elérési út szintaxisát, függetlenül attól, hogy az elérési út elemei léteznek-e. Ez a parancsmag $true
ad vissza, ha az elérési út szintaxisa érvényes, és $false
, ha nem. Ha a tesztelt elérési út tartalmaz egy meghajtó specifikációt, a parancsmag hamis értéket ad vissza, ha a meghajtó nem létezik. A PowerShell hamis értéket ad vissza, mert nem tudja, melyik meghajtószolgáltatót tesztelje.
Jegyzet
A Path API-k kompatibilitástörő változását vezettük be a .NET 2.1-ben. Ezek a metódusok már nem ellenőrzik az érvénytelen elérési útvonalak karaktereit. Ez a változás regressziót okozott a PowerShellben, ahol a IsValid már nem ellenőrzi az érvénytelen karaktereket. A regresszió egy későbbi kiadásban lesz kezelve. További információért lásd: Kompatibilitástörő változások a .NET Core 2.1-ben.
Típus: | SwitchParameter |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-LiteralPath
A tesztelni kívánt elérési utat adja meg. A Path-tal ellentétben a LiteralPath paraméter értéke pontosan a beírt módon lesz használva. A rendszer egyetlen karaktert sem értelmez helyettesítő karakterként. Ha az elérési út olyan karaktereket tartalmaz, amelyeket a PowerShell feloldósorozatként értelmezhet, az elérési utat egyetlen idézőjelbe kell csatolnia, hogy azok ne legyenek értelmezve.
Típus: | String[] |
Aliasok: | PSPath, LP |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
-NewerThan
Ez a FileSystem szolgáltató által elérhetővé tett dinamikus paraméter.
Adjon meg egy időpontot DateTime objektumként.
A PowerShell 7.5 előtt a parancsmag figyelmen kívül hagyja a következőt:
- Ez a paraméter akkor jelenik meg, ha PathType a
Any
kivételével bármilyen értékként meg van adva. - A OlderThan paraméter használata ezzel a paraméterrel együtt.
- Ez a paraméter akkor használandó, ha Elérési út egy könyvtárra mutat.
A PowerShell 7.5-től kezdve ezt a paramétert a PathType paraméter bármely értékével használhatja, hogy teszteljen egy dátumtartományt az OlderThan paraméterrel, és tesztelje a könyvtárak korát.
Lásd about_FileSystem_Providera további információkért.
Típus: | Nullable<T>[[DateTime]] |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-OlderThan
Ez a FileSystem szolgáltató által elérhetővé tett dinamikus paraméter.
Adjon meg egy időpontot DateTime objektumként.
A PowerShell 7.5 előtt a parancsmag figyelmen kívül hagyja a következőt:
- Ez a paraméter akkor jelenik meg, ha PathType a
Any
kivételével bármilyen értékként meg van adva. - Ez a paraméter a NewerThan paraméterrel együtt használva.
- Ez a paraméter akkor használandó, ha Elérési út egy könyvtárra mutat.
A PowerShell 7.5-től kezdve ezt a paramétert bármilyen értékkel használhatja a PathType paraméterhez, tesztelheti a dátumtartományt a NewerThan paraméterrel, és tesztelheti a könyvtárak korát.
Lásd about_FileSystem_Providera további információkért.
Típus: | Nullable<T>[[DateTime]] |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-Path
A tesztelni kívánt elérési utat adja meg. A helyettesítő karakterek használata engedélyezett. Ha az elérési út szóközöket tartalmaz, tegye idézőjelek közé.
Típus: | String[] |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | True |
-PathType
Megadja az elérési út utolsó elemének típusát. Ez a parancsmag $true
ad vissza, ha az elem a megadott típusú, és $false
, ha nem. A paraméter elfogadható értékei a következők:
-
Container
– Más elemeket, például címtárat vagy beállításkulcsot tartalmazó elem. -
Leaf
– Olyan elem, amely nem tartalmaz más elemeket, például egy fájlt. -
Any
- Tároló vagy levél.
Azt jelzi, hogy az elérési út utolsó eleme egy adott típusú-e.
Figyelem
A PowerShell 6.1.2-es verziójáig, amikor a IsValid és PathType kapcsolók együtt vannak megadva, a Test-Path
parancsmag figyelmen kívül hagyja a PathType kapcsolót, és csak a szintaktikai útvonalat érvényesíti az elérési út típusának érvényesítése nélkül.
A 8607-es probléma szerint a viselkedés kijavítása egy későbbi verzióban kompatibilitástörő változás lehet, ahol a IsValid és PathType kapcsolók külön paraméterkészletekhez tartoznak, így nem használhatók együtt a félreértés elkerülése érdekében.
Típus: | TestPathType |
Aliasok: | Type |
Elfogadott értékek: | Any, Container, Leaf |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
Bevitelek
Ehhez a parancsmaghoz egy elérési utat tartalmazó, de nem literális elérési utat tartalmazó sztringet csövezhet.
Kimenetek
A parancsmag egy logikai értéket ad vissza.
Jegyzetek
Azok a parancsmagok, amelyek tartalmazzák a Elérési út főnevet (az Elérési út parancsmagok), az elérési úttal dolgoznak, és a neveket olyan tömör formátumban adják vissza, amelyet minden PowerShell szolgáltató értelmezni tud. Olyan programokhoz és szkriptekhez lettek kialakítva, amelyekben egy útvonal egészét vagy egy részét egy adott formátumban szeretné megjeleníteni. Használja őket úgy, mint a Dirname, Normpath, Realpath, Joinvagy más elérésiút-manipulátorokat.
A Test-Path
úgy tervezték, hogy bármely szolgáltató által közzétett adatokkal működjön együtt. A munkamenetben elérhető szolgáltatók listájához írja be a Get-PSProvider
. További információért lásd about_Providers.