你总是可以把它放在 a 中Try{}
,然后在没有密码的情况下执行相同的命令Catch{}
,但这是一种肮脏的脚本。
Try{
Add-AzureCertificate -serviceName $CloudServiceName -certToDeploy $PfxFile.FullName -ErrorAction 'Stop' -Password $applicationCertsPassword
}
Catch{
Add-AzureCertificate -serviceName $CloudServiceName -certToDeploy $PfxFile.FullName -ErrorAction 'Stop'
}
我想我可能会做的是尝试将证书作为没有密码的对象加载,如果失败,我会知道它有密码。
$OldEA = $ErrorActionPreference
$ErrorActionPreference = SilentlyContinue
If([System.Security.Cryptography.X509Certificates.X509Certificate2]::CreateFromCertFile($pfxfile.fullname)){"No Password"}
$ErrorActionPreference = $OldEA
很确定这会完成你想要的。不过,我现在没有碰巧有一个没有密码的 PFX 文件来验证,因为正如 Jan 指出的那样,它们通常不是你应该拥有的东西。