2014-04-29 5 views
1

숫자 1-9로 시작하는 모든 레지스트리 키를 가져 오려고합니다. 이것은 내가 함께 일하는 것입니다 :Powershell regex match beginning 시작

Get-ChildItem -Path HKLM:\SOFTWARE\Policies\Citrix | Where-Object {$_.name -Match '^[1-9]'} 

간단한 huh? 작동해야합니까? 작동하지 않습니다! 내가 뭘 놓치고 있니?

갱신 1은 :

$CitrixPolRegDel = (Get-ChildItem -Path $CitrixPolRegPath).pschildName | Where-Object {$_ -Match '^[0-9]{1,2}$'} 

이것은 내가 pschildname는 아래의 분할 예를보다 사용하기 쉽게 밝혀졌다, 지금 사용하고,하지만 인식하지 오전이 방법의 단점이있을 수 있습니다 것입니다 ?

나는 또한 하나 또는 두 자리 숫자로 이름 regkeys에 일치하는 정규식 표현 업데이트

: 이름 (^) 숫자 0-9 ([0-9])로 시작되는

정규식 regkeys에를 꺼냅니다를 이름에 숫자가 하나가 발생할 수 있습니다

+1

결과가 무엇인지 설명해 주시겠습니까? 어떻게 작동하지 않는가? – tkokasih

답변

1

그래서 두 번 ({1,2}) 다음 이름이 끝나야한다 ($)에 당신이 GCI하고, 서브 키의 이름으로 다시 테이블을 맞이할 것을 실행하는 것이, 재미있는 일이고 그게하지만 경우 Select -Expand Name을 실행하면 전체 HKLM \ Software \ Policies \ Citrix가 제공됩니다. 그래서 문제가 있습니다. Name은 실제로 마지막 서브 키가 아니라 키의 전체 이름을 포함합니다.

따라서 1-9로 시작하는 하위 키를 원하십니까? \으로 분할하고 각 입력에 마지막으로 사용하십시오. 사용해보기 :

(Get-ChildItem -Path HKLM:\SOFTWARE\Policies\Citrix).Name | ForEach {$_.Split("\")[4] | Where-Object {$_.name -Match '^[1-9]'}} 
+0

예! 작동 해, 고마워! 너를 약간 수정해야만했다. Where-Object 섹션에서 .name을 제거했습니다 (Where-Object {$ _ -Match '^ [1-9]'}). – Jarko951