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
相关产品推荐
相关产品推荐

