Set-Location to PowerShell-owy odpowiednik komendy cd — zmienia bieżącą lokalizację roboczą, czyli katalog, w którym aktualnie „stoisz”. Co ważne, w PowerShell lokalizacją nie musi być wcale folder na dysku: równie dobrze może to być gałąź rejestru (HKLM:\), magazyn certyfikatów czy dysk zmiennych środowiskowych (Env:\), bo wszystko to wystawiają tzw. dostawcy (providers). Dzięki temu jednym poleceniem nawigujesz po całym systemie tym samym sposobem. Aliasy cd, chdir i sl wskazują właśnie na ten cmdlet, więc nawyk z cmd czy Linuksa działa od ręki.
Składnia i najważniejsze opcje
Podstawowa forma: Set-Location [-Path] . Parametr -Path jest pozycyjny, więc zwykle piszesz od razu samą ścieżkę.
-Path— ścieżka docelowa; akceptuje symbole wieloznaczne (*,?). Od PowerShell 6.2 przyjmuje też-i+do skakania po historii lokalizacji.-LiteralPath— ścieżka brana dosłownie, znak po znaku; żaden znak nie jest traktowany jako wieloznacznik. Ratunek dla folderów z nawiasami kwadratowymi w nazwie.-PassThru— domyślnie cmdlet nic nie zwraca; ten przełącznik zwraca obiektPathInfoz nową lokalizacją.-StackName— przełącza bieżący stos lokalizacji (ten zarządzany przezPush-Location/Pop-Location) na wskazany z nazwy.
Przykłady użycia
Set-Location C:\Projekty\app— przechodzi do podanego katalogu na dysku C.cd ..— wchodzi o jeden poziom wyżej (alias działa tak samo jak pełna nazwa).Set-Location -Path HKLM:\SOFTWARE— „wchodzi” do gałęzi rejestru, jakby to był zwykły folder.Set-Location -LiteralPath 'C:\Logi[2026]'— wchodzi do folderu z nawiasami kwadratowymi, bo nie próbuje ich interpretować jako wzorca.Set-Location -— wraca do poprzedniej lokalizacji z historii (PowerShell trzyma ostatnie 20;+idzie w drugą stronę).Set-Location C:\Windows -PassThru— zmienia katalog i od razu wypisuje obiekt z nową ścieżką (przydatne w skryptach).
Częste błędy i pułapki
Spacje w ścieżce bez cudzysłowów rozbiją polecenie — pisz Set-Location "C:\Program Files". Nawiasy kwadratowe w nazwie folderu to klasyczna zasadzka: -Path czyta je jako wzorzec i zwraca błąd „nie znaleziono ścieżki”, mimo że folder istnieje — wtedy ratuje -LiteralPath. Kolejna pułapka: Set-Location D: (sam dysk, bez ukośnika) nie przenosi do korzenia D:\, tylko do zapamiętanej bieżącej lokalizacji tego dysku — chcesz korzeń, dopisz \. Pamiętaj też, że Set-Location zmienia lokalizację tylko w bieżącej sesji PowerShell; po zamknięciu okna wracasz do punktu wyjścia. I drobiazg, który myli osoby z Linuksa: gołe cd bez argumentu w PowerShell nie przenosi do katalogu domowego — żeby tam trafić, użyj Set-Location ~ albo cd $HOME.
Powiązane komendy: Get-Location (gdzie aktualnie jesteś), Push-Location i Pop-Location (odkładanie i zdejmowanie lokalizacji ze stosu) oraz Get-PSProvider (lista dostawców, po których możesz nawigować).