我正在尝试检查计算机上是否安装了特定证书。我正在使用以下Powershell脚本
SET-LOCATION CERT:\LOCALMACHINE\my
$certificate = "CN=*XXXX"
$ListOfCertificate = GET-CHILDITEM | Select-Object -Property Subject
$ListOfCertificate.ForEach({if($_==$certificate) {Write-Output "Certficate Successfully Installed"} })
ListOfCertifiacte对象看起来像这样:
Thumbprint Subject
---------- -------
yu39B5646D569XXXXXX
ui05F79VVVVVVVVVV CN=*XXXX
6kj6A3AAAAAAAAAAAA CN=XXXXXXXX
1ygfA1NNNNNNNNNNNN CN=XXXXXXXX
我只想遍历此列表,并检查Subject属性是否包含“ * XXXX”值。但是上面的代码不起作用。它抛出错误说$ certifiacte无法识别为cmdlet或脚本。我在做什么错了?
答案 0 :(得分:1)
这可以以简单得多的方式在一行中完成:
If (Get-ChildItem Cert:\LocalMachine\My\ | Where-Object {$_.Subject -like CN=*XXXX}) {"Cert installed."}
缩短:
If (Get-ChildItem Cert:\LocalMachine\My\ | ? Subject -like CN=*XXXX) {"Cert installed."}