将证书指纹保存为powershell中的变量

时间:2015-10-16 21:36:06

标签: powershell awk formatting

Powershell newblart在这里。我试图将指纹从特定证书保存为变量,以便稍后在脚本中使用。我走得很远!但还不够远。我可以通过cert模板过滤证书,所以我缩小到显示的单个指纹,但还有其他输出阻止了我。我试图使用split方法(错误地)开始切断输出。这就是我到目前为止所拥有的:

PS C:\Users\Administrator> Get-ChildItem Cert:\LocalMachine\my | ? {$_.Extensions | ? {$_.oid.friendlyname -match "Template" -and $_.Format(0) -match "Kerberos Authentication"}}


    Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\my


Thumbprint                                Subject
----------                                -------
8635AF13624FEA042664BCDD0EC4661C7E07FA0F

我需要的只是指纹,而不是所有其他输出。 我尝试使用split,但看起来这个输出不是字符串。这是我得到分裂的错误。 (在这里,我只是试图分开一个风口,看看它在哪里引导我,空间可能是错误的尝试和拆分):

PS C:\Users\Administrator> Get-ChildItem Cert:\LocalMachine\my | ? {$_.Extensions | ? {$_.oid.friendlyname -match "Template" -and $_.Format(0) -match "Kerberos Authentication"}} | %{ $_.Split(' ')[1]; }
Method invocation failed because [System.Security.Cryptography.X509Certificates.X509Certificate2] doesn't contain a method named 'Split'.
At line:1 char:157
+ ... cation"}} | %{ $_.Split(' ')[1]; }
+                    ~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

任何帮助都会被挪用。再次感谢。

2 个答案:

答案 0 :(得分:0)

第一个语句的返回值是一个对象,具有Thumbprint属性,这就是它显示的方式。但该表格式仅用于显示目的。您通常不会对该输出采取行动。相反,你会想要获得该物业。所以你可以:

将整个语句包装在括号中并使用点.,如下所示:

(Get-ChildItem ...etc).Thumbprint

使用Select-Object

Get-ChildItem ...etc | Select-Object -ExpandProperty Thumbprint

首先分配给变量并执行上述任一操作:

$cert = Get-ChildItem ...etc

$cert.Thumbprint
$cert | Select-Object -ExpandProperty Thumbprint

答案 1 :(得分:0)

首先,确定要分配给变量的证书的指纹,然后使用以下语法:

对于“当前用户”证书存储区:

$MyCert = $(Get-ChildItem Cert:\CurrentUser\my | Where-Object {$_.Thumbprint -eq '[THUMBPRINT]'})

对于本地计算机证书存储:

$MyCert = $(Get-ChildItem Cert:\LocalMachine\my | Where-Object {$_.Thumbprint -eq '[THUMBPRINT]'})