检查安装在cert:PS驱动器中的证书的CN并执行if / else

时间:2013-05-01 22:07:15

标签: powershell certificate

所以我正在尝试确定是否已安装证书,然后如果不执行某些操作。这就是我正在以编程方式进行的操作(我正在跳过大部分的IF部分,因为它很大)(是的,我知道我的格式很糟糕 - 我还在学习它)。我们假设$ product变量= Finance和$ swimlane变量= QA1 ....(这些在我的脚本中设置了)。这个模式下的有效CN是FinanceQA1.mycompany.mydomain.com ......

If ([bool](dir cert:\LocalMachine\My\ | ? { $_.subject -like "cn=$product$swimlane*" }) -eq "FALSE") 
{Write-Host "Certificate not installed..., preparing request..."}
Else {Write-Host "$product Certificate Already Installed,  Skiping..."}

即使cert:\ LocalMachine \ My \ PS存储完全为空(全新的服务器),它仍然会返回ELSE值。我做错了什么?

1 个答案:

答案 0 :(得分:2)

不要与"False"比较。 Oisin今天没有回答这个问题吗?奇怪的。我想下雨的时候倒了。 :-)比较$false。或者更简单地试试这个:

if (!(dir cert:\LocalMachine\My | ? {$_.subject -like "cn=$product$swimlane*"})) {
    ...
}