【问题标题】:recurse through powershell object通过powershell对象递归
【发布时间】:2019-01-19 10:19:34
【问题描述】:

我正在尝试浏览从命令收到的结果,问题是当我访问属性时,我只得到属性名称而不是对应的路径。

$com1 = 获取子项 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall*' | ? { $_ -匹配“火狐”}

Command i tried to recurse:
$prop = $com1 | Select-Object  'Property' # Select only item property

然后我得到没有任何属性值映射的结果。

结果我被粘贴在下面

Property                                        
--------                                               
{Comments, DisplayIcon, DisplayName, DisplayVersion...}

我希望在第一次进入图像时获得 cmets 和 displayicon 的值。

【问题讨论】:

  • 请显示完整的代码(即$com1首先是如何分配的)
  • $com1 = Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall*' | ? { $_ -match "Firefox" } 我正在检查已安装的应用程序。
  • 请避免在 cmets 中添加信息。请改为编辑您的问题。

标签: powershell


【解决方案1】:

使用Get-ItemProperty 从注册表项中获取实际的属性值:

$PropertyValue = ($com1 | Get-ItemProperty -Name "property").property

【讨论】:

  • 谢谢你实际使用了这个修改.. ($com1 | Get-ItemProperty) 上面的命令给了我错误,因为“Get-ItemProperty:路径中不存在属性属性”
【解决方案2】:

补充Mathias R. Jessen's helpful answer

PSv5+中,您可以使用Get-ItemPropertyValue cmdlet,它通过直接检索数据(属性值)来简化事情:

$PropertyValue = $com1 | Get-ItemPropertyValue -Name Property

或者,考虑到$com1 似乎是用Get-Itemregistry-provider 位置检索到的,因此是[Microsoft.Win32.RegistryKey] 类型的实例,您可以调用它的.GetValue() method直接:

$com1.GetValue('Property')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-01
    • 2020-11-18
    • 1970-01-01
    • 2017-07-18
    • 2015-11-18
    • 2011-12-12
    • 2021-05-09
    • 2017-03-02
    相关资源
    最近更新 更多