2012-12-21 2 views
1

DirectoryServices 쿼리를 호출하려는 PowerShell 스크립트에 많은 어려움이 있습니다. 내가 할 경우 현재,powershell SecureString을 매개 변수 또는 콘솔 항목으로 처리

$password = read-host "Password" -asSecureString 

및 이후

$credential = New-Object System.Management.Automation.PSCredential $username,$password 

모든 것이 잘 작동합니다. 나는 다음 PARAM ($ 암호)로 문자열 매개 변수를 전달하고 시도 할 경우이 코드에 보안 문자열로 변환 :

$password = ConvertTo-SecureString -AsPlainText -Force $password 

광범위한 디버깅 후 나는 이것이 변환의 관점에서 잘 작동 볼 수 있습니다 string을 securestring으로 바꾸지 만, 매개 변수를 사용할 때 DirectoryServices에서 잘못된 사용자/암호를 얻습니다. 콘솔에서 읽을 때 모든 것이 잘 작동합니다. 매개 변수를 수락하기 위해 내가 할 수있는 것에 대한 아이디어 나 매개 변수가없는 경우 콘솔 입력을 얻는 방법에 대한 아이디어가 있습니까?

이 내가 일을 바라고 있었는지,하지만하지 않습니다

if($password -eq $null) { 
    $password = read-host "Password" -asSecureString 
} else { 
    $password = ConvertTo-SecureString -AsPlainText -Force $password 
} 
$credential = New-Object System.Management.Automation.PSCredential $username,$password 
+2

허 : 내 경우에 발견 주위 작품은 다음을이었다? 암호를 입력하고 securestring을 만들고 자격 증명을 만들고 암호를 추출합니다. 왜? 비밀 번호는 변경되지 않습니다 .. –

+0

죄송합니다, 당신이 언급하고있는 마지막 라인을 생략/주석 처리해야합니다, 그것은 디버깅 목적이었습니다. – jackwmc4

+0

몇 가지 추가 디버깅 후, 그것도 보안 문자열 문제가 나타납니다 - 어떤 이유로 디렉토리 서비스는 param에서 왔을 때 문자열을받지 않을 것이지만, 프롬프트가 나타나면 않습니다. 무슨 일이 계속 벌어지고 있는지 아직도 모르겠다. – jackwmc4

답변

0

내가 최근에 만든 스크립트와 같은 문제로 실행되었다.

#Prompts for the username/password, enter the username in the form of DomainName\UserName 
$Credential = get-credential 

#Converts the password to clear text to pass it through correctly as passing through a secure string does not work. 
$Password = $credential.GetNetworkCredential().password 

#Converts the $Credential to just the DomainName/UsernName. 
$Account = $credential.UserName 

는 희망이 상황에서 작동