Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell RegEx从.reg文件获取注册表项的值(reg导出)_Regex_Powershell_Registry - Fatal编程技术网

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

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

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

问题是,输出不仅是我提供的键的值,而且是regfile中的以下所有行。。。(这就是我用正则表达式失败的地方)

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

PowerShell代码:

$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