powershell 是 windows 下高效核查存储配置的工具,需组合 get-disk、get-volume、get-storagepool、get-virtualdisk、get-iscsisession 等 cmdlet 进行健康、容量、冗余、路径及映射状态检查,并导出结构化报告。
powershell 是 windows 环境下执行存储配置核查的高效工具,尤其适合批量检查本地磁盘、卷、存储池、iscsi 连接、多路径(mpio)状态及 storage spaces 配置。关键在于选用正确的 cmdlet 并组合逻辑判断,而非仅罗列命令。
核查本地磁盘与卷基本信息
使用 Get-Disk 和 Get-Volume 获取物理磁盘和逻辑卷的核心状态,重点关注健康状态、分配状态、文件系统类型和剩余空间。
- Get-Disk | Where-Object {$_.OperationalStatus -ne 'Online' -or $_.HealthStatus -ne 'Healthy'} —— 快速识别异常磁盘
- Get-Volume | Where-Object {$_.SizeRemaining -lt ($_.Size * 0.1)} | Select-Object DriveLetter,FileSystemLabel,@{n='FreePct';e={[math]::Round($_.SizeRemaining/$_.Size*100,1)}} —— 筛选剩余空间低于 10% 的卷,并计算百分比
- 搭配 Get-Partition 可验证分区对齐(
Offset % 4096 -eq 0)是否符合 SSD/高性能存储最佳实践
验证存储池与虚拟磁盘(Storage Spaces)
若使用 Storage Spaces,需逐层确认:存储池可用性 → 虚拟磁盘状态 → 关联卷挂载情况。
- Get-StoragePool | Where-Object {$_.HealthStatus -ne 'Healthy' -or $_.OperationalStatus -ne 'OK'} —— 检查池级健康
- Get-VirtualDisk | Select-Object FriendlyName,HealthStatus,OperationalStatus,ResiliencySettingName,Size,AllocatedSize —— 查看虚拟磁盘冗余类型(如 Mirror、Parity)、容量分配是否合理
- Get-VirtualDisk | Get-Disk | Get-Partition | Get-Volume —— 追踪从虚拟磁盘到实际卷的映射链路,避免“有盘无卷”或“有卷无盘”错配
检查 iSCSI 与多路径(MPIO)配置
对于 SAN 接入场景,需确认会话活跃性、目标可达性及路径冗余是否生效。
- Get-IscsiSession | Where-Object {$_.ConnectionStatus -ne 'Connected'} —— 定位断连会话
- Get-IscsiTargetPortal | ForEach-Object { Test-NetConnection $_.TargetPortalAddress -Port 3260 } —— 测试门户端口连通性
- Get-MSDSMGlobalDefaultLoadBalancePolicy + Get-MSDSMGlobalCurrentLoadBalancePolicy —— 验证 MPIO 负载均衡策略是否启用(如 RoundRobin)
- Get-MSDSMGlobalDefaultFailoverPolicy —— 确认故障转移行为(如 FailoverOnly)是否符合业务要求
生成结构化核查报告
将结果导出为 CSV 或 HTML,便于归档与比对。建议按模块分组,添加时间戳和主机标识。
- 示例导出命令:Get-Disk | Select-Object Number, FriendlyName, HealthStatus, OperationalStatus, Size | Export-Csv -Path "C:\Reports\DiskCheck_$(Get-Date -Format 'yyyyMMdd_HHmm').csv" -NoTypeInformation
- 用 ConvertTo-Html 生成带样式的简易网页报告,适合邮件发送;配合 -Fragment 可拼接多个模块
- 加入 if/else 判断输出“PASS/FAIL”摘要行,提升可读性(如:[FAIL] 发现 2 块离线磁盘)











