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

Jenkins在Azure Windows 10代理执行PowerShell脚本时RemoteException的排查与解决

解决Jenkins Azure Windows代理执行PowerShell脚本时的启动盘序列号警告

背景与原因

当使用Jenkins流水线的powershell指令执行外部.ps1文件时,Jenkins的Durable Task插件会尝试读取Windows启动盘的序列号,用于生成任务的持久化标识。但Azure虚拟机的托管磁盘默认不暴露该序列号,因此触发了这个非致命警告——仅会在日志中产生冗余信息,不会导致脚本执行失败。

解决方案

1. 禁用磁盘序列号检测(推荐)

通过给Jenkins Windows代理添加系统属性,直接跳过该检测步骤:

  • 命令行启动代理:修改jenkins-agent.exe的启动命令,添加参数:
    jenkins-agent.exe -Dhudson.os.windows.hideDriveSerialNumber=true -url <Jenkins服务器地址> <代理密钥> <代理名称>
    
  • 服务运行代理:编辑代理安装目录下的jenkins.xml,在<arguments>标签中插入上述参数:
    <arguments>-Xrs -Dhudson.os.windows.hideDriveSerialNumber=true -jar "%BASE%\agent.jar" -url <Jenkins服务器地址> <代理密钥> <代理名称></arguments>
    

修改完成后重启Jenkins代理,警告将不再出现。

2. 过滤日志中的警告信息

如果无法修改代理配置,可以在流水线指令中过滤目标警告:
将原指令:

powershell "./path/to/my/script.ps1"

替换为:

powershell "& './path/to/my/script.ps1' 2>&1 | Where-Object { $_ -notmatch 'Unable to retrieve boot drive serial number' }"

该命令会将错误输出合并到标准输出,并过滤掉包含警告文本的行,同时保留脚本的正常日志内容。

3. 为Azure磁盘添加序列号(可选)

若需要保留磁盘序列号检测功能,可手动为Azure托管磁盘设置序列号:

  1. 停止目标Azure虚拟机
  2. 进入Azure门户的磁盘详情页,点击「配置」选项卡
  3. 在「磁盘序列号」字段中输入自定义字符串(如AZURE-VM-DISK-001)
  4. 保存配置并重启虚拟机
    此方法需要停机操作,适合有维护窗口的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:03:13