我有一个例程,在我的证书商店中搜索与主题名称相匹配的证书...例如,我有一个以foobar.blah.com为主题的证书,我的脚本执行此操作:
(Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "foobar.blah.com"})
并且按预期工作...即找到条目。
但是,我尝试对官方外卡证书进行同样的处理,例如* .blah.com,但尝试使用相同的语法无效。
我试图使用其他表单搜索选项(类似, - 包含等),但似乎没有任何效果。 关于如何做到这一点的任何提示?
答案 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}