Megosztás a következőn keresztül:


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 $falsead 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 $falsead 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 $truead 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 $truead 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 SilentlyContinuehaszná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 Anykivé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 Anykivé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

String

Ehhez a parancsmaghoz egy elérési utat tartalmazó, de nem literális elérési utat tartalmazó sztringet csövezhet.

Kimenetek

Boolean

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.