2017-05-11 2 views
1

를받지 않고 수입되어 있는지 확인하는 방법이 있나요 다시 인증서가 이미 설치되어있는 경우 사용자에게 암호를 다시 한 번 물어보고 싶지 않습니다. 지루한 일이다.나는 PFX 파일을 설치하려면 다음 스크립트를 가지고 PFX의 인증서가 현재 암호

암호를 묻지 않고 PFX 파일을 이미 가져 왔는지 확인하는 방법이 있습니까? 인증서의 지문을 알고 있다면 그럼 난 당신이 인증서가 설치되어 있는지 여부를 확인하기 위해 Test-Path cmdlet을 사용할 수

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 * beeing이 설치되어 있다는 것을 인식하지 못합니까? –

+0

나는 그럴 수 있다고 생각하지만, 그것은 동기화를 벗어날 수있는 여분의 정보를 저장하고있다. 누군가가 PFX 파일을 업데이트하고 지문을 업데이트하는 것을 잊어 버리면 엉망입니다. 지문이 있거나 암호가없는 PFX 파일을 가져올 수 있는지 확인하는 방법이 있습니까? – bradgonesurfing