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
相关产品推荐
相关产品推荐

