powershell磁盘空间检查脚本核心是获取磁盘信息、设阈值并触发提醒;推荐用get-psdrive查本地驱动器,空闲率低于10%或绝对值小于5gb时预警,兼顾小容量盘误报。
在 windows 中用 powershell 编写磁盘空间检查脚本非常简单,核心是获取磁盘使用信息、设定阈值、触发提醒(如弹窗或邮件),并可设为定时任务自动运行。
获取磁盘空间信息
PowerShell 内置 Get-PSDrive 和 Get-WmiObject(或更新的 Get-CimInstance)都能查磁盘。推荐用 Get-PSDrive 快速查看本地驱动器(如 C:、D:),它返回 Free(空闲字节)和 Used 字段:
Get-PSDrive -PSProvider FileSystem | Select-Object Name, Used, Free, @{Name='FreePercent';Expression={[math]::Round($_.Free / ($_.Used + $_.Free) * 100, 2)}}- 注意:
Get-PSDrive默认只显示已映射且有权限访问的驱动器;若需查所有物理卷(含未分配盘符的),改用Get-CimInstance Win32_Volume
设定预警阈值并判断
把空闲空间低于某个百分比(比如 10%)或绝对值(比如小于 5GB)作为触发条件。建议同时用百分比+绝对值双重判断,避免小容量盘误报:
- 例如:空闲空间 且
- 用
if判断:if ($freePercent -lt 10 -and $freeBytes -lt 5GB) { ... } - 变量中单位可直接写
5GB、100MB,PowerShell 自动换算成字节
发送预警通知
最常用的是弹窗提示(适合本地值守场景)或发邮件(适合服务器无人值守):
- 弹窗:
[System.Windows.Forms.MessageBox]::Show("C: 剩余空间不足!仅剩 $freePercent%","磁盘预警", "OK", "Warning")(需先加载Add-Type -AssemblyName System.Windows.Forms) - 邮件:
Send-MailMessage配合企业邮箱 SMTP(如 Outlook/Exchange)或第三方服务(如 Gmail 需开启 App Password) - 日志记录:
"$(Get-Date): C: low disk space ($freePercent%)" | Out-File -Append -FilePath "C:\logs\diskcheck.log"
部署为定时任务自动运行
保存脚本为 Check-DiskSpace.ps1 后,用 Windows 任务计划程序定期执行:
- 右键“开始”→“任务计划程序”,创建基本任务,触发器设为每天/每小时
- 操作中“启动程序”填
powershell.exe,参数写:-ExecutionPolicy Bypass -File "C:\Scripts\Check-DiskSpace.ps1" - 关键:必须加
-ExecutionPolicy Bypass,否则因策略限制无法运行本地脚本 - 建议勾选“不管用户是否登录都要运行”,并启用“不存储密码时只运行有限功能”(若需交互式弹窗,则选“只在用户登录时运行”)
脚本逻辑清晰、无需额外安装,只需基础 PowerShell 知识。重点在于阈值设置合理、通知方式匹配使用场景、执行策略配置正确。











