2017-05-11 4 views
1

を取得せずにインポートされるかどうかを確認する方法はありますまた、証明書がすでにインストールされている場合は、パスワードを再度検索するようユーザーに尋ねる必要はありません。面倒です。私はPFXファイルをインストールするには、以下のスクリプトを持っているPFXの証明書は、現在、パスワード

パスワードを尋ねずにPFXファイルがインポートされているかどうかを確認する方法はありますか?は、それから私は、証明書の拇印を知っている場合、証明書がインストールされているかどうかを確認するためにTest-Pathコマンドレットを使用することができます

function Is-PfxInstalled($cert) { 

    // ??????? 

} 


$cert = Get-ChildItem -Path .\secrets\certificates\ssl\certificate.pfx 
if(!($cert | Is-Pfx-Installed) 
{ 
    while($true){ 
     write-host "Enter Password" -foregroundcolor yellow 
     try{ 
      $pass = read-host -AsSecureString 
      $cert | Import-PfxCertificate -CertStoreLocation Cert:\CurrentUser\My ` 
       -Exportable ` 
       -Password $pass 
      break 
     }catch{ 
      write-host "Incorrect password" -foregroundcolor red 
      continue 

    } 

} 
write-host "Certificate installed" -foregroundcolor green 
} 

答えて

0

に私のコードを変更することができます。

注:私はテスト以来Test-CertificateIsInstalledにあなたの関数と改名が承認動詞です:

function Test-CertificateIsInstalled 
{ 
    Param 
    (
     [string]$Thumbprint, 
     [string]$Location = 'Cert:\CurrentUser\My\' 
    ) 

    Test-Path (Join-Path $Location $Thumbprint) 
} 

機能はデフォルト場所としてCert:\CurrentUser\My使用しますが、別のものを指定することができます。使用例:

Test-CertificateIsInstalled 007790F6561DAD89B0BCD85585762495E358F8A2 
+0

私はユーザーにパスワードを尋ねる必要があります。 – bradgonesurfing

+0

はい、私はそれを使用するためにあなたが*拇印を知っていなければならないと書いたのです。証明書の拇印が分かっている場合は、ユーザーにパスワードを尋ねる必要はありません。コードにハードコードされている値を使用してください。または、あなたのスクリプトは、* cert *がインストールされていることを認識していませんか? –

+0

私はそれが可能性があると思うが、それは同期の外に出る可能性がある情報の1つの余分な部分を格納している。誰かがPFXファイルを更新して拇印を更新するのを忘れた場合、それは混乱します。最初に拇印やパスワードを持たずにPFXファイルがインポートされていることを確認する方法はありませんか? – bradgonesurfing

関連する問題