2014-12-22 3 views
1

:나는 다음과 같은 코드를 사용하여 도메인 서버에 새 AD 사용자를 만드는 오전

DirectoryEntry newUser = directoryEntry.Children.Add("CN=" + model.Account.FullName, "user"); 
if (model.Account.SamAccountName != null) newUser.Properties["sAMAccountName"].Value = model.Account.SamAccountName; 
newUser.CommitChanges(); 

setUserPassword("CN=" + model.Account.FullName + "," + model.Account.Path, model.Account.Password); 

newUser.RefreshCache(); 

if (model.Account.FirstName != null) newUser.Properties["givenName"].Add(model.Account.FirstName); 
if (model.Account.LastName != null) newUser.Properties["sn"].Add(model.Account.LastName); 
if (model.Account.MiddleName != null) newUser.Properties["initials"].Add(model.Account.MiddleName); 

if (model.Account.UPNLogon != null && model.Account.DomainName != null) newUser.Properties["userPrincipalName"].Add(model.Account.UPNLogon + "@" + model.Account.DomainName); 
if (model.Organization.DisplayName != null) newUser.Properties["displayName"].Add(model.Organization.DisplayName); 
if (model.Organization.Email != null) newUser.Properties["mail"].Add(model.Organization.Email); 

newUser.Properties["LockOutTime"].Value = 0; //unlock account 
newUser.Properties["userAccountControl"].Value = 0x200; // enable account 
newUser.CommitChanges(); 

string homeMDB = profile.Exchange13_Profile.ExchangeDB; 

IMailboxStore mailbox; 
try 
{ 
    IMailboxStore mailbox = (IMailboxStore)NewUser; 
    mailbox.CreateMailbox(sHomeMDB); 
    NewUser.CommitChanges(); 
} 
catch (InvalidCastException e) 
{ 
    MessageBox.Show(e.Message.ToString()); 
} 

위의 코드가 성공적으로 새 사용자를 생성하고 그것을 AD 서버에서 가능하게합니다. 그러나 IMailboxStore 네임 스페이스에 cdoexm.dll이 필요하므로 Exchange 사서함을 만들거나 사용할 수 없습니다. 나는 도메인 컨트롤러, 메일 박스 서버 및 클라이언트 액세스 서버에 있지만 정맥에 cdoexm.dll을 찾으려고했습니다.

이 작업을 수행하는 또 다른 방법은 Powershell cmdlet을 사용하는 것입니다.하지만 그렇게하고 싶지는 않습니다.

이제 정확하게 명시 내 질문 :

  • 어떻게 COM cdoexm.dll을 추가? 또는
  • IMailBoxStore을 다른 방법으로 사용할 수 있습니까? 또는
  • AD 사용자의 사서함 및 PowerShell 이외의 Lync 계정을 사용할 수있는 방법이 있습니까?

CDOEXM이 이제 Exchange 2010에서 구식이 아니므로 처음 두 질문이 해결되었습니다.

답변

0

Exchange 2007부터 CDOEXM이 제거되었습니다. 그리고이 어셈블리는 COM이 아닙니다.

http://blogs.msdn.com/b/deva/archive/2010/01/13/update-technologies-not-available-with-exchange-2010-their-migration-reference-s.aspx

몇 가지 검색을 했나, 나는 단지 PowerShell을
를 사용하여 솔루션을 찾거나 PowerShell을 호출하는 C#을 사용할 수 있습니다. (

PSCredential newCred = (PSCredential)null; 
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(new Uri("http://exchangeserver01.my.domain/powershell?serializationLevel=Full"), 
    "http://schemas.microsoft.com/powershell/Microsoft.Exchange", newCred); 
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos; 
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo); 
PowerShell powershell = PowerShell.Create(); 

PSCommand command = new PSCommand(); 
command.AddCommand("Enable-Mailbox"); 
command.AddParameter("Identity", user.Guid.ToString()); 
command.AddParameter("Alias", user.UserName); 
command.AddParameter("DomainController", ConnectingServer); 
powershell.Commands = command; 

try 
{ 
    runspace.Open(); 
    powershell.Runspace = runspace; 
    Collection<psobject> results = powershell.Invoke(); 
} 
catch (Exception ex) 
{ 
    string er = ex.InnerException.ToString(); 
} 
finally 
{ 
    runspace.Dispose(); 
    runspace = null; 

    powershell.Dispose(); 
    powershell = null; 
} 

은 위의 다음 링크에서 복사되는 다음 cmdlet을 호출

using System.Management.Automation; 
using System.Management.Automation.Remoting; 
using System.Management.Automation.Runspaces; 

: "using이"

추가 :

은 PowerShell을 호출하는 C# .NET을 사용하여 테스트되지 않음) :

,982,592,349,825,813,210 http://codingchris.com/2014/02/11/creating-exchange-2013-mailbox-in-c/

하지만 PowerShell을 이외의 솔루션을 원하는대로 될 수 있습니다 위는 ...

+0

CDOEXM에 대한 정보를 제공해 주셔서 감사합니다. PowerShell 스크립트가 속임수를 쓰지 만 다른 것이 있으면 내게 알려주지 만 –

0

기존 AD 사용자의 사서함을 사용하려면 enable-mailuser powershell 명령을 사용하십시오.

Lync 계정을 사용하려면 enable-csuser powershell 명령을 사용하십시오.

+0

감사 빌렘 유용하지 않습니다. 나는 powershell 대체 알아하지만이 일을 더 나은 방법을 찾는. –

+1

나는 특히 Lync가가는 한을 모르고 있습니다. –

관련 문제