我有一个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
答案 0 :(得分:1)
好吧,这很简单,我只需要先将内容转换为适当的字符串,然后结果就如预期的那样:
$regfilecontent = $regfilecontent |Out-String