2012-10-29 5 views
0

C#을 통해 원격으로 Exchange 서버에 명령을 보내려고합니다. PowerShell을 통해 직접이 작업을 수행하면 작동합니다. 그러나 C#을 통해 PowerShell에 명령을 내리면 실패합니다. 여기 Exchange에 대한 원격 실행 공간 연결이 실패합니다.

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ExchangeFQDN/PowerShell/ -Authentication Kerberos 
Import-PSSession $Session 
Enable-Mailbox -Identity "SomeIdentity" -Shared 

는 C#을 (작동하지 않습니다) :
var connectionInfo = new WSManConnectionInfo(
    new Uri("http://ExchangeFQDN/PowerShell/"), 
    "http://schemas.microsoft.com/powershell/Microsoft.Exchange", 
    new PSCredential(username, password)); 
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos; 

//Next line throws a PSInvalidOperationException 
using (var runspace = RunspaceFactory.CreateRunspace(connectionInfo)) //<- fails 
{ 
    //Execute Enable-Mailbox command 
} 

내가 가진 특정 사용자가 여기에

내가 (작동) PowerShell에서 뭘하는지입니다 이 원격 로그인 권한. PowerShell은이 사용자로 실행되며 사용자는 C# 코드로 가장합니다. 또한 PSCredential으로 전달되는이 사용자의 사용자 이름과 비밀번호이기도합니다.

무엇이 잘못 되었습니까?

답변

0

두 가지 솔루션을 다음과 같은 시도 : 현재의 자격 증명을 사용합니다 PSCredential.Empty 새로운 PSCredential (사용자 이름, 암호)를 대체 자격 증명

    1. 체크 사용자 이름, 도메인 이름 및 암호, 그런 다음 powershell에 사용했던 것과 동일한 사용자로 프로그램을 실행하십시오.

    아마도 오류 메시지에 대한 정보를 더 많이 제공 할 수 있습니다.