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

使用Azure默认DevOps agent连接Windows Azure VM上传exe并启停服务咨询

解决方案

核心实现思路

直接使用Azure平台原生的虚拟机运行命令(Run Command) 功能实现操作,该功能通过Azure管控平面下发指令,完全不需要VM开放RDP/SSH端口,也不需要部署自定义DevOps代理,仅用默认微软托管代理即可完成所有操作。

前置配置要求

  • DevOps中配置的Azure服务连接,需要具备目标VM所属资源组的虚拟机参与者权限
  • 提前将构建生成的exe产物上传到Azure存储账户的Blob容器,生成带SAS令牌的临时下载链接(建议设置10分钟内有效期即可,满足VM临时下载需求)

Pipeline具体执行步骤

1. 执行Azure CLI登录

直接使用DevOps内置的Azure CLI任务,关联你提前配置好的Azure服务连接即可,默认托管代理已预装Azure CLI,无需额外安装。

2. 停止VM上的目标服务

执行以下Azure CLI命令调用Run Command下发停止服务指令:

az vm run-command invoke `
  --resource-group <替换为你的VM资源组名称> `
  --name <替换为你的VM名称> `
  --command-id RunPowerShellScript `
  --scripts "Stop-Service -Name <替换为目标服务名称> -Force"

3. 上传新的服务文件到VM

调用Run Command让VM直接从存储Blob下载新的exe文件到服务部署目录:

az vm run-command invoke `
  --resource-group <替换为你的VM资源组名称> `
  --name <替换为你的VM名称> `
  --command-id RunPowerShellScript `
  --scripts "Invoke-WebRequest -Uri '<替换为你的exe文件SAS下载链接>' -OutFile '<替换为VM上服务部署目录路径\服务名.exe>' -UseBasicParsing"

4. 启动更新后的服务

再次调用Run Command下发启动服务指令:

az vm run-command invoke `
  --resource-group <替换为你的VM资源组名称> `
  --name <替换为你的VM名称> `
  --command-id RunPowerShellScript `
  --scripts "Start-Service -Name <替换为目标服务名称>"

多文件更新适配

如果需要更新多个服务文件,可先在管道中用az storage blob upload-batch命令把所有构建产物批量上传到存储Blob容器,再在Run Command的PowerShell脚本中批量下载所有文件到VM指定目录即可。


内容的提问来源于stack exchange,提问作者M. Carlo Bramini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:03