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

PowerShell 7.3.x:管道内无括号访问嵌套属性的理想Cmdlet是否存在?

在PowerShell 7.3.x中访问嵌套属性的简洁方案

PowerShell没有原生的Get-Object Cmdlet,但可以通过以下几种方式实现你想要的无括号管道式嵌套属性访问:

  • 用ForEach-Object简化语法直接访问
    这是最便捷的内置方案,无需额外定义工具,直接利用ForEach-Object的简写%结合属性路径:

    Get-Content ./data.json | ConvertFrom-Json | % building1.data | Select-Object id, status
    

    这里% building1.data等价于ForEach-Object { $_.building1.data },自动遍历管道输入并返回指定的嵌套属性值,完全适配你的管道流需求。

  • 自定义Get-Object函数
    如果你偏好Get-Object的明确语法,可以自己定义一个轻量函数,完美匹配你期望的调用方式:

    function Get-Object {
        param(
            [Parameter(ValueFromPipeline)]
            $InputObject,
            [Parameter(Position=0)]
            [string]$PropertyPath
        )
        process {
            $InputObject.$PropertyPath
        }
    }
    

    定义后就能直接用你想要的命令:

    Get-Content ./data.json | ConvertFrom-Json | Get-Object building1.data | Select-Object id, status
    

    这个函数会接收管道输入,按传入的属性路径提取对应值,逻辑简单且复用性强。

  • 处理XML文件的适配
    如果你要处理XML,逻辑类似,转换后同样可以用上述两种方式:

    # 用ForEach-Object简化语法
    Get-Content ./data.xml | ConvertFrom-Xml | % building1.data | Select-Object id, status
    
    # 用自定义的Get-Object
    Get-Content ./data.xml | ConvertFrom-Xml | Get-Object building1.data | Select-Object id, status
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:58:23