2017-11-11 263 views
1

我需要檢查一些路徑是否存在於註冊表中。 我用powershell。 但我有 「-match」搜索一些與「」與powershell的字符串 - 匹配運算符

$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運算符:

$reg1 -match "\Windows Kits\10" 

$reg1 -match "\Windows Kits\10" 

我得到 「假」

我不知道什麼是錯的。

回答

1

「匹配」運算符使用正則表達式,而「l​​ike」運算符將允許您使用通配符。如果您切換到「喜歡」並在其周圍放置*符號,您應該開始獲得您的匹配。

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

或者,如果你真的想使用正則表達式,你需要逃避你斜線你要搜索的的字符串中。它最終會看起來像這樣:

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

第一種方法它的工作,但第二:$ REG1 -match 「\/\的Windows套件/ \ 10 \」 不,-illegal \月底,沒有\在最後也不能工作 – mino

+0

哎呀 - 看起來像我在正則表達式中使用錯誤的斜槓方向作爲轉義字符。現在應該修復 –

+0

現在感謝它的工作:)但替代方法必須以「\」結尾;) – mino

1

反斜槓是正則表達式中的一個特殊字符。在正則表達式中,你必須使用反斜槓來轉義特殊字符。例如,

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

在你的情況..

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

謝謝,現在它工作:) – mino