Команда adb для PowerShell (Windows)

Я 'новичок в Windows. Я установил файлы adb и fastboot (platform-tools) для Windows и добавил папку в переменную path, чтобы иметь универсальный доступ к adb.

Я провел некоторое исследование и обнаружил, что Windows медленно переходит на PowerShell (что хорошо) и (я полагаю) в конечном итоге откажется от устаревшего CMD. Поэтому даже в меню [[Shift+Правая кнопка мыши]2 появилась опция "Открыть окно PowerShell здесь". Я читал некоторые статьи и знаком с хаками реестра, чтобы добавить "Open Command Prompt Here" и удалить "Open PowerShell window here", но это не то, что я хотел бы сделать, учитывая, что PowerShell намного более продвинут, чем CMD.

Теперь, когда я открываю PowerShell в той же папке, где я'установил platform-tools, и запускаю команду adb, я получаю this и it's successful.

.\adb devices  
.\adb.exe devices  

Но когда я открываю PowerShell в другом месте и запускаю команду, она'оказывается not successful. Почему поведение такое, даже когда я добавил папку adb в переменную path? И как я могу успешно запустить команду повсеместно?

В процессе поиска я нашел приложение, которое предоставляет PowerShell ADB & Fastboot GUI - PoshADB (просто хотел поделиться).

Пожалуйста, обратите внимание, что adb devices отлично работает в cmd, универсально.

--

Вывод, который я сделал из приведенного ниже ответа:

  • Когда файлы adb НЕ находятся в моем PATH

    • Они работают в той же папке, где установлен adb:

      • Вызов по полному пути
        • .\adb devices
        • .\adb.exe devices
    • Это работает универсально:

      • Вызов по полному пути
  • Когда файлы adb находятся в моем PATH

    • Они работают в той же папке, где установлен adb:

      • Вызов по полному пути
        • .\adb devices
        • .\adb.exe devices
      • adb devices
    • Это работает универсально:

      • adb devices
      • Вызов по полному пути

Для справки на будущее - (Кратко: Если его нет в вашем PATH, то вы должны ввести полный путь, чтобы он работал. А если он есть в вашем PATH, то вы можете просто набрать adb devices, или указать полный путь к adb)

Решение

Когда вы используете .\ для запуска команды, вы'говорите PowerShell искать ее только в текущем каталоге - точка означает "эту папку", как и в старом командном процессоре. Если то, что вы пытаетесь запустить, не находится в текущей папке, даже если оно есть в PATH, это приведет к неудаче. Обратите внимание, что термин "dot-sourcing" относится к выполнению сценариев PowerShell в текущей области видимости вместо их собственной, что отличается от запуска команды из текущего каталога.

Вы можете набрать имя программы без .\ в любом месте, чтобы запустить ее, если она находится в вашем PATH. Обратите внимание, что PowerShell не увидит изменений в PATH или любой переменной окружения, пока вы не перезапустите его. После того как вы настроили переменную окружения и открыли новый PowerShell, достаточно просто adb, чтобы определить программу, которую вы хотите запустить, независимо от вашего текущего каталога.

Комментарии (4)