将 powershell 变量值传递给 adb shell 命令

问题描述 投票:0回答:2

祝大家有美好的一天。在谷歌搜索并尝试各种解决方案之后,我有点陷入以下简单(至少看起来如此)的任务: 我有一个 powershell 变量,说:

$simpleString = "Hello World and stuff"

我正在通过 ADB 测试 Android 应用程序,我需要将此变量的值作为字符串传递:

.\adb.exe shell input text "$simpleString"

我收到错误

。db.exe:错误:命令参数无效:文本

随后提醒如何使用adb“输入”命令。

更新: 我还尝试了以下解决方法:

$myCmd = Write-output "adb.exe shell input text `"$simpleString`""

从而为 CMD 构建有效的命令,然后通过以下方式运行它:

cmd /c $myCmd

但我仍然遇到同样的问题

任何帮助将不胜感激,谢谢。

powershell variables adb
2个回答
1
投票

好的,经过一些额外的尝试和错误,我找到了一个适合我的解决方案(使用反引号、单引号并将命令“包装”到另一个变量中:

$myCmd = Write-output "adb.exe shell input text `'$simpleString`'"
& cmd /c $myCmd

拼写出第一个命令以便于理解:

$myCmd = 写入输出{双引号}adb.exe shell 输入文本{反勾}{单引号}$simpleString{反勾}{单引号}{双引号}


0
投票

我也遇到了这个问题,看了这篇文章后,我最终想出了一个更简单的答案。 对我来说,问题是将双引号 (") 传递给 adb shell 命令以包含短信的消息字符串。经过多次尝试和错误,我意识到 adb shell 需要反斜杠字符 () 来转义双引号,但调用powershell 脚本需要反引号 (`) 来转义反斜杠和双引号。 所以我的脚本代码如下所示:-

        $messy = "`\`"Dear $Name , your appointment with XXX is at: " + ($_.Start.tostring("dd/MM/yyyy HH:mm")) + "`\`""
        adb.exe shell service call isms 5 i32 1 s16 com.android.mms s16 null s16 09090909090 s16 null s16 $messy s16 null s16 null i32 0 i64 0

上面字符串 $messy 中的反引号将被 powershell 去掉,留下 " 传递给 adb shell,然后 adb shell 会去掉 \,留下消息字符串周围的引号。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.