2017-11-11 12 views
1

레지스트리에 경로가 있는지 확인해야합니다. 나는 powershell을 사용했습니다. 하지만 난 "-match"검색 일부 문자열을 ""with 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

"match"연산자는 정규 표현식을 사용하지만 "like"연산자를 사용하면 와일드 카드를 사용할 수 있습니다. "좋아요"로 전환하고 주위에 * 기호를두면 일치 항목을 가져와야합니다.

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

또는 정규식을 사용하고 싶다면 검색중인 문자열에서 슬래시를 이스케이프 처리해야합니다. 결국 다음과 같이 보일 것입니다 :

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

첫 번째 방법을 두 번째 작업 만있어 \ at end도 작동하지 않습니다. – mino

+0

어제 - 정규식에서 이스케이프 문자에 잘못된 슬래시 방향을 사용하고있는 것처럼 보입니다. 이제 고쳐야합니다. –

+0

고마워요. 지금은 작동 중입니다 :)하지만 대체 방법은 반드시 끝에 "\"와 함께 있어야합니다. – mino

1

역 슬래시는 정규식의 특수 문자입니다. regex에서는 역 슬래시를 사용하여 특수 문자를 이스케이프해야합니다. Ex. $의 REG1의 -match "\/\ 윈도우 키트/\ 10 \"아니, -illegal \ 끝에서, 그리고 않고 : 그것은 당신의 경우

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

..

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

감사합니다. :) – mino