在本地商店中搜索通配符证书?

时间:2015-07-21 00:33:36

标签: powershell ssl-certificate

我有一个例程,在我的证书商店中搜索与主题名称相匹配的证书...例如,我有一个以foobar.blah.com为主题的证书,我的脚本执行此操作:

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

并且按预期工作...即找到条目。

但是,我尝试对官方外卡证书进行同样的处理,例如* .blah.com,但尝试使用相同的语法无效。

我试图使用其他表单搜索选项(类似, - 包含等),但似乎没有任何效果。 关于如何做到这一点的任何提示?

1 个答案:

答案 0 :(得分: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}