Test-Path
Określa, czy istnieją wszystkie elementy ścieżki.
Składnia
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>]
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, polecenie cmdlet zwraca wartość $false. Jeśli ścieżka to $null, tablica $null lub pusta tablica, polecenie cmdlet zwraca 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ą, w tym C: katalog, Documents and Settings katalog i DavidC katalog. Jeśli brakuje żadnego z tych elementów, 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 takim przypadku ścieżka to $false, ale składnia jest poprawna $true. Te polecenia używają $PROFILEzmiennej 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 , aby określić ścieżkę. 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 ten, wpisz pierwsze kilka liter ścieżki, a następnie użyj klawisza TAB, aby ukończyć ścieżkę.
Polecenie określa parametr Exclude , aby określić pliki do pominięcia z oceny.
W takim przypadku, ponieważ katalog zawiera tylko pliki .dwg, wynik to $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 Microsoft. Program PowerShell klucz rejestru jest poprawny w systemie. Jeśli program PowerShell jest poprawnie zainstalowany, polecenie cmdlet zwraca wartość $true.
Ważna
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 $falsewartość , 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 pwsh.exe plik na komputerze jest nowszy niż July 13, 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 nulltablicy lub pustej null tablicy jest błędem niepowodującym zakończenia. Można go pominąć za pomocą polecenia -ErrorAction SilentlyContinue. W poniższym przykładzie przedstawiono wszystkie przypadki zwracające 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ą
Po podaniu ciągu odstępu dla parametru Path zwraca wartość $false. Jest to zmiana z Windows programu 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
Przykład 9. Testowanie ścieżki, która może mieć nieprawidłowy dysk
Podczas testowania ścieżki zawierającej specyfikację dysku testowanie ważności ścieżki kończy się niepowodzeniem, jeśli dysk nie istnieje. Możesz prefiksować dysk o nazwie dostawcy, aby obejść ten problem.
Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True
Parametry
-Credential
Note
Ten parametr nie jest obsługiwany przez żadnych dostawców zainstalowanych w programie PowerShell. Aby podszyć się pod innego użytkownika lub podnieść swoje uprawnienia podczas uruchamiania tego cmdletu, użyj Invoke-Command.
Właściwości parametru
| Typ: | PSCredential |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | 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. Symbole wieloznaczne są dozwolone.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-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.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-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. Symbole wieloznaczne są dozwolone.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-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 i $false jeśli nie. Jeśli testowana ścieżka zawiera specyfikację dysku, polecenie cmdlet zwraca wartość false, gdy dysk nie istnieje. Program PowerShell zwraca wartość false, ponieważ nie wie, który dostawca dysków do przetestowania.
Note
Zmiana powodująca niezgodność w interfejsach API ścieżki została wprowadzona w .NET 2.1. Te metody nie sprawdzają już nieprawidłowych znaków ścieżki. Ta zmiana spowodowała regresję w programie PowerShell, w której sprawdzanie IsValid nie sprawdza już nieprawidłowych znaków. Regresja zostanie rozwiązana w przyszłej wersji. Aby uzyskać więcej informacji, zobacz
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-LiteralPath
Określa ścieżkę do przetestowania. W przeciwieństwie do Pathwartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Żadne znaki nie są interpretowane jako symbole 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.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | PSPath, LP |
Zestawy parametrów
LiteralPath
| Position: | Named |
| Obowiązkowe: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
-NewerThan
Jest to parametr dynamiczny udostępniany przez dostawcę systemu plików.
Określ godzinę jako obiekt DateTime .
Przed programem PowerShell 7.5 polecenie cmdlet ignoruje następujące elementy:
- Ten parametr podczas określania parametru PathType jako dowolnej wartości innej niż
Any. - Parametr OlderThan, jeśli jest używany z tym parametrem.
- Ten parametr, gdy ścieżka wskazuje katalog.
Począwszy od programu PowerShell 7.5, można użyć tego parametru z dowolną wartością parametru PathType , aby przetestować zakres dat za pomocą parametru OlderThan i przetestować wiek katalogów.
Aby uzyskać więcej informacji, zobacz about_FileSystem_Provider.
Właściwości parametru
| Typ: | |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-OlderThan
Jest to parametr dynamiczny udostępniany przez dostawcę systemu plików.
Określ godzinę jako obiekt DateTime .
Przed programem PowerShell 7.5 polecenie cmdlet ignoruje następujące elementy:
- Ten parametr podczas określania parametru PathType jako dowolnej wartości innej niż
Any. - Ten parametr w przypadku użycia z parametrem NewerThan .
- Ten parametr, gdy ścieżka wskazuje katalog.
Począwszy od programu PowerShell 7.5, można użyć tego parametru z dowolną wartością parametru PathType , aby przetestować zakres dat za pomocą parametru NewerThan i przetestować wiek katalogów.
Aby uzyskać więcej informacji, zobacz about_FileSystem_Provider.
Właściwości parametru
| Typ: | |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Path
Określa ścieżkę do przetestowania. Symbole wieloznaczne są dozwolone. Jeśli ścieżka zawiera spacje, należy ująć ją w cudzysłów.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
Path
| Position: | 0 |
| Obowiązkowe: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
-PathType
Określa typ końcowego elementu w ścieżce. To polecenie cmdlet zwraca $true wartość , jeśli element ma określony typ i $false czy nie. Dopuszczalne wartości tego parametru to:
-
Container— element zawierający inne elementy, takie jak katalog lub klucz rejestru. -
Leaf- Element, który nie zawiera innych elementów, takich jak plik. -
Any— kontener lub liść.
Informuje, czy ostatni element w ścieżce ma określony typ.
Caution
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ę składni bez sprawdzania poprawności typu ścieżki.
Zgodnie z problemem nr 8607 rozwiązanie 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 zamieszania.
Właściwości parametru
| Typ: | TestPathType |
| Domyślna wartość: | None |
| Dopuszczalne wartości: | Any, Container, Leaf |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | Typ |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
String
Do tego polecenia cmdlet można przesłać ciąg tekstowy zawierający ścieżkę, ale nie literalną ścieżkę.
Dane wyjściowe
Boolean
Polecenie cmdlet zwraca wartość logiczną .
Notatki
Polecenia cmdletzawierającee ścieżki (polecenia cmdlet path ) działają ze ścieżką i zwracają nazwy w zwięzłym formacie, który może interpretować wszyscy dostawcy programu PowerShell. Są one przeznaczone do użytku w programach i skryptach, w których chcesz wyświetlić całą ścieżkę lub część ścieżki w określonym formacie. Użyj ich tak, jak można użyć dirname, Normpath, Realpath, Join lub innych manipulatorów ścieżek.
Element Test-Path jest przeznaczony 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.