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

如何在PowerShell中将磁盘信息添加到指定CSV列

把PowerShell获取的磁盘信息批量添加到指定CSV列的方法

核心思路

先把原始CSV读进内存,再把磁盘信息转成以盘符为键的哈希表(方便快速匹配),最后遍历CSV的每一行,把对应磁盘的信息填充到指定列里,最后导出成新CSV。

具体操作步骤

  1. 导入原始CSV文件
    用Import-Csv命令把你的原始CSV读进来,示例代码:

    $originalCsv = Import-Csv -Path "C:\你的原始文件路径\原始.csv"
    
  2. 整理磁盘信息为哈希表
    把你提供的磁盘查询代码调整为哈希表格式,便于快速匹配盘符:

    # 获取磁盘信息并转为哈希表,键是盘符(如C:)
    $diskHash = @{}
    Get-WmiObject win32_logicaldisk | ForEach-Object {
        $diskHash[$_.DeviceID] = [PSCustomObject]@{
            卷名 = $_.VolumeName
            磁盘容量_GB = [math]::Round($_.Size/1GB,2)
            剩余空间_GB = [math]::Round($_.FreeSpace/1GB,2)
        }
    }
    

    这里的键名(比如"卷名")可以根据你预期CSV的列名自行修改。

  3. 遍历CSV行,填充磁盘信息
    假设你的原始CSV里有一列叫磁盘盘符(用来和DeviceID匹配),要把磁盘信息填充到卷名、总容量、剩余空间这几个列里,代码如下:

    $updatedCsv = $originalCsv | ForEach-Object {
        # 取出当前行的盘符
        $driveLetter = $_.磁盘盘符
        # 从哈希表里找对应磁盘信息
        $diskInfo = $diskHash[$driveLetter]
        
        # 填充指定列,如果没找到匹配的盘符就留空
        $_.卷名 = if ($diskInfo) { $diskInfo.卷名 } else { "" }
        $_.总容量 = if ($diskInfo) { $diskInfo.磁盘容量_GB } else { "" }
        $_.剩余空间 = if ($diskInfo) { $diskInfo.剩余空间_GB } else { "" }
        
        # 返回修改后的行
        $_
    }
    

    注意:这里的列名必须和你原始CSV、预期CSV的列名对应,比如原始CSV里的匹配列叫"Drive",就把$_.磁盘盘符改成$_.Drive。

  4. 导出新的CSV文件
    将修改后的内容导出为新CSV,避免覆盖原始文件:

    $updatedCsv | Export-Csv -Path "C:\你的输出路径\新的CSV文件.csv" -NoTypeInformation -Encoding UTF8
    

    -Encoding UTF8是为了避免中文乱码,可根据你的系统需求调整。

注意事项

  • 确保原始CSV里的盘符格式和DeviceID一致(比如都是C:这种带冒号的格式),如果原始CSV里是C不带冒号,可修改为$driveLetter = "$($_.磁盘盘符):"
  • 哈希表的匹配方式比循环查找效率更高,适合处理行数较多的CSV
  • 导出时务必使用新文件名,避免覆盖原始文件导致数据丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:05:17