Android adb不在powershell中工作,但adb.exe可以工作

Android adb不在powershell中工作,但adb.exe可以工作,android,powershell,adb,command-precedence,Android,Powershell,Adb,Command Precedence,在Powershell中键入“adb设备””时,它会返回一个提示,询问“如何打开此文件””。 但是,如果我使用“adb.exe设备”,它会工作并提供设备列表 因为我有很多脚本都是用adb而不是adb.exe编写的,有没有办法解决这个问题 在cmd中,键入adb设备也可以工作。但是脚本都是基于PS的。因此,在powershell中修复此问题将非常有帮助。谢谢。正如您所确认的,问题是位于C:\WINDOWS\system32目录中的一个名为adb(无文件扩展名)的无关的空文件 由于PATH环境变量(

在Powershell中键入“
adb设备”
”时,它会返回一个提示,询问“
如何打开此文件”
”。 但是,如果我使用“
adb.exe设备
”,它会工作并提供设备列表

因为我有很多脚本都是用adb而不是adb.exe编写的,有没有办法解决这个问题


在cmd中,键入adb设备也可以工作。但是脚本都是基于PS的。因此,在powershell中修复此问题将非常有帮助。谢谢。

正如您所确认的,问题是位于
C:\WINDOWS\system32
目录中的一个名为
adb
(无文件扩展名)的无关的空文件

由于
PATH
环境变量(通常)在所需目标可执行文件(
adb.exe
)所在的目录
C:\Program Files(x86)\Intel\Platform\…
之前列出
C:\WINDOWS\system32
,PowerShell试图执行
C:\WINDOWS\system32\adb
,作为一个无扩展名的文件,它触发了您看到的GUI对话框

删除无关的
C:\WINDOWS\system32\adb
文件解决了您的问题

Get命令-All adb
帮助发现了问题:它按优先级顺序列出了PowerShell已知的名为
adb
的命令的所有形式,以及有关其类型和位置的信息;也就是说,首先列出的是实际调用的有效命令

请继续阅读背景信息


  • 与所有Shell一样,如果命令仅使用(文件)名(而不是文件路径),PowerShell将按顺序在
    path
    环境变量(可作为PowerShell中的
    $env:path
    访问)中列出的目录中查找可执行文件

    • 也就是说,如果您提交了一个命令名为adb的命令行,PowerShell在首先查找该名称的内部命令(别名、函数或cmdlet)后,会在
      $env:PATH
      中列出的目录中查找基名称为adb的可执行文件,并调用它找到的第一个文件

    • 在Windows上,可执行文件的文件扩展名列在环境变量(
      $env:PATHEXT
      )中;同样,这里列出的扩展也是按顺序考虑的。相反,在类Unix平台上,决定文件是否可执行的仅是文件模式(权限位)

  • 但是,与其他shell不同,PowerShell不仅仅在
    $env:PATH
    中查找可执行文件,它会考虑与给定可执行文件的命令名完全匹配的任何文件,并实际上将此类文件传递给cmdlet
    ,后者会触发对该文件的默认GUI shell操作,相当于在Windows上的文件资源管理器中双击文档

    • 中讨论了这种有问题的行为,其中建议仅将真正的可执行文件视为命令

正如您所确认的,问题是位于
C:\WINDOWS\system32
目录中的一个名为
adb
(无文件扩展名)的无关的空文件

由于
PATH
环境变量(通常)在所需目标可执行文件(
adb.exe
)所在的目录
C:\Program Files(x86)\Intel\Platform\…
之前列出
C:\WINDOWS\system32
,PowerShell试图执行
C:\WINDOWS\system32\adb
,作为一个无扩展名的文件,它触发了您看到的GUI对话框

删除无关的
C:\WINDOWS\system32\adb
文件解决了您的问题

Get命令-All adb
帮助发现了问题:它按优先级顺序列出了PowerShell已知的名为
adb
的命令的所有形式,以及有关其类型和位置的信息;也就是说,首先列出的是实际调用的有效命令

请继续阅读背景信息


  • 与所有Shell一样,如果命令仅使用(文件)名(而不是文件路径),PowerShell将按顺序在
    path
    环境变量(可作为PowerShell中的
    $env:path
    访问)中列出的目录中查找可执行文件

    • 也就是说,如果您提交了一个命令名为adb的命令行,PowerShell在首先查找该名称的内部命令(别名、函数或cmdlet)后,会在
      $env:PATH
      中列出的目录中查找基名称为adb的可执行文件,并调用它找到的第一个文件

    • 在Windows上,可执行文件的文件扩展名列在环境变量(
      $env:PATHEXT
      )中;同样,这里列出的扩展也是按顺序考虑的。相反,在类Unix平台上,决定文件是否可执行的仅是文件模式(权限位)

  • 但是,与其他shell不同,PowerShell不仅仅在
    $env:PATH
    中查找可执行文件,它会考虑与给定可执行文件的命令名完全匹配的任何文件,并实际上将此类文件传递给cmdlet
    ,后者会触发对该文件的默认GUI shell操作,相当于在Windows上的文件资源管理器中双击文档

    • 中讨论了这种有问题的行为,其中建议仅将真正的可执行文件视为命令