Test-Path
Określa, czy istnieją wszystkie elementy ścieżki.
Składnia
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>]
Opis
Polecenie Test-Path
cmdlet określa, czy istnieją wszystkie elementy ścieżki. Zwraca wartość $True
, jeśli wszystkie elementy istnieją i $False
jeśli istnieją. Może również określić, czy składnia ścieżki jest prawidłowa i czy ścieżka prowadzi do kontenera, terminalu lub elementu liścia. Jeśli ścieżka jest białym znakiem lub pustym ciągiem, $False
zwracana jest wartość . Jeśli ścieżka to $null
, tablica $null
lub pusta tablica, zwracany jest błąd niepowodujący zakończenia.
Przykłady
Przykład 1: Testowanie ścieżki
Test-Path -Path "C:\Documents and Settings\DavidC"
True
To polecenie sprawdza, czy wszystkie elementy w ścieżce istnieją, C:
czyli katalog, Documents and Settings
katalog i DavidC
katalog. Jeśli brakuje dowolnego elementu, polecenie cmdlet zwraca wartość $False
. W przeciwnym razie zwraca wartość $True
.
Przykład 2. Testowanie ścieżki profilu
Test-Path -Path $profile
False
Test-Path -Path $profile -IsValid
True
Te polecenia testuje ścieżkę profilu programu PowerShell.
Pierwsze polecenie określa, czy wszystkie elementy w ścieżce istnieją. Drugie polecenie określa, czy składnia ścieżki jest poprawna. W tym przypadku ścieżka to $False
, ale składnia jest poprawna $True
. Te polecenia używają $profile
zmiennej automatycznej, która wskazuje lokalizację profilu, nawet jeśli profil nie istnieje.
Aby uzyskać więcej informacji na temat zmiennych automatycznych, zobacz about_Automatic_Variables.
Przykład 3: Sprawdzanie, czy istnieją jakiekolwiek pliki oprócz określonego typu
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
To polecenie sprawdza, czy w katalogu Commercial Buildings znajdują się pliki inne niż pliki .dwg.
Polecenie używa parametru Path do określenia ścieżki. Ponieważ ścieżka zawiera spację, ścieżka jest ujęta w cudzysłów. Gwiazdka na końcu ścieżki wskazuje zawartość katalogu Komercyjna kompilacja. W przypadku długich ścieżek, takich jak ta, wpisz kilka pierwszych liter ścieżki, a następnie użyj klawisza TAB, aby ukończyć ścieżkę.
Polecenie określa parametr Exclude , aby określić pliki, które zostaną pominięte w ocenie.
W tym przypadku, ponieważ katalog zawiera tylko pliki .dwg, wynikiem jest $False
.
Przykład 4: Sprawdzanie pliku
Test-Path -Path $profile -PathType leaf
True
To polecenie sprawdza, czy ścieżka przechowywana w zmiennej $profile
prowadzi do pliku. W takim przypadku, ponieważ profil programu PowerShell jest plikiem .ps1
, polecenie cmdlet zwraca wartość $True
.
Przykład 5. Sprawdzanie ścieżek w rejestrze
Te polecenia są używane Test-Path
z dostawcą rejestru programu PowerShell.
Pierwsze polecenie sprawdza, czy ścieżka rejestru klucza rejestru Microsoft.PowerShell jest poprawna w systemie. Jeśli program PowerShell jest poprawnie zainstalowany, polecenie cmdlet zwraca wartość $True
.
Ważne
Test-Path
program nie działa poprawnie ze wszystkimi dostawcami programu PowerShell. Na przykład można użyć Test-Path
polecenia , aby przetestować ścieżkę klucza rejestru, ale jeśli używasz go do testowania ścieżki wpisu rejestru, zawsze zwraca $False
wartość , nawet jeśli wpis rejestru jest obecny.
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
Przykład 6: Testowanie, czy plik jest nowszy niż określona data
To polecenie używa parametru dynamicznego NewerThan , aby określić, czy plik "PowerShell.exe" na komputerze jest nowszy niż "13 lipca 2009".
Parametr NewerThan działa tylko na dyskach systemu plików.
Test-Path $pshome\pwsh.exe -NewerThan "July 13, 2009"
True
Przykład 7: Testowanie ścieżki z wartością null jako wartością
Błąd zwracany dla null
tablicy lub pustej null
tablicy jest błędem niepowodującym zakończenia. Może on zostać pominięty przy użyciu polecenia -ErrorAction SilentlyContinue
. W poniższym przykładzie pokazano wszystkie przypadki, które zwracają NullPathNotPermitted
błąd.
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
Przykład 8: Testowanie ścieżki z białym znakiem jako wartością
Gdy zostanie podany ciąg odstępu dla parametru Ścieżka , zwraca wartość False. Jest to zmiana z Windows PowerShell 5.1. Po podaniu Test-Path
pustego ciągu zwracany jest błąd.
W poniższym przykładzie pokazano białe znaki i pusty ciąg.
Test-Path ' '
Test-Path ''
False
False
Parametry
-Credential
Uwaga
Ten parametr nie jest obsługiwany przez żadnych dostawców zainstalowanych w programie PowerShell. Aby personifikować innego użytkownika lub podnieść poziom poświadczeń podczas uruchamiania tego polecenia cmdlet, użyj polecenia Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
Określa elementy pomijane przez to polecenie cmdlet. Wartość tego parametru kwalifikuje parametr Path . Wprowadź element ścieżki lub wzorzec, taki jak "*.txt". Dozwolone są symbole wieloznaczne.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Określa filtr w formacie lub języku dostawcy. Wartość tego parametru kwalifikuje parametr Path . Składnia filtru, w tym użycie symboli wieloznacznych, zależy od dostawcy. Filtry są bardziej wydajne niż inne parametry, ponieważ dostawca stosuje je podczas pobierania obiektów zamiast filtrowania obiektów za pomocą programu PowerShell po ich pobraniu.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Include
Określa ścieżki, które testuje to polecenie cmdlet. Wartość tego parametru kwalifikuje parametr Path . Wprowadź element ścieżki lub wzorzec, taki jak "*.txt". Dozwolone są symbole wieloznaczne.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-IsValid
Wskazuje, że to polecenie cmdlet sprawdza składnię ścieżki, niezależnie od tego, czy istnieją elementy ścieżki. To polecenie cmdlet zwraca $True
wartość , jeśli składnia ścieżki jest prawidłowa, a $False
jeśli nie.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Określa ścieżkę do przetestowania. W przeciwieństwie do ścieżki wartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki wieloznaczne nie są interpretowane jako znaki wieloznaczne. Jeśli ścieżka zawiera znaki, które mogą być interpretowane przez program PowerShell jako sekwencje ucieczki, należy ująć ścieżkę w pojedynczy cudzysłów, aby nie były interpretowane.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NewerThan
Określ godzinę jako obiekt DateTime .
Type: | Nullable<T>[DateTime] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OlderThan
Określ godzinę jako obiekt DateTime .
Type: | Nullable<T>[DateTime] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Określa ścieżkę do przetestowania. Dozwolone są symbole wieloznaczne. Jeśli ścieżka zawiera spacje, należy ująć ją w cudzysłów.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PathType
Określa typ końcowego elementu w ścieżce. To polecenie cmdlet zwraca $True
wartość , jeśli element ma określony typ, a $False
jeśli nie. Dopuszczalne wartości dla tego parametru to:
- Kontenera. Element zawierający inne elementy, takie jak katalog lub klucz rejestru.
- Liść. Element, który nie zawiera innych elementów, takich jak plik.
- Wszelki. Kontener lub liść.
Informuje, czy ostatni element w ścieżce ma określony typ.
Przestroga
Do programu PowerShell w wersji 6.1.2, gdy przełączniki IsValid i PathType są określone razem, Test-Path
polecenie cmdlet ignoruje przełącznik PathType i weryfikuje tylko ścieżkę syntactyczną bez sprawdzania poprawności typu ścieżki.
Zgodnie z problemem nr 8607 naprawienie tego zachowania może być zmianą powodującą niezgodność w przyszłej wersji, w której przełączniki IsValid i PathType należą do oddzielnych zestawów parametrów, a tym samym nie można ich używać razem, unikając tego pomylenia.
Type: | TestPathType |
Aliases: | Type |
Accepted values: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Dane wejściowe
Do tego polecenia cmdlet można przekazać potok, który zawiera ścieżkę, ale nie ścieżkę literału.
Dane wyjściowe
Polecenie cmdlet zwraca wartość logiczną .
Uwagi
Polecenia cmdletzawierającee ścieżki (polecenia cmdlet ścieżki ) działają z nazwami ścieżek i zwracają nazwy w zwięzłym formacie, który mogą interpretować wszyscy dostawcy programu PowerShell. Są one przeznaczone do użytku w programach i skryptach, w których chcesz wyświetlić wszystkie lub część nazwy ścieżki w określonym formacie. Używaj ich tak jak dirname, Normpath, Realpath, Join lub innych manipulatorów ścieżek.
Jest ona przeznaczona Test-Path
do pracy z danymi udostępnianymi przez dowolnego dostawcę. Aby wyświetlić listę dostawców dostępnych w sesji, wpisz Get-PSProvider
. Aby uzyskać więcej informacji, zobacz about_Providers.