【问题标题】:Return full value of a property返回属性的全部值
【发布时间】:2020-01-27 20:27:01
【问题描述】:

我正在尝试获取 DCOM 应用程序的程序 ID,但是在返回属性值时,它没有给出完整的内容。

$a = Get-ChildItem 'registry::HKEY_CLASSES_ROOT\WOW6432Node\CLSID\' -Recurse | Where-Object Name -match 'ProgID'

这将返回所有包含 ProgID 的应用程序

    Hive: HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{000C1090-0000-0000-C000-000000000046}


Name                           Property
----                           --------
ProgId                         (default) : WindowsInstaller.Installer

尝试获取示例中的属性值时,“WindowsInstaller.Installer” 通过$a.Property

返回

(default)

如何返回完整的属性内容?

【问题讨论】:

    标签: powershell registry


    【解决方案1】:

    Get-ChildItem 为注册表位置返回的是代表注册表Microsoft.Win32.RegistryKey 实例。

    要获取每个此类键的 未命名 默认 的数据 - 其中包含感兴趣的 ProgID - 您可以使用 .GetValue() 方法和 空字符串 ('')。

    请注意,PowerShell 以不同方式表示未命名的默认值,如 '(default)',如您的问题所示。

    Get-ChildItem registry::HKEY_CLASSES_ROOT\WOW6432Node\CLSID -Recurse | 
      Where-Object Name -match ProgID |
        ForEach GetValue ''
    

    顺便说一句:注册表[Microsoft.Win32.RegistryKey] 实例的Name 属性包含完整的键path,因此更好的方法是将匹配限制为仅键的名称是在您的情况下使用
    Where-Object Name -match '\\ProgID$

    【讨论】:

    • 啊,太棒了,谢谢,我不知道(默认)是什么意思,但我现在知道了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多