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
任何帮助都会被挪用。再次感谢。
答案 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]'})