使用powershell在注册表项中获取特定字符串值的值

时间:2011-11-16 10:38:18

标签: powershell registry key

使用以下powershell脚本:

Get-ChildItem hkcu:\Test\Universe\Datawink\Switch1\Devices | ForEach-Object {Get-ItemProperty $_.pspath}

我能够得到以下输出:

PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Test\Universe\Datawink\Switch1\Devices\Entry1
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Test\Universe\Datawink\Switch1\Devices
PSChildName  : Entry1
PSProvider   : Microsoft.PowerShell.Core\Registry
Device       : 2882881001
Recordable   : Yes
Active       : Yes

PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Test\Universe\Datawink\Switch1\Devices\Entry2
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Test\Universe\Datawink\Switch1\Devices
PSChildName  : Entry2
PSProvider   : Microsoft.PowerShell.Core\Registry
Device       : 2882881002

PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Test\Universe\Datawink\Switch1\Devices\Entry3
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Test\Universe\Datawink\Switch1\Devices
PSChildName  : Entry3
PSProvider   : Microsoft.PowerShell.Core\Registry
Device       : 2882881003

哪个好,它向我显示了我想要的信息,但我真正需要的是名为'Device'的字符串条目的值,所以我真正想要的是脚本的输出看起来像这样:

Device       : 2882881001
Device       : 2882881002
Device       : 2882881003

或理想情况下:

2882881001
2882881002
2882881003

实现这一目标的最简单方法是什么?

2 个答案:

答案 0 :(得分:5)

这也应该有效:

$path = 'hkcu:\Test\Universe\Datawink\Switch1\Devices'
Get-ChildItem $path | Get-ItemProperty | Select-Object -ExpandProperty Device

答案 1 :(得分:3)

Get-ChildItem hkcu:\Test\Universe\Datawink\Switch1\Devices | ForEach-Object {Get-ItemProperty $_.pspath} | where-object {$_.Device} | Foreach-Object {$_.Device}

将为您提供所需的输出。

(在您的示例中,并非真正需要Where-Object)