powershell对象管道中哈希表用于定义计算列,必须含name(或n)和expression(或e)键;select-object用其修改对象结构,format-table仅美化显示并支持formatstring、alignment等格式控制。
powershell 对象管道结合哈希表自定义输出列属性,核心是用 select-object 或 format-table 等 cmdlet 接收哈希表作为“计算属性”,动态生成新列。哈希表不是用来存数据的,而是告诉 powershell:这一列叫什么、值怎么算、怎么显示。
哈希表结构必须包含的两个键
无论用在 Select-Object 还是 Format-Table 中,每个计算列的哈希表都至少要提供:
-
name(或 label / n):列标题名称,字符串,建议用单引号包裹,如
'CPU使用率(%)' -
expression(或 e):计算逻辑,可以是脚本块
{ $_.CPU }或简写字符串'CPU'(直接取原属性名)
在 Select-Object 中添加计算列
这是最常用方式,真正修改对象结构,后续还能继续管道处理:
- 把字节转 MB 并四舍五入:
@{n='内存(MB)';e={[math]::Round($_.WS/1MB,2)} - 拼接字段:
@{n='服务状态';e={$_.Status + ' - ' + $_.DisplayName}} - 条件判断:
@{n='是否活跃';e={if ($_.CPU -gt 50) {'高'} else {'正常'}}
完整示例:Get-Process | Select-Object Name,ID,@{n='虚拟内存(MB)';e={[math]::Round($_.VM/1MB,1)}},@{n='CPU%';e={$_.CPU}} | Sort-Object 'CPU%' -Descending
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
在 Format-Table 中添加并美化列
如果只为了屏幕展示(不参与后续管道),Format-Table 支持更多显示控制:
-
formatstring:控制数字格式,如
'N2'表示带千分位和两位小数 -
alignment:设为
'right'让数字右对齐 - width:限制列宽,防文本过长挤乱表格
示例(加单位、右对齐、保留一位小数):Get-Process | Format-Table Name,@{n='工作集(MB)';e={[math]::Round($_.WS/1MB,1)};formatstring='N1';alignment='right';width=12}
常见错误与避坑点
哈希表语法看似简单,但几个细节容易出错:
- 键名必须是
n或name,不能写成label后再加引号——@{label='xxx'}是无效的 - 表达式里用
$_或$PSItem,别漏掉$符号 - 多个哈希表之间用逗号分隔,不能加分号
- 不要把
Format-Table放在管道中间——它会把对象转成格式化文本,后续Export-Csv就只剩字符串了










