Invoke-Expression 执行外部程序和 shell 脚本

Invoke-Expression executing external program and shell script

我正在尝试使用 powershell 获取连接的 android 设备的根文件夹,当我在 cmd 中为此尝试标准命令时,它按预期工作并且 returns 路径.

CMD

adb -s <DeviceId> shell echo $EXTERNAL_STORAGE

当我尝试在 powershell 中复制此命令时,我什么也没得到,甚至连错误都没有。

PowerShell

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

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

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

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

也许:

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

只需指定命令as-is。

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