You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中获取并使用ADB命令的返回码与执行结果

PowerShell 正确获取ADB命令返回码解决方案

核心问题原因

你之前测试用的adb shell "pm uninstall com.google.android.apps.photos; echo $?"命令异常,是因为双引号包裹的内容会先被PowerShell解析,其中的$?会被替换为上一条PowerShell命令的执行状态,而非传递到安卓系统shell中获取卸载命令的返回值,所以永远返回True。

两种可靠的返回码获取方案

方案1:使用$LASTEXITCODE原生变量

PowerShell的$LASTEXITCODE专门用于存储外部可执行程序(如adb.exe)的退出码:adb命令执行成功返回0,执行失败返回非0值,直接判断该变量即可。
示例代码:

# 执行卸载命令
adb uninstall com.google.android.apps.photos
# 执行结果判断
if ($LASTEXITCODE -eq 0) {
    Write-Host "应用卸载成功"
} else {
    Write-Host "应用卸载失败,执行禁用操作"
    adb shell pm disable-user --user 0 com.google.android.apps.photos
}

方案2:获取adb shell内部命令返回值

如果需要直接读取安卓shell中单条命令的执行结果,用单引号包裹shell指令,避免PowerShell提前解析变量:

# 单引号包裹指令,$?会传递到安卓shell执行
$uninstallResult = adb shell 'pm uninstall com.google.android.apps.photos; echo $?'
# 判断返回结果的最后一行(即echo $?的输出)是否为0
if ($uninstallResult[-1] -eq 0) {
    Write-Host "卸载成功"
} else {
    Write-Host "卸载失败,错误信息:$($uninstallResult[0])"
}

完整批量卸载/禁用预装应用脚本实现

按照你需要的执行逻辑,完整脚本如下:

# 定义待处理的目标应用列表
$targetApps = @(
    "com.google.android.apps.photos",
    "com.example.bloatware.app1",
    "com.other.preinstall.app2"
    # 在此处添加其他目标应用包名
)

# 遍历处理所有应用
foreach ($app in $targetApps) {
    Write-Host "`n当前处理应用:$app"
    # 第一步:强制停止应用
    adb shell am force-stop $app
    if ($LASTEXITCODE -ne 0) {
        Write-Host "强制停止失败,尝试杀死应用进程"
        adb shell am kill $app
    }
    # 第二步:尝试卸载应用
    adb uninstall $app
    if ($LASTEXITCODE -eq 0) {
        Write-Host "应用 $app 卸载成功,跳过后续步骤"
        continue
    }
    # 第三步:卸载失败则尝试禁用
    Write-Host "应用 $app 卸载失败,尝试为用户0禁用"
    adb shell pm disable-user --user 0 $app
    if ($LASTEXITCODE -eq 0) {
        Write-Host "应用 $app 禁用成功"
    } else {
        Write-Host "应用 $app 禁用失败,需手动处理"
    }
}

注意事项

  1. 执行脚本前需先运行adb devices确认设备已正常连接,且已开启USB调试并授权当前电脑
  2. 部分系统核心预装应用受系统保护,无法通过adb卸载或禁用,属于正常现象
  3. 操作前请确认目标应用的作用,避免误删核心组件导致设备功能异常或变砖

内容的提问来源于stack exchange,提问作者tetratheta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 08:36:04