powershell 是 windows 系统中执行磁盘读写性能基准记录的高效工具,无需安装第三方软件即可获取真实、可复现的量化结果。它既支持快速采样,也支持脚本化长期记录,适用于日常排查、性能归档或系统升级前后的对比验证。
一、使用 winsat 命令执行基础磁盘基准测试
winsat(Windows System Assessment Tool)是 Windows 内置的权威评估工具,能对指定磁盘进行读写吞吐量、响应时间等维度的综合打分,并输出原始速率数据(单位 MB/s):
- 以管理员身份打开 PowerShell(右键“开始”按钮 → “Windows Terminal(管理员)”或“PowerShell(管理员)”)
- 测试系统盘(通常为 C:):输入 winsat disk 并回车
- 测试其他分区(如 D:):输入 winsat disk -drive d
- 测试完成后,结果默认保存在 C:\Windows\Performance\WinSAT\DataStore\ 下的 XML 文件中,也可直接在控制台末尾查看“Disk”项下的“Score”及“Read/Write MBps”数值
二、用 Get-Counter 获取实时 I/O 性能计数器数据
PowerShell 可直接调用 Windows 性能计数器(PerfMon),采集每秒读写字节数、平均队列长度、响应时间等底层指标,刷新间隔可控,适合短时监控:
- 查询当前磁盘读写速率(每秒字节数):
Get-Counter '\PhysicalDisk(*)\Disk Read Bytes/sec', '\PhysicalDisk(*)\Disk Write Bytes/sec' -SampleInterval 1 -MaxSamples 5 - 将结果转换为 MB/s 显示(更直观):
(Get-Counter '\PhysicalDisk(0 C:)\Disk Read Bytes/sec').CounterSamples.CookedValue / 1MB | ForEach-Object { [math]::Round($_, 1) } - 注意:物理磁盘实例名需确认,常见如 PhysicalDisk(0 C:) 或 PhysicalDisk(_Total);可用 Get-Counter -ListSet PhysicalDisk | Select-Object CounterSetName, Paths 查看全部可用实例
三、编写脚本实现自动记录与导出
结合 Get-Counter 和 Export-Csv,可构建轻量级日志脚本,按需记录多维指标并生成 CSV 文件供后续分析:
- 示例命令(每2秒采集一次,共30次,记录读写速率与平均响应时间):
1..30 | ForEach-Object {
$t = Get-Date -Format "HH:mm:ss";
$r = (Get-Counter '\PhysicalDisk(0 C:)\Disk Read Bytes/sec').CounterSamples.CookedValue / 1MB;
$w = (Get-Counter '\PhysicalDisk(0 C:)\Disk Write Bytes/sec').CounterSamples.CookedValue / 1MB;
$lat = (Get-Counter '\PhysicalDisk(0 C:)\Avg. Disk sec/Read').CounterSamples.CookedValue;
[PSCustomObject]@{Time=$t; ReadMBps=[math]::Round($r,2); WriteMBps=[math]::Round($w,2); AvgReadLatency=$lat} } | Export-Csv "disk_log_$(Get-Date -Format 'yyyyMMdd_HHmm').csv" -NoTypeInformation - 该脚本会生成带时间戳的 CSV 文件,包含每行采样时刻的读写速率(MB/s)与平均读取延迟(秒),便于用 Excel 或 Python 绘图分析趋势
四、补充建议与注意事项
PowerShell 基准记录强调准确性与可重复性,实际使用中需注意:
- 所有命令均需在管理员权限下运行,否则部分计数器可能无权限访问或返回零值
- 测试前建议关闭大型后台任务(如 Windows 更新、杀毒扫描、OneDrive 同步),避免干扰结果
- SSD 用户可额外检查 TRIM 状态:fsutil behavior query disablelastaccess 和 Optimize-Volume -DriveLetter C -Defrag -Verbose 辅助判断优化状态
- 若需更高精度压力测试(如模拟数据库负载),仍推荐搭配 DiskSpd(微软官方开源工具),PowerShell 可用于自动化启动与结果解析



















