Set-Location

Zmienia bieżącą lokalizację roboczą (katalog).

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] [-PassThru]. 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 obiekt PathInfo z nową lokalizacją.
  • -StackName — przełącza bieżący stos lokalizacji (ten zarządzany przez Push-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ć).