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

PowerShell如何修改脚本实现磁盘空间查询结果合并列单表输出

PowerShell 磁盘查询脚本输出单表改造方法

问题根源

你现有脚本的输出拆分问题,是因为在遍历盘符的foreach循环里,每匹配到一个盘符就单独执行一次Select-Object筛选列+ft(Format-Table)输出。PowerShell每执行一次Format-Table就会生成独立的格式化表格,自然会输出多个分散的分表,没法把多盘符数据合并到同一行。

具体修改步骤

  • 删除循环内Switch分支里逐个输出单盘符表格的全部逻辑,不需要在遍历盘符的时候做输出操作
  • 遍历传入的盘符参数,动态拼接需要展示的列名集合,固定把Servername作为第一列
  • 所有列拼接完成后,一次性执行列筛选和表格格式化,只调用一次Format-Table即可输出合并后的单表

修改后的完整参考代码:

# 原有收集服务器磁盘数据、给$myarray赋值的逻辑完全保留,不需要改动
$myarray += $finaldata

# 初始化要展示的列,第一列固定为服务器名
$showColumns = @('Servername')
foreach ($dr in $Drive) {
    # 把当前盘符对应的剩余空间字段加入展示列列表
    $showColumns += "${dr}DriveFreeSpace"
}

if (-not $Drive) {
    # 未传入指定盘符参数时,输出全量字段表格
    $myarray | Format-Table -AutoSize
}
else {
    # 传入了指定盘符时,一次性选好所有列,单次输出合并表格
    $myarray | Select-Object $showColumns | Format-Table -AutoSize
}

补充说明

  • 给Format-Table加上-AutoSize参数会自动根据内容调整列宽,避免列名、数值出现错位对齐问题
  • 你给出的期望输出示例里列名存在拼写错误,正确字段名是*DriveFreeSpace,不是*DriveFressSpace,不需要额外修改原有字段名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:25:34