Jak w PowerShellu uruchomić program

W PowerShellu nieco inaczej zaimplementowano obsługę uruchamiania programów niż zrobiono to w Wierszu polecenia. Czasami działanie obu programów jest identycznie, ale na ogół PowerShell zachowa się nieco inaczej.

Chesz przetestować działanie poniższych instrukcji, a nie masz dostępu do serwera Linuxowego? Po rejestacji na DigitalOcean otrzymasz 100 dolarów do wykorzystania w ciągu 60 dni, a z przyjaznym interfejsem uruchomisz ulubioną dystrybucję w ciągu paru minut.

Owe różnice zależą od tego czy ścieżka do programu zawarta jest w zmiennej PATH oraz jego relatywne położenie między aktualnie wybranym katalogiem. Warto wspomnieć, że używanie klawisza tab w celu automatycznego uzupełniania ścieżek bądź nazw programów automatycznie rozwiązuje potencjalne problemu.

Dla większej czytelności w przykładach wycięto sporą część komunikatów jakie są wyświetlane na ekranie.

Ścieżka do programu jest w zmiennej PATH

W sytuacji gdy uruchamiany jest program którego ścieżka znajduje się w opisanej niedawno zmiennej PATH wystarczy jedynie wpisać nazwę pliku wykonywalnego.

PS C:\> ping

Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-c compartment] [-p]
            [-4] [-6] target_name
...
PS C:\>

Program znajduje się w aktualnym katalogu

Jeżeli plik wykonywalny znajduje się w aktualnym katalogu tradycyjne użycie jego nazwy spowoduje wyświetlenie błędu oraz sugestię by dopisać .\ przed nazwą pliku. Wtedy PowerShell zorientuje się, że chodzi o plik znajdujący się w aktualnym katalogu.

PS C:\Program Files\7-Zip> .\7z

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Usage: 7z  [...]  [...] [@listfile]
(...)
PS C:\Program Files\7-Zip>

Podanie pełnej ścieżki do katalogu

Ostatnim wariantem jest sytuacja gdy trzeba podać pełną nazwę do pliku wykonywalnego. Na ogół można spodziewać się, że będzie ona zawierała spacje i konieczne będzie ujęcie jej w cudzysłowach lub apostrofach.

Jednakże PowerShell po naciśnięciu klawisza enter zinterpretuje go jako ciąg znaków i wypisze jego zawartość w konsoli. Aby wymusić potraktowanie go jako ścieżki do pliku wykonywalnego trzeba na samym początku dopisać &.

PS C:\> & 'C:\Program Files\7-Zip\7z'

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Usage: 7z  [...]  [...] [@listfile]
(...)
PS C:\>