5

我找到了解释如何在 Exchange Server 上运行 PowerShell 脚本的指南,但所有指南都要求计算机已加入域,并且大多数指南似乎使用变通方法,而不是最佳实践。

有没有办法使用 C#.NET 或 VB.NET 远程连接到 Exchange Server?

本质上,我想使用管理员凭据连接到我的 Exchange Server(我将在程序中提供加密的凭据),并使用 PowerShell scriptlet 创建一个邮箱。就这些。

我想将应用程序作为控制台应用程序启动,一旦确认功能,我就可以将其实现到 Web 表单应用程序或 MVC 中。

任何意见是极大的赞赏!

4

1 回答 1

6

我最近不得不处理一个类似的问题,下面的代码帮助我通过与远程 Exchange 服务器的安全连接来执行该功能。

Runspace remoteRunspace = null;
PSCredential psc = null;
// If user name is not passed used the credentials of the current farm account
if (!string.IsNullOrWhiteSpace(username))
{
    if (!string.IsNullOrWhiteSpace(domain))
        username = domain + "\\" + username;
    SecureString secpassword = new SecureString();
    if (!string.IsNullOrEmpty(password))
    {
        foreach (char c in password)
        {
            secpassword.AppendChar(c);
        }
    }
    psc = new PSCredential(username, secpassword);
}

WSManConnectionInfo rri = new WSManConnectionInfo(new Uri(RemotePowerShellUrl), PowerShellSchema, psc);
if (psc != null)
    rri.AuthenticationMechanism = AuthenticationMechanism.Credssp;
remoteRunspace = RunspaceFactory.CreateRunspace(rri);
remoteRunspace.Open();

Pipeline pipeline = remoteRunspace.CreatePipeline();
Command cmdSharePointPowershell = new Command(Commands.AddPSSnapin.CommandName);
cmdSharePointPowershell.Parameters.Add(Commands.AddPSSnapin.Name, MicrosoftSharePointPowerShellSnapIn);
pipeline.Commands.Add(cmdSharePointPowershell);
pipeline.Invoke();

当然,您将进行一些常用的用户组成员配置、远程安全/不安全远程连接的服务器允许等等。这篇文章可能会有所帮助。

于 2013-04-03T15:22:13.577 回答