获取证书的Thumbprint

20

我想把证书的指纹存储到一个变量中,就像这样:

$thumbprint = 0F273F77B77E8F60A8B5B7AACD032FFECEF4776D

但是我的命令输出是:

Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXX"}

Thumbprint                                Subject 
----------                                ------- 
0F273F77B77E8F60A8B5B7AACD032FFECEF4776D  CN=XXXXXXX, OU=YYYYYYY 

我需要移除输出中的一切内容,只保留指纹。

有任何想法吗?

4个回答

42

你所要做的就是将命令用括号括起来,然后使用点符号访问Thumbprint属性。

试一下:

$Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXXXX"}).Thumbprint;
Write-Host -Object "My thumbprint is: $Thumbprint";

如果你从命令中得到了多个证书,那么你需要将这些指纹拼接成一个字符串,可以使用 PowerShell 操作符 -join
$Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXXXX"}).Thumbprint -join ';';
Write-Host -Object "My thumbprints are: $Thumbprint";

7
您可以使用 Select-Object 来仅获取 Thumbprint 属性:
Get-ChildItem -Path Cert:\LocalMachine\My | 
    Where-Object {$_.Subject -match "XXXXXXX"} | 
    Select-Object -ExpandProperty Thumbprint

0

运行此命令后,一旦变量$Thumbprint被填充: --> $Thumbprint = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXXXX"}

您可以通过在变量$Thumbprint之后使用点符号来访问thumbprint,就像这样: --> $Thumbprint.Thumbprint

这样您也可以访问证书的Subject --> $Thumbprint.Subject

在这种情况下,更改变量名将更有意义。:)


0
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXXXX"} 

这个不会起作用,因为你正在使用$_.subject,你应该使用$_.thumbprint

Get-ChildItem -Path Cert:\LocalMachine\My |  Where-Object {$_.Thumbprint -match "0F273F77B77E8F60A8B5B7AACD032FFECEF4776D"}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接