2010-02-23 3 views

답변

1

나는 이것에 대해 약간의 확인을했기 때문에 프로그래밍 방식으로 암호를 제공하는 명확한 방법을 찾을 수 없었습니다. 나는 그것이 보안상의 이유로이 방법이 될 것으로 생각된다. PowerShell 개발 팀은이 cmdlet에 대한 Credential 매개 변수를 포함하지 않았으므로이를 무시했습니다. 내가 생각할 수있는 유일한 다른 옵션은 SendKeys와 같은 someting을 사용하여 백그라운드 작업을 통해 적시에 PowerShell 콘솔에 개별 암호 문자 키 프레스를 보내는 것입니다 (blech - 그냥 입안에 약간의 소리를 내었습니다). :-)

5
$CertPath = "my.pfx" 
$CertPass = "mypw" 
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPass) 
Set-AuthenticodeSignature -Certificate $Cert -TimeStampServer http://timestamp.verisign.com/scripts/timstamp.dll -FilePath $OutputFilename 

적절한 권한이 있는지 확인하십시오. 그렇지 않으면 X509Certificate2 개체의 인스턴스를 만들 수 없습니다.

0

또 다른 방법은 PS 공급자를 사용하여 인증서 저장소에서 직접 인증서를로드하는 것입니다. Get-PSProviders을 사용하여 컴퓨터에서 사용 가능한 PSProviders를 확인하십시오. 당신이 CERT는 공급자가로드 한 후에는 지금 사용하여 인증서를 얻을 수 있습니다 가져-ChildItem을

실행에서은 인증서가 개인 폴더에 저장되어 있다고 가정하면 인증서 저장소
을 실행하기 시작 certmgr.msc를 인증서 저장소
에 "회사 이름"이 인증서의 제목 속성에 설정되어 있고 해당 폴더에 회사 이름과 함께 인증서 만 있습니다. 인증서를 얻을 수 있습니다.

$my_cert = Get-ChildItem cert:\CurrentUser\My | ? {$_.Subject -match "Company Name"} 

은 $ my_cert 당신이 에 직접 전달할 수 있습니다 인증서 객체가 될 것입니다 설정-AuthenticodeSignature cmdlet을

Set-AuthenticodeSignature -Certificate $my_cert -FilePath fqn_to_dll.dll -Timestampserver "http://timestampurl" 

후 서명, 당신의 상태 특성에 쿼리하여 로그인 상태를 검색 할 수 있습니다 "유효"또는하지 않음

$result = Set-AuthenticodeSignature -Certificate $my_cert -FilePath fqn_to_dll.dll -Timestampserver "http://timestampurl" | Select Status 
if(-Not ($result -eq "Valid")){ 
    Write-Output "Error Signing file: Status: $($result.Status)"  
} 
관련 문제