2017-11-11 3 views
1

レジストリにパスがあるかどうかを確認する必要があります。 私はpowershellを使用しました。 しかし、私は "-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演算子を使用する場合:

$reg1 -match "\Windows Kits\10" 

または

$reg1 -match "\Windows Kits\10" 

私は "偽"

取得私は何が間違っているのか分からない。

答えて

1

"match"演算子は正規表現を使用しますが、 "like"演算子はワイルドカードを使用できます。あなたが「好き」に切り替えて、その周りに*記号を置くと、あなたのマッチが始まるはずです。

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

あなたが本当に正規表現を使用することを希望している場合あるいは、あなたが探している文字列であなたのスラッシュをエスケープする必要があります。

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

最初の方法:最後に$ REG1の-match "\/\ Windowsのキット/ \ 10 \" ではない、-illegalを\、およびなし\最後にも動作しません – mino

+0

おっとり - 私は正規表現のエスケープ文字に間違ったスラッシュの方向を使用していたようです。今すぐ修正する必要があります –

+0

これはうまくいきました:)しかし、代わりの方法は最後に "\"を入れなければなりません; – mino

1

バックスラッシュは正規表現で特殊文字である:それはこのような何かを探してしまいます。正規表現では、特殊文字をバックスラッシュでエスケープする必要があります。 Ex。あなたのケースでは

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

...それは作業が、2番目だ

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

ありがとうございます:) – mino

関連する問題