Test-Path to podstawowe polecenie PowerShell, które odpowiada na jedno pytanie: czy dana ścieżka istnieje? Zwraca wartość logiczną — True, jeśli obiekt (plik, folder, klucz rejestru, zmienna) istnieje, albo False, jeśli go nie ma. Nie tworzy, nie usuwa i nie modyfikuje niczego, więc jest bezpiecznym narzędziem, którym warto poprzedzać operacje typu „skopiuj do folderu” czy „usuń plik”, żeby skrypt nie wysypał się na brakującej ścieżce. Działa nie tylko na systemie plików — dzięki dostawcom PowerShell obsłuży też HKLM:\, Env: czy Variable:.
Składnia i najważniejsze opcje
Podstawowa forma: Test-Path [-Path]
-Path— ścieżka do sprawdzenia; parametr pozycyjny, więc zwykle piszesz go bez nazwy. Obsługuje symbole wieloznaczne (*,?).-LiteralPath— ścieżka brana dosłownie, bez interpretacji symboli wieloznacznych. Ratuje życie, gdy w nazwie masz nawiasy kwadratowe.-PathType— precyzuje, czego szukasz:Leaf(plik),Container(folder) lubAny(jedno albo drugie, domyślnie).-IsValid— sprawdza tylko, czy składnia ścieżki jest poprawna, niezależnie od tego, czy obiekt faktycznie istnieje.-Include— testuje tylko elementy pasujące do wzorca, np.*.log.-Exclude— pomija elementy pasujące do wzorca.-Filter— filtr dostawcy (dla systemu plików szybszy niż Include/Exclude).
Przykłady użycia
Test-Path C:\Users\jan\raport.txt— zwracaTrue, jeśli plik istnieje.Test-Path C:\Logs -PathType Container— potwierdza, żeC:\Logsto folder, a nie plik o tej nazwie.if (Test-Path C:\temp) { Remove-Item C:\temp -Recurse }— usuwa folder tylko wtedy, gdy naprawdę istnieje.Test-Path "C:\Projekty\*.csproj"—True, jeśli w folderze jest choć jeden plik projektu.Test-Path "C:\zły|znak\plik.txt" -IsValid— zwróciFalse, bo składnia ścieżki jest niepoprawna, mimo że nic nie sprawdza na dysku.Test-Path Env:\PATH— sprawdza, czy zmienna środowiskowaPATHjest ustawiona.
Częste błędy i pułapki
Najczęstsza wpadka: mylenie -IsValid z faktycznym sprawdzeniem istnienia. -IsValid ocenia tylko poprawność składni — dla nieistniejącej, ale poprawnej ścieżki zwróci True. Druga pułapka to symbole wieloznaczne: jeśli nazwa pliku zawiera nawiasy kwadratowe (np. plik[1].txt), PowerShell potraktuje je jako wzorzec i wynik będzie zaskakujący — użyj wtedy -LiteralPath. Pamiętaj też, że pusta lub $null ścieżka domyślnie rzuci błędem, a ścieżka złożona z samych spacji zwróci False. I klasyk: Test-Path C:\Logs -PathType Leaf zwróci False, jeśli Logs jest folderem — bo wprost pytasz o plik.
Powiązane komendy: Get-Item, Get-ChildItem, Resolve-Path, Split-Path, New-Item.