2015-07-21 60 views
0

我有我的搜索證書存儲的證書的主題名稱匹配......如常規,我有foobar.blah.com會的主題證書和我的腳本做到這一點:在本地商店中搜索通配符證書?

(Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "foobar.blah.com"}) 

這和預期一樣...即找到條目。

但是,我試圖對官方通配符證書(例如* .blah.com)執行相同的過程,但嘗試使用相同的語法失敗。

我試圖使用其他形式的搜索選項(如-contains等),但似乎沒有工作。 關於如何做到這一點的任何提示?

回答

2

-match需要一個正則表達式作爲它的右邊參數。在正則表達式中,*是一個量詞,意思是「0或更多」。要匹配文字字符*,與\逃避它:

{ $_.Subject -match '\*\.blah\.com'} 

.也是一個特殊字符(匹配任何單個字符)

如果您不確定的字符逃脫是有史以來,使用[regex]::Escape()方法:

$Pattern = [regex]::Escape('*.blah.com') 
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match $Pattern}