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

PowerShell技术问询:如何获取控制台显示的对象属性名并赋值给变量

获取Get-Process默认显示的属性名并存入变量

我明白你要的是Get-Process在控制台默认输出的那8个属性名对吧?Get-Member确实帮不上忙,因为它返回的是进程对象的所有成员(属性、方法等),而PowerShell默认展示的只是其中预定义的子集。这里有两种可靠的方法可以实现你的需求:

方法1:通过格式数据获取(最准确)

PowerShell的默认输出格式是由.format.ps1xml文件定义的,我们可以直接读取这些格式数据来提取默认显示的属性名:

# 获取System.Diagnostics.Process对象的默认格式定义
$processFormatData = Get-FormatData -TypeName System.Diagnostics.Process

# 筛选出默认的"Process"视图,提取表头标签
$defaultDisplayProperties = $processFormatData.FormatViewDefinition |
    Where-Object { $_.Name -eq 'Process' } |
    Select-Object -ExpandProperty Control |
    Select-Object -ExpandProperty Headers |
    Select-Object -ExpandProperty Label

# 现在$defaultDisplayProperties就是你要的属性名数组
$defaultDisplayProperties

运行这段代码后,$defaultDisplayProperties会包含Handles、NPM(K)、PM(K)、WS(K)、CPU(s)、Id、SI、ProcessName这些值,和控制台默认输出的表头完全一致。

方法2:捕获控制台输出解析表头(快速简便)

如果你需要一个更轻量的方式,可以直接捕获Get-Process的控制台输出,然后解析第一行的表头:

# 捕获Get-Process的输出流,取第一行表头
$header = (Get-Process | Out-String -Stream)[0].Trim()

# 按多个空格分割表头字符串,得到属性名数组
$defaultDisplayProperties = $header -split '\s+'

# 查看结果
$defaultDisplayProperties

这种方法的优点是代码更短,但要注意如果表头格式有变化可能会影响结果,不过对于Get-Process的默认输出来说是完全可靠的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:37:48