使用powershell -match运算符搜索带有“\”的字符串

时间:2017-11-11 13:26:01

标签: powershell path registry match

我需要检查注册表中是否存在某些路径。 我使用了powershell。 但我有“-match”的问题

$reg1 = "C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\SafeNet\LunaClient\win32;C:\Program File
s\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\System Center Operations Manager 2007\;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit"

当我使用-match operator:

$reg1 -match "\Windows Kits\10"  

$reg1 -match "\Windows Kits\10"

我得到“假”

我不知道出了什么问题。

2 个答案:

答案 0 :(得分:1)

“match”运算符使用正则表达式,而“l​​ike”运算符允许您使用通配符。如果您切换到“喜欢”并在其周围放置*符号,您应该开始获得匹配。

$reg1 -like "*\Windows Kits\10*"

或者,如果你真的想要使用正则表达式,你需要在你正在搜索的字符串中转义斜杠。它最终会看起来像这样:

$reg1 -match "\\Windows Kits\\10"

答案 1 :(得分:1)

反斜杠是正则表达式中的一个特殊字符。在正则表达式中,您必须使用反斜杠转义特殊字符。 实施例

'C:\Windows' -match '\\Windows'
True

在你的情况下..

$reg1 -match "\\Windows Kits\\10"