【问题标题】:Invoke-Expression executing external program and shell scriptInvoke-Expression 执行外部程序和 shell 脚本
【发布时间】:2021-01-16 05:59:05
【问题描述】:

我正在尝试使用 powershell 获取已连接的 android 设备的根文件夹,当我在 cmd 中尝试执行此操作的标准命令时,它会按预期工作并返回路径。

CMD

adb -s <DeviceId> shell echo $EXTERNAL_STORAGE

当我尝试在 powershell 中复制此命令时,我什至没有收到任何错误消息。

PowerShell

Invoke-Expression -Command "adb -s <DeviceId> shell echo $EXTERNAL_STORAGE" | Out-String

我已经搜索了一些解决方案,并找到了一种使其在 powershell 中工作的方法,但我想知道它们是否是另一种无需在 powershell 中调用 cmd.exe 即可获得相同结果的方法

可以使用 PowerShell,但看起来很笨拙

(cmd.exe /c adb -s $Id shell echo `$EXTERNAL_STORAGE) | Out-String

【问题讨论】:

标签: powershell shell cmd adb


【解决方案1】:

只需按原样指定命令。

$Result = & adb -s $Id shell echo `$EXTERNAL_STORAGE
Write-Host $Result

【讨论】:

    【解决方案2】:

    也许:

    $Result = & adb "-s $Id shell echo `$EXTERNAL_STORAGE" | Out-String
    

    【讨论】:

    • 那行不通,adb.exe: -s requires an argument 并在 adb 导致 &amp;: The term 'adb -s $Id shell echo ' is not recognized as the name of a cmdlet, function, script file, or operable program. 之前移动 "
    • 尝试给出 adb.exe 的完整路径,例如 & 'C:\adb\adb.exe'
    猜你喜欢
    • 2011-05-21
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2013-10-16
    相关资源
    最近更新 更多