Powershell 在本地存储中搜索通配符证书?
我有一个例行程序,搜索我的证书存储的证书匹配的主题名称。。。e、 例如,我有一个主题为foobar.blah.com的证书,我的脚本是这样做的:Powershell 在本地存储中搜索通配符证书?,powershell,ssl-certificate,Powershell,Ssl Certificate,我有一个例行程序,搜索我的证书存储的证书匹配的主题名称。。。e、 例如,我有一个主题为foobar.blah.com的证书,我的脚本是这样做的: (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "foobar.blah.com"}) 这就像预期的一样。。。i、 e.查找条目 然而,我试图对官方通配符证书(例如,*.blah.com)执行相同的过程,但是尝试使用相同的语法是失败的 我曾尝试使
(Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "foobar.blah.com"})
这就像预期的一样。。。i、 e.查找条目
然而,我试图对官方通配符证书(例如,*.blah.com)执行相同的过程,但是尝试使用相同的语法是失败的
我曾尝试使用其他表单搜索选项(-比如,-contains等),但似乎没有任何效果。
有什么建议吗
-match
需要一个正则表达式模式作为其右参数。在正则表达式中,*
是一个量词,表示“0或更多”。要匹配文字字符*
,请使用\
对其进行转义:
{ $_.Subject -match '\*\.blah\.com'}
也是一个特殊字符(匹配任何单个字符)
如果您对要转义的字符有疑问,请使用[regex]::escape()
方法:
$Pattern = [regex]::Escape('*.blah.com')
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match $Pattern}
-match
需要一个正则表达式模式作为其右参数。在正则表达式中,*
是一个量词,表示“0或更多”。要匹配文字字符*
,请使用\
对其进行转义:
{ $_.Subject -match '\*\.blah\.com'}
也是一个特殊字符(匹配任何单个字符)
如果您对要转义的字符有疑问,请使用[regex]::escape()
方法:
$Pattern = [regex]::Escape('*.blah.com')
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match $Pattern}
-match
需要一个正则表达式模式作为其右参数。在正则表达式中,*
是一个量词,表示“0或更多”。要匹配文字字符*
,请使用\
对其进行转义:
{ $_.Subject -match '\*\.blah\.com'}
也是一个特殊字符(匹配任何单个字符)
如果您对要转义的字符有疑问,请使用[regex]::escape()
方法:
$Pattern = [regex]::Escape('*.blah.com')
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match $Pattern}
-match
需要一个正则表达式模式作为其右参数。在正则表达式中,*
是一个量词,表示“0或更多”。要匹配文字字符*
,请使用\
对其进行转义:
{ $_.Subject -match '\*\.blah\.com'}
也是一个特殊字符(匹配任何单个字符)
如果您对要转义的字符有疑问,请使用[regex]::escape()
方法:
$Pattern = [regex]::Escape('*.blah.com')
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match $Pattern}