如何在C#中使用LDAP以编程方式启用AD用户的交换和Lync帐户

纳比尔·卡兹(Nabeel Qazi)

我正在使用以下代码段在域服务器上创建一个新的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命名空间的需要,我无法创建/启用Exchange邮箱cdoexm.dll我试着cdoexm.dll在域控制器,邮箱服务器和客户端访问服务器上定位,但是很简单。

我知道执行此操作的另一种方法是使用Powershell cmdlet,但我不想这样做。

现在精确地陈述我的问题:

  • 如何添加COM cdoexm.dll或者
  • 还有其他使用方法IMailBoxStore吗?或者
  • 除了PowerShell,是否有其他方法可以启用AD用户的邮箱和Lync帐户?

由于CDOEXM从Exchange 2010开始不再使用,因此前两个问题已得到解决。

秃头

从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查找解决方案,
或者使用c#调用PowerShell。

要使用C#调用PowerShell:

添加“用法”:

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

调用cmdlet:

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;
}

以上内容是从以下链接(未经测试)复制而来的:

http://codingchris.com/2012/02/15/creating-exchange-2010-mailboxes-in-c/ http://codingchris.com/2014/02/11/creating-exchange-2013-mailbox-in- C/

但是,如果您想使用PowerShell以外的解决方案,可能上述方法没有用...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C#中使用LDAP以编程方式启用AD用户的交换和Lync帐户

来自分类Dev

如何在C#中以编程方式启用MSMQ?

来自分类Dev

如何在Windows 8.1的Metro App中使用C#以编程方式更改字体样式和字体粗细

来自分类Dev

如何在 C# Core 2 中使用 LDAP 查找用户组

来自分类Dev

通过安全的LDAP以编程方式创建AD帐户

来自分类Dev

如何在许多模拟单个AD用户帐户的许多网络PC上创建C#服务

来自分类Dev

如何在C#中使用PowerShell启用网卡?

来自分类Dev

如何在Rails 6中使用acitve admin登录到管理员帐户和用户帐户?

来自分类Dev

如何在Windows 10中使用MBN以编程方式发送和接收SMS?

来自分类Dev

使用 c# 以编程方式创建 SFTP 用户

来自分类Dev

如何在C#中使用逗号从用户获取值?

来自分类Dev

以函数式编程兼容的方式在 C# 中交换数组键和值

来自分类Dev

如何以编程方式检查是否使用C#启用或禁用了Windows桌面设置“自动排列图标”?

来自分类Dev

如何以编程方式创建Google Apps用户帐户

来自分类Dev

如何将Lync与多个交换帐户一起使用?

来自分类Dev

如何在C中使用'cmpxchg8b'汇编指令实现原子比较和交换?

来自分类Dev

如何在Java中使用CAS(比较和交换)?

来自分类Dev

如何在 mvc vs 2017 中设置个人用户帐户和启用迁移

来自分类Dev

如何使用TechTalk.SpecFlow和C#以编程方式验证测试失败?

来自分类Dev

在C#.ASP中使用动态/以编程方式创建的网格视图启用分页

来自分类Dev

如何以编程方式交换大写锁定和ESC键?

来自分类Dev

如何在C#和MFCC提取中使用OpenSmile

来自分类Dev

从CSV禁用/启用AD用户帐户

来自分类Dev

如何在 LDAP 中集成 Bluemix 公共帐户/用户?

来自分类Dev

如何以编程方式创建帐户和联系人?

来自分类Dev

如何在WPF中使用MVVM设计模式以编程方式选择和设置数据网格行的焦点

来自分类Dev

如何使用C#以编程方式下载GitHub数据

来自分类Dev

如何以编程方式更新VSTS文件(使用C#)

来自分类Dev

允许用户使用 AD B2C 本地帐户注册和登录 Azure 门户

Related 相关文章

  1. 1

    如何在C#中使用LDAP以编程方式启用AD用户的交换和Lync帐户

  2. 2

    如何在C#中以编程方式启用MSMQ?

  3. 3

    如何在Windows 8.1的Metro App中使用C#以编程方式更改字体样式和字体粗细

  4. 4

    如何在 C# Core 2 中使用 LDAP 查找用户组

  5. 5

    通过安全的LDAP以编程方式创建AD帐户

  6. 6

    如何在许多模拟单个AD用户帐户的许多网络PC上创建C#服务

  7. 7

    如何在C#中使用PowerShell启用网卡?

  8. 8

    如何在Rails 6中使用acitve admin登录到管理员帐户和用户帐户?

  9. 9

    如何在Windows 10中使用MBN以编程方式发送和接收SMS?

  10. 10

    使用 c# 以编程方式创建 SFTP 用户

  11. 11

    如何在C#中使用逗号从用户获取值?

  12. 12

    以函数式编程兼容的方式在 C# 中交换数组键和值

  13. 13

    如何以编程方式检查是否使用C#启用或禁用了Windows桌面设置“自动排列图标”?

  14. 14

    如何以编程方式创建Google Apps用户帐户

  15. 15

    如何将Lync与多个交换帐户一起使用?

  16. 16

    如何在C中使用'cmpxchg8b'汇编指令实现原子比较和交换?

  17. 17

    如何在Java中使用CAS(比较和交换)?

  18. 18

    如何在 mvc vs 2017 中设置个人用户帐户和启用迁移

  19. 19

    如何使用TechTalk.SpecFlow和C#以编程方式验证测试失败?

  20. 20

    在C#.ASP中使用动态/以编程方式创建的网格视图启用分页

  21. 21

    如何以编程方式交换大写锁定和ESC键?

  22. 22

    如何在C#和MFCC提取中使用OpenSmile

  23. 23

    从CSV禁用/启用AD用户帐户

  24. 24

    如何在 LDAP 中集成 Bluemix 公共帐户/用户?

  25. 25

    如何以编程方式创建帐户和联系人?

  26. 26

    如何在WPF中使用MVVM设计模式以编程方式选择和设置数据网格行的焦点

  27. 27

    如何使用C#以编程方式下载GitHub数据

  28. 28

    如何以编程方式更新VSTS文件(使用C#)

  29. 29

    允许用户使用 AD B2C 本地帐户注册和登录 Azure 门户

热门标签

归档