2014-04-29 139 views
1

我試圖讓所有註冊表鍵以數字1-9開頭。這是我的工作:Powershell正則表達式匹配開始

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

簡單吧?應該管用?不起作用!我錯過了什麼?

UPDATE1:

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

這是我在用的現在,pschildname竟然是更容易比下面給出的分割例子使用,但有可能是這種方法的缺點是我不知道的?

我還更新了正則表達式匹配表達式用一個或兩個數字命名REGKEYS:其中名稱與(^)一個數字0-9([0-9])開始

的Regex retreives REGKEYS,可發生在數字名稱的一個到兩次({1,2}),然後名稱應該結束($

+1

請問能描述一下結果是什麼?如何在它不起作用? – tkokasih

回答

1

所以,有趣的是,你運行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