# 设置输出文件名 $outputFile = "top.log" # 设置循环间隔(秒) $interval = 10 # 清空或创建输出文件 Clear-Content -Path $outputFile while ($true) { # 运行 adb shell top 命令,并筛选带有 oversea 的进程名 $topOutput = & adb shell "top -b -n 1" | Select-String "oversea" # 添加系统时间到每一行,并处理内存单位转换 $topOutput | ForEach-Object { $line = $_.ToString() $currentTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss" # 匹配并转换浮点数形式的内存单位 if ($line -match "\s+([0-9]*\.[0-9]*)g\s+") { $memoryInGB = [float]$matches[1] $memoryInMB = $memoryInGB * 1024 $line = $line -replace "\s+[0-9]*\.[0-9]*g\s+", " $memoryInMB`"M`" " } # 匹配并处理整数形式的内存单位 if ($line -match "\s+([0-9]*)g\s+") { $memoryInGB = [int]$matches[1] $memoryInMB = $memoryInGB * 1024 $line = $line -replace "\s+[0-9]*g\s+", " $memoryInMB`"M`" " } "$currentTime $line" } | Out-File -FilePath $outputFile -Encoding UTF8 -Append # 等待指定的间隔时间 Start-Sleep -Seconds $interval }