Adb-Befehl für PowerShell (Windows)

22541
swingcake

Ich bin neu in Windows. Ich habe Adb- und Fastboot-Dateien (Plattform-Tools) für Windows installiert und den Ordner in der Pfadvariable hinzugefügt, damit ich auf Adb universell zugreifen kann.

Ich habe einige Nachforschungen angestellt und festgestellt, dass Windows langsam zu PowerShell wechselt (was gut ist) und (ich denke, dass) das CMD-Legacy schließlich auslässt. So zeigt auch das Menü [Umschalt + Rechtsklick] die Option "PowerShell-Fenster hier öffnen". Ich habe einige Artikel gelesen und bin mit Registrierungs-Hacks vertraut, die "Open Command Prompt Here" hinzufügen und "Open PowerShell-Fenster hier entfernen" entfernen. Dies ist jedoch nichts, was ich tun möchte. PowerShell ist weitaus fortgeschrittener als CMD.

Wenn ich nun PowerShell in demselben Ordner öffne, in dem ich Plattformtools installiert habe, und den Befehl adb ausführen, bekomme ich dies und es ist erfolgreich .

.\adb devices  .\adb.exe devices  

Wenn ich jedoch PowerShell an anderer Stelle öffne und den Befehl ausführte, ist er nicht erfolgreich . Warum ist das so, selbst wenn ich den Adb-Ordner zur Pfadvariablen hinzugefügt habe? Und wie kann ich den Befehl erfolgreich universell ausführen?

Während meiner Suche habe ich eine Anwendung gefunden, die PowerShell ADB und Fastboot GUI - PoshADB (nur zur gemeinsamen Nutzung ) bereitstellt .

Bitte beachten Sie, dass adb devicesin cmd universell einwandfrei funktioniert.

-

Eine Schlussfolgerung, die ich aus der folgenden Antwort gezogen habe:

  • Wenn ADB-Dateien NICHT auf meiner PATH

    • Diese arbeiten in demselben Ordner, in dem adb installiert ist:

      • Rufen Sie den vollständigen Pfad an
        • .\adb devices
        • .\adb.exe devices
    • Das funktioniert universell:

      • Rufen Sie den vollständigen Pfad an
  • Wenn Adb-Dateien auf meinem PATH

    • Diese arbeiten in demselben Ordner, in dem adb installiert ist:

      • Rufen Sie den vollständigen Pfad an
        • .\adb devices
        • .\adb.exe devices
      • adb devices
    • Diese arbeiten universell:

      • adb devices
      • Rufen Sie den vollständigen Pfad an

