PowerShell RegEx从.reg文件中获取注册表项的值(reg导出)

时间:2019-01-18 07:51:24

标签: regex powershell registry

我有一个PowerShell脚本,该脚本应该比较两个.reg文件(reg导出文件)。我想提供一个注册表项名称,并在那些文件中比较该项的值。 我的问题是正则表达式只能选择特定键的值...

问题在于,输出不仅是我提供的键的值,而且还是regfile中的所有以下行...(这是我使用RegEx失败的地方)

regfile的内容(要测试的示例):

"DWORD"=dword:fefefeff
"String"="agnhqorewthosdgfalsfalsbvoweirnfapjfpaqwogfjasgj"
"DWORD2"=dword:fefefefe
"qword"=hex(b):fa,ad,df,fa,ad,df,fa,ad

PowerShell代码:

$RegKeyName = "DWORD2"
$regex = ('"{0}"=(.*(?:(?!\n"[^\n"]+"=)\n.*)*)' -f [RegEx]::Escape($RegKeyName))
[regex]::Matches($regfilecontent ,$regex) | foreach { $_.groups[1].value }

例如$ RegKeyName = DWORD2的预期结果应为: dword:fefefefe

实际结果是: dword:fefefefe “ qword” = hex(b):fa,ad,df,fa,ad,df,fa,ad

1 个答案:

答案 0 :(得分:1)

好吧,这很简单,我只需要先将内容转换为适当的字符串,然后结果就如预期的那样:

$regfilecontent = $regfilecontent |Out-String
相关问题