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

如何提取diskpart文本输出指定列并追加服务器名生成CSV文件

实现思路

diskpart的list disk输出是纯文本固定宽度格式,你之前导出文件带表头分隔线,是因为直接把原始文本行写入了CSV,没有做结构化解析,正确实现步骤如下:

  1. 过滤有效数据行:执行diskpart命令后,先筛掉空行、执行提示行,仅保留表头行和实际磁盘数据行,主动丢弃表头下方的---格式分隔线
  2. 动态解析列边界:通过表头行的各列起始位置计算每列的宽度区间,不要硬编码列宽,避免不同系统/语言环境下列宽不一致导致的解析错误
  3. 字段裁剪与新增:仅提取Disk ###、Status、Size、Free四列的值,丢弃最后两列Dyn、Gpt,新增server字段赋值为对应服务器名称
  4. 结构化导出CSV:把每一行处理为PowerShell自定义对象后,用原生Export-Csv命令导出,不要手动拼接CSV文本,原生命令会自动处理转义、表头格式,不会生成多余分隔线

可直接运行的示例代码
# 1. 执行diskpart获取list disk原始输出
$diskpartOutput = diskpart /s "`nlist disk`nexit" | Out-String
$allLines = $diskpartOutput -split "`r?`n" | Where-Object { $_.Trim() -ne '' }

# 2. 定位表头行,跳过分隔线获取数据行
$headerLine = $allLines | Where-Object { $_ -match 'Disk ###\s+Status' } | Select-Object -First 1
$headerIndex = [array]::IndexOf($allLines, $headerLine)
$dataLines = $allLines[($headerIndex + 2)..($allLines.Count - 1)]

# 3. 动态计算各列的起始位置
$columnNames = @('Disk ###', 'Status', 'Size', 'Free', 'Dyn', 'Gpt')
$colPositions = $columnNames | ForEach-Object { $headerLine.IndexOf($_) }

# 4. 逐行解析生成结构化对象
$diskResult = foreach ($line in $dataLines) {
    $diskNum = $line.Substring($colPositions[0], $colPositions[1] - $colPositions[0]).Trim()
    $status = $line.Substring($colPositions[1], $colPositions[2] - $colPositions[1]).Trim()
    $size = $line.Substring($colPositions[2], $colPositions[3] - $colPositions[2]).Trim()
    $free = $line.Substring($colPositions[3], $colPositions[4] - $colPositions[3]).Trim()
    # 此处可替换为自定义的服务器名称获取逻辑
    $serverName = $env:COMPUTERNAME

    [PSCustomObject]@{
        Server = $serverName
        DiskNum = $diskNum
        Status = $status
        Size = $size
        Free = $free
    }
}

# 5. 导出为标准CSV,支持直接用Import-Csv读取
$diskResult | Export-Csv -Path "C:\disk_info.csv" -Encoding UTF8 -NoTypeInformation

关键注意点
  • 导出时加-NoTypeInformation参数可去掉CSV开头多余的类型标识行,符合通用CSV格式规范
  • 动态列截取逻辑兼容中英文系统的diskpart输出,不会因为区域设置导致字段截取错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:06:05