我正在编写一个 powershell 脚本并且遇到了一个问题。我有一个包含一个值的注册表项。我必须提取值的名称而不是它的值。为了更清楚一点,让我们考虑包含 DWORD 值 [@10.105.1.1 = 64] 的键。我希望能够提取值的名称,在本例中为 10.105.1.1。我没有使用它设置的值 64。另请注意,我没有创建注册表项,并且值的名称会因计算机而异,因为它更多的是另一个系统使用的设置,我只是尝试访问设置数据。
问问题
4318 次
2 回答
1
您可以获取指定注册表项下的所有值,通过值的数据进行过滤,然后获取值的名称。在以下示例中,我将列出 CurrentVersion 键下的值,根据数据(游戏)过滤值并获取值名称 (SM_GamesName)。此示例需要PSRemoteRegistry模块:
Import-Module PSRemoteRegistry
$key = 'SOFTWARE\Microsoft\Windows\CurrentVersion'
Get-RegValue -Hive LocalMachine -Key $key |
Where-Object {$_.Data -eq 'games'} |
Foreach-Object { $_.Value }
SM_GamesName
于 2012-07-03T07:51:34.047 回答
0
我一直在研究用脚本递归地返回所有值。
# get-reg.ps1
Param($key)
Get-Item $key | foreach-object {
$path = $_.PSPath
$_.Property | foreach-object {
$name = $_
$data = get-itemproperty -literalpath $path -name $name |
select -expand $name
[pscustomobject]@{value=$name; data=$data; key=$path}
}
}
Get-ChildItem -Recurse $key | foreach-object { # won't process top key
$path = $_.PSPath
$_.Property | foreach-object {
$name = $_
# there is a key named "*" under hklm:\software\classes
$data = get-itemproperty -literalpath $path -name $name |
select -expand $name
[pscustomobject]@{value=$name; data=$data; key=$path}
}
}
PS C:\Users\js2010> .\get-reg hkcu:\key1
value data key
----- ---- ---
value1 data1 Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\key1
(default) hi Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\key1
value2 data2 Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\key1\key2
于 2018-09-03T02:11:13.873 回答