上一节C#操作AD及Exchange Server总结(一)写了对AD的操作,新建AD用户后,通常都需要为此用户开启Exchange邮箱,接下来写如何远程操作Exchange。
操作exchange会用到新的DLL,需要安装Windows power shell,安装后在路径:C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0(测试机为64位)下找到 System.Management.Automation.dll,在项目中引入。
1、为AD用户新建邮箱
上一节我们在AD中加入并启用了一个用户Employee01,下面我们继续在上一节创建的项目中编写代码,为该用户开启邮箱。
新建一个ExchangeMange.cs文件,添加下面的方法:
public void AddExchangeUser(string identity, string alias)
{
string runasUsername = @"contoso\管理员账号";
string runasPassword = "管理员密码";
SecureString ssRunasPassword = new SecureString();
foreach (char x in runasPassword)
{
ssRunasPassword.AppendChar(x);
}
PSCredential credentials =
new PSCredential(runasUsername, ssRunasPassword);
var connInfo = new WSManConnectionInfo(new Uri("http://exchange服务器IP/PowerShell"),
"http://schemas.microsoft.com/powershell/Microsoft.Exchange",
credentials);
connInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
var runspace = RunspaceFactory.CreateRunspace(connInfo);
var command = new Command("Enable-Mailbox");
command.Parameters.Add("Identity", identity);
command.Parameters.Add("Alias", alias);
runspace.Open();
var pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(command);
var results = pipeline.Invoke();
Console.WriteLine("通道错误数:" + pipeline.Error.Count);
runspace.Dispose();
}
代码解释:
这段代码对应的powershell命令相当于本地运行的“Enable-Mailbox -Identity ‘rzh.com/CompanyA/Employee01‘ -Alias ‘Employee01‘”
编写测试代码:
static void Main(string[] args)
{
ExchangeMange manage = new ExchangeMange();
Console.WriteLine("Start to enable user maibox...");
try
{
manage.AddExchangeUser("Employee01@contoso.com", "Employee01");
}
catch (System.Management.Automation.RuntimeException ex)
{
Console.WriteLine("enable user maibox error...");
Console.WriteLine(ex);
Console.ReadLine();
}
Console.WriteLine("Finish to enable user maibox...");
Console.ReadLine();
}
此时运行代码会报出下面的错误
错误信息很详细,说明了出错的原因,服务器不支持客户端请求的身份验证机制。
需要对客户端和服务器端进行一些配置。
2、配置客户端和服务器
客户端配置:
运行gpedit.msc进入本地组策略管理器,计算机配置》管理模版》Windows组件》WinRM》WinRM客户端
启用允许为加密通信,启用受信任的主机并添加exchange服务器IP地址到TrustedHostsList
服务器端配置:
启用IIS基本身份验证
SSL设置中不要求SSL
再次运行代码
用以上示例可以看到如何利用System.Management.Automation的类型和方法对Exchange进行操作的整个过程,其他的 操作唯一不同的就是command命令,只要我们知道Powershell的命令,就可以替换上面代码中的Command段,进行操作。
1、AD操作总结
2、Exchange操作总结
这是我自己的一些小总结,希望对读者有所帮助
原文:http://www.cnblogs.com/ningang/p/4321709.html