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

如何实现PowerShell中简化自定义属性添加的prop函数?

实现PowerShell简化自定义属性的prop函数

PowerShell中通过哈希表定义计算属性的语法较为繁琐,官方帮助文档about_Calculated_Properties给出的示例如下:

Get-Date | Select-Object Year, @{name='foo'; expression={123}}

# 输出结果:
Year foo
---- ---
2024 123

如果想要简化成更直观的写法,比如:

Get-Date | Select-Object Year, (prop 'foo' 123)

可以通过定义如下prop函数实现:

function prop {
    param(
        [Parameter(Mandatory)]
        [string]$Name,
        [Parameter(Mandatory)]
        [object]$Expression
    )

    # 若传入的不是脚本块,自动包装为返回指定值的脚本块
    if (-not $Expression -is [scriptblock]) {
        $Expression = [scriptblock]::Create("`$null = `$args; $Expression")
    }

    # 返回符合计算属性要求的哈希表
    @{ Name = $Name; Expression = $Expression }
}

函数说明

  • 接收两个必填参数:$Name(自定义属性名)和$Expression(属性值的计算逻辑)
  • 如果传入的是静态值(比如123),会自动将其包装为脚本块,确保Select-Object能正确识别为计算属性
  • 支持直接传入脚本块实现动态计算,比如基于当前对象的属性进行处理:
# 示例:获取文件并显示大小(MB)
Get-ChildItem -File | Select-Object Name, (prop 'SizeMB' { [math]::Round($_.Length / 1MB, 2) })

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:52:38