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

PowerShell中Select-Object创建自定义属性的原理问询

关于PowerShell v5.1中Select-Object创建自定义对象的代码解释

我在查找PowerShell v5.1快速获取所有注册表项属性的方法时,找到一个运行正常的脚本,但其中一行代码$rv = 1 | Select-Object -Property Name, Type, Value的工作原理我无法理解,查阅官方文档也未发现其可创建新属性的相关内容。

以下是完整脚本:

function Get-RegistryValue
{
    param
    (
        [Parameter(Mandatory = $true)]
        $RegistryKey
    )

    $key = Get-Item -Path "Registry::$RegistryKey"
    $key.GetValueNames() |
    ForEach-Object {
        $name = $_
        $rv = 1 | Select-Object -Property Name, Type, Value
        $rv.Name = $name
        $rv.Type = $key.GetValueKind($name)
        $rv.Value = $key.GetValue($name)
        $rv
  
    }
}

代码解释

这行代码是利用Select-Object快速创建自定义对象的常用技巧:

  • 1是一个任意的输入对象(这里选数字1只是因为它简单,换成字符串、$null等其他值也能实现相同效果)
  • 当Select-Object的-Property参数指定的属性名不存在于输入对象中时,它会自动为生成的新对象添加这些属性,初始值为$null
  • 后续代码就是给这三个空属性分别赋值为注册表项的名称、类型和值,最后输出这个结构统一的对象,方便后续处理或展示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:11:14