Für meine zukünftige Referenz- (Kurz gesagt: Wenn es nicht auf Ihrem liegt PATH, müssen Sie den vollständigen Pfad eingeben, damit es funktioniert. Und wenn es auf Ihrem PATHist, können Sie einfach adb devicesden vollständigen Pfad von Adb eingeben.

1
Verwenden Sie "Dot Sourcing" nicht nur "adb.exe-Geräte", wenn Sie sich in Ihrem Pfad befinden oder vollständige Pfade verwenden. "dot sourcing" wird im aktuellen Verzeichnis verwendet, um unerwünschte Ausführung von PS zu verhindern. Möglicherweise müssen Sie den Befehl nicht ändern, damit die Syntax von Powershell akzeptiert wird Jaqueline Vanek vor 6 Jahren 2
PPS verwendet "$ Env: Path", um die Pfadvariable von der Powershell aus zu überprüfen Jaqueline Vanek vor 6 Jahren 1
Kleiner OT-Zusatz: [...] Registry-Hacks zum Hinzufügen von "Open Command Prompt Here" und Entfernen von "Open PowerShell Window Here" sind nicht erforderlich. Wechseln Sie in das neue Einstellungsfenster -> Personalisierung -> Taskleiste -> Deaktivieren Sie "Eingabeaufforderung durch Windows PowerShell ersetzen [...]". flolilolilo vor 6 Jahren 0
Wie von @Jaqueline erwähnt, kann ich bestätigen, dass `adb.exe-Geräte` in demselben Ordner funktionieren, in dem sich die Plattform-Tools befinden. Da ich diesen Ordner jedoch zur Pfadvariablen hinzugefügt habe (kann auch mit $ Env: Path` bestätigt werden), funktioniert derselbe Befehl `adb.exe devices` [universell] (https://imgur.com/3UAKveY). auch. Dies beantwortet meine Frage sehr gut. Vielen Dank! Ich kann jedoch nicht verstehen, dass "_" Dot Sourcing "im aktuellen Verzeichnis ** verwendet wird, um eine unerwünschte Ausführung ** _ zu verhindern. Ja, ich kann auch bestätigen, dass in demselben Ordner `. \ Adb.exe devices` und`. \ Adb devices` funktioniert, jedoch nicht universell. swingcake vor 6 Jahren 0
@Flo Ich möchte die von Ihnen bereitgestellten Informationen korrigieren. Diese Option, auf die Sie sich beziehen, indem Sie `Gehen Sie in das neue Einstellungsfenster -> Personalisierung -> Taskleiste ->, und deaktivieren Sie die Option" Eingabeaufforderung durch Windows PowerShell ersetzen "[...]". Sie ersetzt sie nur [_, wenn Sie mit der rechten Maustaste auf den Start klicken oder wenn Sie Windows-Taste + X_ drücken] (https://imgur.com/Pb8ZsfK). Worüber ich in meinem ursprünglichen Beitrag rede, ist das [Kontextmenü] (https://imgur.com/IXtrau6) Wie auch immer, danke für den Kommentar! :) swingcake vor 6 Jahren 0
@Gawd eigentlich "Dot Sourcing" ist eine andere Sache, meine schlechte. Was ich damit meinte, ist, dass Powershell keine ausführbaren Dateien ohne * expliziten * Pfad ausführt. Für den aktuellen Speicherort bedeutet das Hinzufügen eines "." infront mehr info: "get-help about_Command_Precedence -full" Jaqueline Vanek vor 6 Jahren 0

1 Antwort auf die Frage

1
Ben N

Wenn Sie .\einen Befehl ausführen, fordern Sie PowerShell auf, nur im aktuellen Verzeichnis darauf zu suchen - der Punkt bedeutet "diesen Ordner", genau wie im alten Befehlsprozessor. Wenn sich die Sache, die Sie ausführen möchten, nicht im aktuellen Ordner befindet PATH, schlägt dies fehl, selbst wenn sie sich im Ordner befindet . Der Begriff "Dot-Sourcing" bezieht sich auf die Ausführung von PowerShell-Skripts im aktuellen Bereich und nicht auf den eigenen Bereich. Dies unterscheidet sich vom Ausführen eines Befehls aus dem aktuellen Verzeichnis.

Sie können den Namen des Programms .\eingeben, ohne das Programm irgendwo auszuführen PATH. Beachten Sie jedoch, dass PowerShell erst nach PATHeinem Neustart Änderungen oder Umgebungsvariablen erkennt. Nachdem Sie die Umgebungsvariable angepasst und eine neue PowerShell geöffnet haben, adbreicht es aus, das Programm zu identifizieren, das Sie ausführen möchten, unabhängig von Ihrem aktuellen Verzeichnis.

"bis Sie es neu starten", so bekam es. Nun, wie kann man eine Posh-Session neu starten? Jaqueline Vanek vor 6 Jahren 0
@JaquelineVanek Das Schließen und erneute Öffnen des PowerShell-Fensters sollte ausreichend sein, bei einem Abmelde- / Anmeldezyklus werden jedoch auf jeden Fall alle Umgebungsvariablen aktualisiert. Ben N vor 6 Jahren 0
@BenN Beachten Sie, dass sich adb-Dateien nicht in meinem `PATH` befinden. Wie führe ich nun / _flash_ eine Datei aus, die sich nicht im selben Ordner befindet? Wie gehe ich aus dem adb-Ordner zu dieser Datei _navigate_? swingcake vor 6 Jahren 0
@unixf Sie können `cd` verwenden, um das aktuelle Verzeichnis (ähnlich wie beim alten Befehlsprozessor) zu ändern, oder Sie können einen relativen (z. B.` Unterordner \ program.ext`) oder einen vollständig qualifizierten Pfad (z. B. `C: \ somefolder) eingeben \ subfolder \ program.ext`), um ein Programm auszuführen, das sich an einem anderen Ort als dem aktuellen Verzeichnis befindet. Ben N vor 6 Jahren 0