2011-02-10 2 views
2

C#을 통해 powershell을 사용하여 Exchange 2010 작업을 수행하고 싶습니다. 아래 그림과 같이 연결을 설정할 수 있습니다. 내 질문 : 명시 적으로 자격 증명을 지정하지 않고 어떻게 연결을 만들 수 있습니까? 현재 Windows 사용자 ID를 통해 가져올 수 없습니까?Exchange 2010 + Powershell 및 C# 문제 현재 사용자로부터 PSCredential 가져 오는 중

SecureString password = new SecureString(); 
string str_password = "pass"; 
string username = "userr"; 
string liveIdconnectionUri = "http://exchange.cccc.com /Powershell?serializationLevel=Full"; 

foreach (char x in str_password) 
{ 
password.AppendChar(x); 
} 

PSCredential credential = new PSCredential(username, password); 

// Set the connection Info 
WSManConnectionInfo connectionInfo = new WSManConnectionInfo((new Uri(liveIdconnectionUri)), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential); 

connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Default; 
+1

CredentialCache.DefaultCredentials 및 DefaultNetworkCredentials는 비어 있습니다. – hoetz

답변

2

보안 토큰에서 PSCredential 개체를 만드는 방법을 모르겠습니다. 일반 워크 플로는 보안 상승과 관련된 구멍을 피하기 위해 이러한 상황에서 사용자에게 자격 증명을 요구하는 것입니다.

사용자는 PSHostUserInterface.PromptForCredentials 메서드를 사용하여 자격 증명을 묻는 메시지를 표시해야합니다.

캐싱 자격 증명의 몇 가지 예는 "PowerShell Script: Export-PSCredential and Import-PSCredential"입니다. 자신의 책임하에 사용

3

시도 [System.Net.NetworkCredential]::DefaultCredentials보십시오. 워드 프로세서에서 :

DefaultCredentials은 응용 프로그램이 실행되고있는 현재의 보안 컨텍스트에 대한 시스템 자격 증명을 나타냅니다. 클라이언트 쪽 응용 프로그램의 경우 일반적으로 응용 프로그램을 실행하는 사용자의 Windows 자격 증명 (사용자 이름, 암호 및 도메인)은 입니다. PoshCode.org script에서

이 기능은 PS cred하게에 순 cred하게 변환하는 방법을 보여줍니다 : 원래 PoshCode 기능은 내가 제거하는 것이 그 안에 어떤 외부, 사용하지 않는 스크립트를했다

Function ConvertTo-PSCredential { 
#.Synopsis 
# Helper function which converts a NetworkCredential to a PSCredential 
Param([System.Net.NetworkCredential]$Credential) 
    New-Object System.Management.Automation.PSCredential ` 
       "$($Credential.UserName)@$($Credential.Domain)", ` 
       (ConvertTo-SecureString $Credential.Password -AsPlainText -Force) 
} 

하는 것으로.

관련 문제