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

PowerShell中如何让PSCustomObject输出多块物理磁盘的正确信息

PowerShell多磁盘信息导出脚本修复方案

修复后完整代码

# 初始化磁盘信息结果数组
$DiskResults = @()

# 遍历所有识别到的物理磁盘
foreach ($singleDisk in Get-PhysicalDisk) {
    # 匹配当前磁盘对应的可靠性计数器,无对应数据时忽略报错
    $diskReliability = Get-Disk -Number $singleDisk.DeviceId | Get-StorageReliabilityCounter -ErrorAction SilentlyContinue

    # 生成单块磁盘的信息对象
    $currentDiskInfo = [PSCustomObject]@{
        'Device ID' = $singleDisk.DeviceID
        'Model' = $singleDisk.Model
        'Serial Number' = $singleDisk.SerialNumber
        'Connector Type' = $singleDisk.BusType
        'Disk Type' = $singleDisk.MediaType
        'Health Status' = $singleDisk.HealthStatus
        'Size' = '{0:n0} GB' -f ($singleDisk.Size / 1GB)
        'PowerOnHours' = $diskReliability.PowerOnHours
        'Read Errors' = $diskReliability.ReadErrorsUncorrected
        'Wear' = $diskReliability.Wear
        'Temperature' = $diskReliability.Temperature
    }

    $DiskResults += $currentDiskInfo
}

# 转换为JSON格式,Depth参数避免属性截断
$DiskResults | ConvertTo-Json -Depth 3

核心修改说明

  • 新增循环遍历逻辑,逐块处理物理磁盘,避免多磁盘场景下整体操作数组触发运算错误
  • 单块磁盘单独匹配对应的可靠性计数器,避免多磁盘属性匹配错乱
  • 新增-ErrorAction SilentlyContinue参数,处理U盘等无可靠性计数器的设备时不会触发额外报错,无数据的属性自动返回null,符合预期输出
  • 转JSON时新增-Depth 3参数,避免嵌套属性被截断

格式调整说明

默认输出为标准JSON数组格式,会在外层包裹[],如果你需要和示例完全一致的无外层括号格式,可以将最后一行替换为:

($DiskResults | ConvertTo-Json -Depth 3).Trim('[]').Trim()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:15:07