如何使用 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'}
}

更新於: 2021年2月8日

39K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.