Udostępnij za pośrednictwem


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>]
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>]

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, czy terminalu, czy 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 lub pusta tablica $null , 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 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ą $profilezmiennej automatycznej wskazującej 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 budynek. W przypadku długich ścieżek, takich jak ta, 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 polecenie $truecmdlet .

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 polecenie $truecmdlet .

Ważne

Test-Path program nie działa poprawnie ze wszystkimi dostawcami programu PowerShell. Na przykład można użyć Test-Path do przetestowania ścieżki klucza rejestru, ale jeśli używasz go do testowania ścieżki wpisu rejestru, zawsze zwraca wartość $false, 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 o wartości null jako wartości

Zwrócony błąd 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, 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

Po podaniu ciągu odstępu dla parametru Ścieżka zwraca wartość $false. Jest to zmiana z Windows PowerShell 5.1. Po podaniu Test-Path pustego ciągu zwraca błąd. W poniższym przykładzie przedstawiono 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. Dysk o nazwie dostawcy można prefiksować, aby obejść ten problem.

Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt

False
True

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 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 elementy ścieżki istnieją. To polecenie cmdlet zwraca, $true jeśli składnia ścieżki jest prawidłowa i $false jeśli nie jest. 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 dysku do przetestowania.

Uwaga

Zmiana powodująca niezgodność w interfejsach API ścieżki została wprowadzona na platformie .NET 2.1. Te metody nie są już sprawdzane pod kątem nieprawidłowych znaków ścieżki. Ta zmiana spowodowała regresję w programie PowerShell, w której funkcja IsValid nie sprawdza już nieprawidłowych znaków. Regresja zostanie rozwiązana w przyszłej wersji. Aby uzyskać więcej informacji, zobacz Zmiany powodujące niezgodność w programie .NET Core 2.1.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

Określa ścieżkę do testowania. 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

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 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.

Type:Nullable<T>[[DateTime]]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 z parametrem NewerThan i przetestować wiek katalogów.

Aby uzyskać więcej informacji, zobacz about_FileSystem_Provider.

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 testowania. Dozwolone są symbole wieloznaczne. Jeśli ścieżka zawiera spacje, należy je ująć w cudzysłów.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-PathType

Określa typ ostatniego elementu w ścieżce. To polecenie cmdlet zwraca wartość $true , jeśli element ma określony typ i $false czy nie. Dopuszczalne wartości dla 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 ostatnim elementem w ścieżce jest 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ę syntatyczną bez sprawdzania poprawności typu ścieżki.

Zgodnie z problemem #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 zamieszania.

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

String

Możesz potokować ciąg zawierający ścieżkę, ale nie ścieżkę literału, do tego polecenia cmdlet.

Dane wyjściowe

Boolean

Polecenie cmdlet zwraca wartość logiczną .

Uwagi

Polecenia cmdlet zawierające czasownik Ścieżki (polecenia cmdlet ścieżki ) działają ze ścieżką 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ć całą lub część ścieżki w określonym formacie. Użyj ich tak, jak używasz 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.