polecenie adb dla PowerShell (Windows)

1

Jestem nowym użytkownikiem systemu Windows. Zainstalowałem pliki adb i fastboot (narzędzia platformowe) dla systemu Windows i dodano folder w zmiennej ścieżki abym mógł uzyskać dostęp do adb uniwersalnie.

Zrobiłem kilka badań i odkryłem, że Windows powoli przesuwa się do PowerShell (co jest dobre) iw końcu (chyba) pominie starsze CMD. Więc nawet Menu [Shift + prawy przycisk myszy] pokazuje opcję „Otwórz okno PowerShell”. Przeczytałem kilka artykułów i zapoznałem się z hackami rejestru, aby dodać „Open Command Prompt Here” i usunąć „Open PowerShell tutaj”, ale to nie jest coś, co chciałbym zrobić, biorąc pod uwagę, że PowerShell jest znacznie bardziej zaawansowany niż CMD.

Teraz, kiedy otwieram PowerShell w tym samym folderze, w którym zainstalowałem narzędzia platformowe i uruchamiam polecenie adb, otrzymuję to i to się udaje .

.\adb devices  
.\adb.exe devices  

Ale kiedy otwieram PowerShell gdzie indziej i uruchamiam polecenie, jest to nieudany . Dlaczego tak się dzieje, nawet gdy dodałem folder adb do zmiennej ścieżki? A jak mogę z powodzeniem uruchomić komendę?

Podczas wyszukiwania znalazłem aplikację, która zapewnia PowerShell ADB i Fastboot GUI - PoshADB (chciałem się podzielić).

Proszę zanotować że adb devices działa dobrze w cmd, powszechnie.

-

Wniosek, który wyciągnąłem z odpowiedzi poniżej:

  • Gdy pliki adb NIE są na moim PATH

    • Działają one w tym samym folderze, w którym zainstalowano adb:

      • Zadzwoń po pełnej ścieżce
        • .\adb devices
        • .\adb.exe devices
    • Działa to powszechnie:

      • Zadzwoń po pełnej ścieżce
  • Gdy pliki adb są na moim PATH

    • Działają one w tym samym folderze, w którym zainstalowano adb:

      • Zadzwoń po pełnej ścieżce
        • .\adb devices
        • .\adb.exe devices
      • adb devices
    • Działają one powszechnie:

      • adb devices
      • Zadzwoń po pełnej ścieżce

Dla mojego przyszłego odniesienia- (Zwięzłe: jeśli nie jest na twoim PATH następnie musisz wprowadzić pełną ścieżkę, aby mogła działać. A jeśli jest na twoim PATH wtedy możesz po prostu wpisać adb deviceslub wspomnij pełną ścieżkę adb)

swingcake
źródło
2
nie używaj „dot sourcing” tylko „adb.exe”, jeśli znajduje się na Twojej ścieżce lub używa pełnych ścieżek. „dot sourcing” jest używany w bieżącym katalogu, aby zapobiec niepożądanemu wykonaniu PS, którego możesz lub nie musisz modyfikować, aby składnia była akceptowana przez powershell
Jaqueline Vanek
1
PPS używa „$ Env: Path”, aby sprawdzić zmienną ścieżki z PowerShell
Jaqueline Vanek
Mały dodatek OT: [...] registry-hacks to add 'Open Command Prompt Here' and remove 'Open PowerShell Window here' nie są konieczne. Przejdź do nowego panelu Ustawienia - & gt; Personalizacja - & gt; Pasek zadań - & gt; odznacz „Zamień wiersz polecenia przy pomocy Windows PowerShell [...]”.
flolilolilo
Jak wspomniała @Jaqueline, mogę to potwierdzić adb.exe devices działa dobrze w tym samym folderze, w którym znajdują się narzędzia platformy. Ale ponieważ dodałem ten folder do zmiennej ścieżki (może to również potwierdzić, używając $Env:Path ), to samo polecenie adb.exe devices działa powszechnie także. To bardzo dobrze odpowiada na moje pytanie. Dziękuję Ci! Nie jestem jednak w stanie zrozumieć ” „dot sourcing” jest używany w bieżącym katalogu aby zapobiec niepożądanemu wykonaniu ". Tak, mogę również potwierdzić, że w tym samym folderze, .\adb.exe devices i .\adb devices działa, ale nie powszechnie.
swingcake
Również @flo Chciałbym poprawić podane informacje. Ta opcja, do której się odnosisz Go to the new Settings panel -> Personalization -> Taskbar -> uncheck "Replace Command Prompt with Windows PowerShell [...]", zastępuje je tylko po kliknięciu prawym przyciskiem myszy przycisku Start lub naciśnięciu klawisza Windows + X . W moim oryginalnym poście mówię o menu kontekstowe W każdym razie, dzięki za komentarz! :)
swingcake

Odpowiedzi:

1

Kiedy używasz .\ aby uruchomić polecenie, mówisz PowerShellowi, aby spojrzał tylko w bieżącym katalogu - kropka oznacza „ten folder”, tak jak w starym procesorze poleceń. Jeśli rzecz, którą próbujesz uruchomić, nie znajduje się w bieżącym folderze, nawet jeśli znajduje się w folderze PATHto się nie powiedzie. Zwróć uwagę, że termin „dot-sourcing” odnosi się do wykonywania skryptów PowerShell w bieżącym zakresie, a nie do własnego, co różni się od uruchamiania polecenia z bieżącego katalogu.

Możesz wpisać nazwę programu bez .\ gdziekolwiek go uruchomić, jeśli jest na twoim PATH. Zauważ jednak, że PowerShell nie zobaczy zmian w PATH lub dowolna zmienna środowiskowa do momentu ponownego uruchomienia. Po dostosowaniu zmiennej środowiskowej i otwarciu nowego PowerShell po prostu adb wystarczy, aby zidentyfikować program, który chcesz uruchomić, bez względu na bieżący katalog.

Ben N
źródło
„dopóki go nie zrestartujesz”, więc to zrozumiałeś. teraz, jak ponownie uruchomić elegancką sesję?
Jaqueline Vanek
@JaquelineVanek Zamykanie i ponowne otwieranie okna PowerShell powinno być wystarczające, ale cykl wylogowania / logowania zdecydowanie odświeżyłby wszystkie zmienne środowiskowe.
Ben N
@BenN Rozważ, że pliki adb nie znajdują się na moim PATH. Teraz jak uruchomić / wykonać / Lampa błyskowa plik, którego nie ma w tym samym folderze. Jak ja nawigować do tego pliku z folderu adb?
swingcake
@unixf Możesz użyć cd aby zmienić bieżący katalog (podobnie jak w starym procesorze poleceń), lub możesz wprowadzić względny (np. subfolder\program.ext ) lub pełna ścieżka (np. C:\somefolder\subfolder\program.ext ) aby uruchomić program, który znajduje się gdzie indziej niż bieżący katalog.
Ben N