推荐用 get-volume 命令监控 windows 服务器磁盘空间,它精准筛选本地固定盘、自动排除光驱/u盘/网络驱动器,配合 where-object 过滤和 select-object 格式化输出,再设阈值触发警告并定时执行日志记录。
直接用 powershell 监控 windows 服务器剩余磁盘空间,核心是定期获取固定磁盘的可用容量,并结合阈值判断是否告警。不需要装额外软件,系统自带命令就能完成,关键是选对命令、加好过滤、设好逻辑。
用 Get-Volume 精准查本地固定盘
这是最推荐的首选方法,专为卷管理设计,能自动排除光驱、U盘、网络驱动器等干扰项,输出字段清晰,支持健康状态判断。
- 只查有盘符的本地硬盘: Get-Volume | Where-Object {$_.DriveType -eq 'Fixed' -and $_.DriveLetter}
- 显示关键字段(盘符、剩余GB、总GB、使用率): Get-Volume | Where-Object {$_.DriveType -eq 'Fixed' -and $_.DriveLetter} | Select-Object DriveLetter, @{Name="Free(GB)";Expression={[math]::Round($_.SizeRemaining/1GB,2)}}, @{Name="Total(GB)";Expression={[math]::Round($_.Size/1GB,2)}}, @{Name="Used(%)";Expression={[math]::Round((($_.Size - $_.SizeRemaining)/$_.Size)*100,1)}}
- 若只需C盘实时数据,可简化为:Get-Volume -DriveLetter C | Select-Object DriveLetter, SizeRemaining, Size
设置低空间阈值并触发提醒
监控不是只看数字,而是当剩余空间低于预设值(比如10%或20GB)时主动反馈。可用简单脚本实现:
- 定义阈值:$minFreePercent = 10(表示低于10%即告警)
- 遍历所有固定盘,计算使用率:$usedPercent = [math]::Round((( $vol.Size - $vol.SizeRemaining ) / $vol.Size) * 100, 1)
- 满足条件就输出警告:if ($usedPercent -gt (100 - $minFreePercent)) { Write-Warning "盘符 $($vol.DriveLetter): 使用率 $usedPercent%,剩余仅 $([math]::Round($vol.SizeRemaining/1GB,2)) GB" }
做成定时任务自动运行
把检查逻辑保存为 .ps1 文件(如 Check-DiskSpace.ps1),再通过 Windows 任务计划程序每30分钟执行一次:
- 在任务计划中新建基本任务 → 触发器设为“每天,重复任务间隔30分钟” → 操作设为“启动程序”,程序填 powershell.exe,参数填 -ExecutionPolicy Bypass -File "C:\Scripts\Check-DiskSpace.ps1"
- 脚本末尾可加 | Out-File -FilePath "C:\Logs\DiskReport.log" -Append -Encoding UTF8 把结果追加写入日志
- 如需邮件通知,可在告警分支里调用 Send-MailMessage,注意提前配置 SMTP 凭据
备选方案:兼容旧系统的 WMI 查询
若服务器是 Windows Server 2008 或更早版本,Get-Volume 可能不可用,此时改用 WMI 更稳妥:
- 查所有本地物理磁盘:Get-WmiObject Win32_Volume -Filter "DriveType=3 AND DriveLetter IS NOT NULL"
- 返回字节值,需手动换算:FreeSpace / 1GB 得到GB数,(Capacity - FreeSpace) / Capacity * 100 得到使用率
- 该方法在 PowerShell 2.0 环境下也完全可用,适合长期稳定运行的老系统











