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

使用az vm run-command的no-wait模式时如何收集输出?

使用az vm run-command异步执行时收集输出的方法

当然可以收集输出。使用--no-wait参数提交异步任务后,Azure会返回每个命令执行的运行命令ID,你可以通过这个ID后续查询对应VM上的执行状态和输出结果。

具体操作步骤:

  1. 异步提交命令:
    执行类似如下命令,添加--no-wait参数,同时记录返回的runCommandId:

    az vm run-command invoke --resource-group <你的资源组> --name <VM名称> --command-id RunShellScript --scripts "<你的脚本内容>" --no-wait
    

    (Windows VM请使用RunPowerShellScript作为命令ID)

  2. 查询执行结果:
    使用记录的runCommandId,执行以下命令获取详细输出:

    az vm run-command show --resource-group <你的资源组> --name <VM名称> --run-command-id <返回的runCommandId>
    

    返回结果中,properties.output字段包含脚本的完整输出:stdOut对应正常输出内容,stdErr对应错误信息。

  3. 批量处理建议:

    • 批量提交异步命令时,将每个VM对应的runCommandId、资源组和VM名存储到本地文件或数据库,方便后续批量查询。
    • 可编写脚本循环查询所有待处理任务,直到状态变为Succeeded或Failed后提取输出。
    • 结合Azure CLI的--query参数可直接提取输出内容,示例:
      az vm run-command show --resource-group <资源组> --name <VM名> --run-command-id <ID> --query "properties.output"
      

注意事项:

  • Azure默认保留运行命令的执行记录90天,在此期间均可查询输出。
  • 若VM处于离线状态,异步命令会进入等待状态,待VM恢复在线后自动执行,后续仍可查询结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:27:05