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

PowerShell脚本检测磁盘剩余空间,按结果控制Jenkins Stage退出状态

Jenkins磁盘空间检查逻辑实现

需求点对应实现方式

  • 筛选F盘检测结果:在WMI查询阶段直接加入过滤规则,跳过无有效容量的空磁盘项(对应测试输出里D、E盘无size值的情况),从根源避免除零异常,命令为Get-WmiObject win32_logicaldisk -Filter "DeviceID='F:' AND Size > 0",可直接返回F盘的有效容量数据。
  • 剩余百分比四舍五入取整:计算磁盘剩余占比时调用内置数学方法,把长小数计算结果转为整数,逻辑为$freePercent = [math]::Round(($diskInfo.FreeSpace / $diskInfo.Size)*100, 0),第二个参数0表示无小数位,严格按四舍五入规则计算。
  • 阈值比对:提前将固定阈值定义为PowerShell变量,例如$threshold = 80,直接对比计算得到的$freePercent和阈值的大小关系即可。
  • Jenkins步骤状态联动:bat步骤会自动捕获调用进程的退出码,退出码为0时标记Stage成功,非0时自动标记失败。只需在判断到不满足正常运行条件时执行exit 1,正常场景执行exit 0即可完成状态联动,无需额外的流程控制语句。

替换后的流水线完整配置

将原有bat块内零散的PowerShell语句替换为完整的检查逻辑,最终配置如下:

stage ('test') {
    agent {
        node {
            label "test"
            customWorkspace "F:\\app"
        }
    }
    steps {
        script {
            bat """
                f:
                cd \\app
                python somescript.py
                python otherscript.py
                powershell -Command "
                    \$diskInfo = Get-WmiObject win32_logicaldisk -Filter \"DeviceID='F:' AND Size > 0\";
                    \$freePercent = [math]::Round((\$diskInfo.FreeSpace / \$diskInfo.Size)*100, 0);
                    Write-Host \"F盘当前剩余空间占比:\${freePercent}%, 设定阈值:80%\";
                    if (\$freePercent -gt 80) {
                        Write-Host \"当前剩余占比超过阈值,任务标记为失败\";
                        exit 1
                    }
                    Write-Host \"当前剩余占比未超过阈值,任务正常退出\";
                    exit 0
                "
            """
        }
    }
}

配置注意事项:bat块嵌套PowerShell命令时,PowerShell内部的自定义变量前需要加转义符\$,避免Groovy或bat层提前将变量解析为空字符串。
可根据实际业务判断逻辑调整条件方向,如需实现“剩余占比低于20%即报错”的常规磁盘巡检逻辑,只需将判断条件修改为if (\$freePercent -lt 20)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 06:15:03