【问题标题】:Powershell Get-ItemProperty Returns data differently depending upon 32 or 64bit OSPowershell Get-ItemProperty 根据 32 位或 64 位操作系统返回不同的数据
【发布时间】:2016-06-02 21:55:35
【问题描述】:

我在这个论坛上的第一个问题,请原谅任何错误等。

我正在编写一个需要在 32 位和 64 位操作系统上运行的 PowerShell 脚本。这本身不是问题,因为我可以轻松识别这两种架构。当我在注册表上发出“Get-ItemProperty”命令时,就会出现问题。使用 32 位操作系统,我在我真正想要的数据之前得到四行不需要的数据,即 PSPath、PAParentPath、PSChildName 和 PSProvider。 64 位操作系统上的相同命令问题将这些相同的数据放在我的数据之后。将一些 PS 脚本写入“Select-Object -last 1”以从最后一行末尾获取在 32 位机器上完美运行的数据位,然后我发现在 64 位机器上一切都颠倒了,PS 脚本不再工作。我尝试过使用“Select-Object First 1”,但这只会返回我的数据行的第一部分,如果我将值更改为 2,那么我会得到一切。那么,有没有办法收集整个第一行或阻止“Get-ItemProperty”返回所有不需要的行? 我希望所有这些都有意义? 提前致谢 麦基D先生

【问题讨论】:

    标签: powershell


    【解决方案1】:

    也许我在这里忽略了一些东西,但不应该

     Get-ItemProperty <item> | Select-Object PSPath,PAParentPath,PSChildName,PSProvider
    

    在这两种情况下都可以正常工作?

    【讨论】:

    • 感谢您的建议,但我要根除的是四个“PS”值,我只想选择存储在注册表中的数据,我对 PS 值不感兴趣。有没有办法不选择这些条目或阻止 Powershell 检索它们?
    • 当然,那是Get-ItemProperty &lt;item&gt; | Select-Object * -ExcludeProperty PSPath,PAParentPath,PSChildName,PSProvider 我似乎太愚蠢了,无法正确格式化评论,(在预览中看起来不错),有什么特别的技巧吗? ^^
    • 无论如何,您的建议非常有效,非常感谢您问候 MrMackyD
    【解决方案2】:

    您真正想要的数据是什么?您可以直接选择吗?例如(gp Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion).DevicePath直接读取DevicePath条目,忽略PowerShell添加的PS*属性。

    您的问题不在于位数,而在于忽略 PowerShell 特定的属性。

    【讨论】:

    • 感谢您的建议,但不幸的是,注册表名称是日期,随着时间的推移,这些条目会增加。实际数据是“修补程序”级别,因此在应用每个修补程序时,会将另一个条目添加到注册表中。 32 位版本的工作只是选择最后一个条目,这很有效,因为首先列出了四个“PS”值。在 64 位版本中,所有的 Hotfix 值都被列出,后面跟着四个“PS”值。有什么想法???
    • @MrMackyD:听起来你想要 latest 条目。有没有办法对它们进行排序(也许是基于名称?)因为即使忽略 PowerShell 属性,Get-ItemProperty 也不能保证以任何特定顺序返回它们,所以选择其中的 last不是一个稳定的解决方案。
    猜你喜欢
    • 2018-11-14
    • 2013-10-31
    • 2013-08-29
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2011-12-18
    • 2011-07-06
    相关资源
    最近更新 更多