2012-10-31 5 views
1

Powershell 자격 증명을 만드는 데 문제가 있습니다. 나는 파일에서 암호화 된 문자열을 읽고 문자열을 보안 문자열로 변환하고이를 사용하여 자격 증명을 만듭니다. 내가 오류는 다음과 같습니다Credentalial 생성 중 오류

새로운-개체 : "에서는 System.Security.SecureString"> "에서는 System.Security.SecureString"를 입력하는 "PSCredential"에 대한 : 인수가 "1"값으로 변환 할 수 없습니다 " 형식 "System.RuntimeType"의 "System.Security.SecureString"값을 "System.Security.SecureString"을 입력하여 변환 할 수 없습니다. " 여기

나는 코드를 사용하고 있습니다 :

$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "athenpoly", $(Read-EncString F:\Scripting\1-Dev\RSA\p_ftp_dellpoly.rsa) 


Function Read-EncString { 
    param ([String]$InputFile) 

    $encrypted = Import-Clixml $InputFile 

    $key = (3,42,5,77,67,12,76,9,8,9,4,5,6,55,32,81,23,12,3,55,2,9,6,1,5,32,4,55,6,8,56,12) 

    $csp = New-Object System.Security.Cryptography.CspParameters 
    $csp.KeyContainerName = "SuperSecretKeyContainer" 
    $csp.Flags = $csp.Flags -bor [System.Security.Cryptography.CspProviderFlags]::UseMachineKeyStore 
    $rsa = New-Object System.Security.Cryptography.RSACryptoServiceProvider -ArgumentList 5120,$csp 
    $rsa.PersistKeyInCsp = $true 

    $password = [char[]]$rsa.Decrypt($encrypted, $true) -join "" | ConvertTo-SecureString -Key $key 
} 

내가 잘못하고있는 중이 야 어떤 생각을? 나는 자격 증명을 설정하는 방법 파일에서 읽을 때 여기

답변

1

은 다음과 같습니다

$PassSec = ConvertTo-SecureString $($Pass) -AsPlainText -Force 
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $($Domain + "\" + $User),$passSec 

내역 :

1. $Pass -> Password that is imported (Example: [email protected]) 
2. $Domain -> Domain name (Example: Contoso) 
3. $User -> User Name (Example: Admin) 

이것이하는 일은의 암호 Contoso\Admin으로 사용자 이름 변수 $cred을 만드는 것입니다 [email protected]. 이것은 명령과 동일한 결과로 끝납니다 :

$Cred = Get-Credentials "Contoso\Admin" 

프롬프트가 표시되지 않습니다.

+0

감사합니다. Nick. 나는 이것을 작동시킬 수 있었다! 도움에 감사드립니다. – mack