我正在寻找一种方法来根据 CA 的签名模板查询其颁发的证书。以下是我开始使用的方法(基于 PSPKI 4.0.0 模块);
$AllCerts= Get-CertificationAuthority -name CA_Authority | Get-IssuedRequest -Property Email,CertificateTemplate, CertificateTemplateOID
$RelevantInfo = ($AllCerts | ?{$_.CertificateTemplate -eq 'WebServer' -Or $_.CertificateTemplate -eq 'CustomTemplate'})
...但是,查询未找到“CustomTemplate”匹配项。我甚至尝试使用通配符逻辑;
$RelevantInfo = ($AllCerts | ?{$_.CertificateTemplate -eq 'WebServer' -Or $_.CertificateTemplate -like '*CustomTemplateName*'})
当我运行时我可以看到这些值;
Get-CertificateTemplate | Select Name, DisplayName, OID
但查询未找到“CustomTemplateName”的匹配项。有没有办法真正获取已颁发证书模板的“友好名称”信息?
答案1
对于自定义模板,$row.CertificateTemplate
属性包含模板对象标识符 (OID),而不是名称。仅对 V1 模板(内置且不可编辑)返回名称。
因此,就您而言,您必须首先获取请求的模板 OID,然后进行过滤:
$AllCerts= Get-CertificationAuthority -name CA_Authority | Get-IssuedRequest -Property Email,CertificateTemplate, CertificateTemplateOID
$OID = (Get-CertificateTemplate -Name 'CustomTemplate').Oid.Value
$RelevantInfo = ($AllCerts | ?{$_.CertificateTemplate -eq 'WebServer' -Or $_.CertificateTemplate -eq $OID})