我有一个二进制注册表值,我想检查Powershell脚本的一致性。我正在通过以下方式检索该值:
(Get-ItemProperty -Path HKLM:\Software\ORL\WinVNC3 -Name ACL).ACL
这会返回一个字节字符串。
然后我创建一个字节字符串变量,该变量与我期望的相匹配,然后通过regedit.exe导出注册表项来查询该值。然后,我通过在用逗号分隔的每个字节前面加上“0x”并输入为[byte],从该文本创建一个字节串。当我只看两个弦时,它们完全相同。但是,当我:
$RegistryValue -eq $CreatedValue
他们不会返回True。我做错了什么?
答案 0 :(得分:4)
尝试使用compare-object cmdlet。
Compare-Object $RegistryValue $CreatedValue
如果它们相等,您应该在结果表中看到==
运算符。
答案 1 :(得分:1)
我终于通过一些不同的方法和Compare-Object cmdlet的组合来解决这个问题。谢谢,达拉斯。
$ ValueItsSupposedToBe =(Get-ItemProperty -Path HKLM:\ Software \ ORL \ WinVNC3 -Name ACL).ACL
创建一个逗号,分隔的值字符串,并将此字符串插入比较脚本。
在比较脚本中,拆分字符串并将其转换为字节数组。
[byte []] $ ValueItsSupposedToBe = $ ValueItsSupposedToBe.Split(',')
$ CompareValue =(Get-ItemProperty -Path HKLM:\ Software \ ORL \ WinVNC3 -Name ACL).ACL
Compare-Object $ CompareValue $ ValueItsSupposedTobe