如何使用 PowerShell 获取 Windows 证书详细信息?
我们知道 Windows 证书驻留在证书存储中,但有时根据名称查找证书或获取特定证书的详细信息可能会很麻烦。
您可以使用 MMC 或使用 **CertMgr.msc** 命令访问证书存储。证书存储在 CurrentUser、ServiceAccount 和本地计算机中。要使用 PowerShell 访问证书存储,您需要访问 PSDrive,证书存储在名为 **Cert** 的驱动器中,如下所示。
PS C:\> Get-PSDrive cert | ft -AutoSize Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- Cert Certificate \
假设我们要检索存储在本地计算机帐户的根目录中的证书的详细信息,则可以使用以下命令。
示例
Get-ChildItem Cert:\LocalMachine\Root\
输出
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root Thumbprint Subject ---------- ------- CDD4EEAE6000AC7F40C3802C171E30148030C072 CN=Microsoft Root Certificate Authority BE36A4562FB2EE05DBB3D32323ADF445084ED656 CN=Thawte Timestamping CA, OU=Thawte Ce A43489159A520F0D93D032CCAF37E7FE20A8B419 CN=Microsoft Root Authority, OU=Microso 92B46C76E13054E104F230517E6E504D43AB10B5 CN=Symantec Enterprise Mobile Root for 8F43288AD272F3103B6FB1428485EA3014C0BCFE CN=Microsoft Root Certificate Authority 7F88CD7223F3C813818C994614A89C99FA3B5247 CN=Microsoft Authenticode(tm) Root Auth
或者您也可以使用以下命令,
Get-Item Cert:\LocalMachine\Root\* | ft -AutoSize
以下命令将获取所有 Microsoft 证书。
Get-ChildItem Cert:\LocalMachine\Root\ | where{$_.Subject -like "*Microsoft*"}
要查找特定证书,您应该知道证书的友好名称。例如,要从根存储中查找 **“DigiCert”** 证书,
示例
Get-ChildItem Cert:\LocalMachine\Root\ | where{$_.FriendlyName -eq 'DigiCert'}
输出
Thumbprint Subject ---------- ------- A8985D3A65E5E5C4B2D7D66D40C6DD2FB19C5436 CN=DigiCert Global Root CA, OU=www.digicert.com, 0563B8630D62D75ABBC8AB1E4BDFB5A899B24D43 CN=DigiCert Assured ID Root CA, OU=www.digicert.com
要直接从 **LocalComputer、CurrentUser** 或 **Root** 存储中搜索,请使用 **-Recurse** 参数。
Get-ChildItem Cert:\LocalMachine\ -Recurse | where{$_.FriendlyName -eq 'DigiCert'}
获取指纹或友好名称后,可以使用 fl * 管道获取证书的完整详细信息。
Get-ChildItem Cert:\LocalMachine\root | where{$_.FriendlyName -eq 'DigiCert'} | fl *
对于远程服务器,我们可以使用 **Invoke-Command**,以下示例将获取来自远程服务器的证书。
示例
Invoke-Command -ComputerName Test1Comp, Test2Comp -Scriptblock{ Get-ChildItem Cert:\LocalMachine\root | where{$_.FriendlyName -eq 'DigiCert'} }
广告