PowerShell RegEx从.reg文件获取注册表项的值(reg导出)
我有一个PowerShell脚本,它应该比较两个.reg文件(reg导出文件)。我想提供注册表项名称并比较这些文件中该项的值。 我的问题是正则表达式只能选择特定键的值 问题是,输出不仅是我提供的键的值,而且是regfile中的以下所有行。。。(这就是我用正则表达式失败的地方) regfile的内容(要测试的示例): PowerShell代码:PowerShell RegEx从.reg文件获取注册表项的值(reg导出),regex,powershell,registry,Regex,Powershell,Registry,我有一个PowerShell脚本,它应该比较两个.reg文件(reg导出文件)。我想提供注册表项名称并比较这些文件中该项的值。 我的问题是正则表达式只能选择特定键的值 问题是,输出不仅是我提供的键的值,而且是regfile中的以下所有行。。。(这就是我用正则表达式失败的地方) regfile的内容(要测试的示例): PowerShell代码: $RegKeyName = "DWORD2" $regex = ('"{0}"=(.*(?:(?!\n"[^\n"]+"=)\n.*)*)' -f [Re
$RegKeyName = "DWORD2"
$regex = ('"{0}"=(.*(?:(?!\n"[^\n"]+"=)\n.*)*)' -f [RegEx]::Escape($RegKeyName))
[regex]::Matches($regfilecontent ,$regex) | foreach { $_.groups[1].value }
例如$RegKeyName=DWORD2的预期结果应为:
德沃德:菲菲
实际结果是:
德沃德:菲菲
“qword”=hex(b):fa,ad,df,fa,ad,df,fa,ad很简单,我只需要先将内容转换成一个合适的字符串,然后结果如预期的那样:
$regfilecontent = $regfilecontent |Out-String
我必须提到的是:如果我正在浏览的内容是一个基类为“System.Object”的字符串,那么代码将按预期工作。但是,如果我从一个regfile获取内容,并且它是basetype System.array的对象[],则结果如上所述
$regfilecontent = $regfilecontent |Out-String