如何用Windows PowerShell获取当前用户个人证书的Subject CN(颁发给)
解决PowerShell获取证书「颁发给」信息的问题
问题原因
- PowerShell的证书对象没有直接提供
IssuedTo属性,该信息需要从证书的Subject字段中解析出CN(通用名称)部分。 FriendlyName为空是因为部分证书本身未设置友好名称,属于正常现象,可保留字段显示。
解决方案
使用计算属性从Subject中提取CN值作为IssuedTo,以下是两种可靠的实现命令:
方法1:正则表达式提取(简洁高效)
Get-ChildItem -Path Cert:\CurrentUser\My | Select-Object FriendlyName, @{Name='IssuedTo'; Expression={[regex]::Match($_.Subject, 'CN=([^,]+)').Groups[1].Value}}, Issuer, NotAfter, NotBefore
方法2:用X500名称类解析(规范严谨)
适合Subject包含多个字段的复杂场景:
Get-ChildItem -Path Cert:\CurrentUser\My | Select-Object FriendlyName, @{Name='IssuedTo'; Expression={ $dn = New-Object System.Security.Cryptography.X509Certificates.X500DistinguishedName($_.Subject) ($dn.Format($false) -split "`n" | Where-Object { $_ -match 'CN=' }) -replace 'CN=', '' }}, Issuer, NotAfter, NotBefore
说明
- 两种方法都会将证书Subject中的CN值提取为
IssuedTo字段,对应证书详情里的「颁发给」信息。 - 若证书Subject无CN字段,
IssuedTo会显示为空,符合实际情况。
内容的提问来源于stack exchange,提问作者Ronaldo
相关产品推荐
相关产品推荐

