在Powershell中读取对象的属性值

时间:2019-03-07 04:45:02

标签: powershell

我正在尝试检查计算机上是否安装了特定证书。我正在使用以下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或脚本。我在做什么错了?

1 个答案:

答案 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."}