【问题标题】:Get thumbprint of a certificate获取证书的指纹
【发布时间】:2014-04-19 22:19:33
【问题描述】:
我想将证书的指纹存储在这样的变量中:
$thumbprint = 0F273F77B77E8F60A8B5B7AACD032FFECEF4776D
但我的命令输出是:
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXX"}
Thumbprint Subject
---------- -------
0F273F77B77E8F60A8B5B7AACD032FFECEF4776D CN=XXXXXXX, OU=YYYYYYY
我需要删除除该输出的指纹之外的所有内容
有什么想法吗?
【问题讨论】:
标签:
powershell
certificate
【解决方案1】:
您所要做的就是将命令用括号括起来,然后使用点表示法访问Thumbprint 属性。
试试这个:
$Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXXXX"}).Thumbprint;
Write-Host -Object "My thumbprint is: $Thumbprint";
如果您从命令返回多个证书,则您必须将指纹连接成单个字符串,可能使用-join PowerShell 运算符。
$Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXXXX"}).Thumbprint -join ';';
Write-Host -Object "My thumbprints are: $Thumbprint";
【解决方案2】:
您可以使用Select-Object 仅获取Thumbprint-property:
Get-ChildItem -Path Cert:\LocalMachine\My |
Where-Object {$_.Subject -match "XXXXXXX"} |
Select-Object -ExpandProperty Thumbprint
【解决方案3】:
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXXXX"}
这个永远不会起作用,因为你使用的是$_.subject,你应该使用$_.thumbprint:
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Thumbprint -match "0F273F77B77E8F60A8B5B7AACD032FFECEF4776D"}
【解决方案4】:
在运行此命令后填充变量 $Thumbprint
--> $Thumbprint = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "XXXXXXX"}
您可以像这样在变量 $Thumbprint 之后使用点符号来访问指纹
--> $Thumbprint.Thumbprint
这样您还可以访问证书的主题
--> $Thumbprint.Subject
在这种情况下,重命名变量会更有意义。 :)