gpt4 book ai didi

c# - 邮件在创建后过早启用 AD 帐户

转载 作者:行者123 更新时间:2023-11-30 15:06:47 25 4
gpt4 key购买 nike

我正在使用 System.DirectoryServices.AccountManagement 库创建一个 AD 用户帐户,然后在使用 PowerShell 运行空间运行 Enable-Mailbox 命令后不久。

当我运行它时,它有时在邮件启用上失败并出现错误“必须为用户邮箱启用 Active Directory 帐户登录。

如果重新运行相同的代码,但只是尝试仅对帐户启用邮件,它工作正常。同样,其他时候它能够创建 AD 帐户和启用邮件。

此链接表明当 Exchange 尝试启用邮件时 AD 仍在配置该帐户:

http://social.technet.microsoft.com/Forums/en-US/exchangesvrdevelopment/thread/d53d91fd-c479-40e4-9791-32cb5da24721?prof=required

这是运行空间代码:

var connectionInfo = new WSManConnectionInfo(new Uri(ConfigurationManager.AppSettings["PSExchangeURI"]), ConfigurationManager.AppSettings["PSExchangeShellURI"], new PSCredential(ConfigurationManager.AppSettings["Username"], ConfigurationManager.AppSettings["Password"].ToSecureString()));
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;

var command = new Command("Enable-Mailbox");
command.Parameters.Add("Identity", userPrincipal.UserPrincipalName);
command.Parameters.Add("Alias", userPrincipal.SamAccountName);
command.Parameters.Add("DisplayName", userPrincipal.DisplayName);
command.Parameters.Add("Database", ConfigurationManager.AppSettings["ExchangeDatabase"]);

using (var runspace = RunspaceFactory.CreateRunspace(connectionInfo)) {
using (var pipeline = runspace.CreatePipeline()) {
runspace.Open();
pipeline.Commands.Add(command);

var results = pipeline.Invoke();
}
}

我还能做些什么来避免这个错误(除了引入线程休眠之外)?

最佳答案

您所看到的很可能是由于复制时间滞后以及交换服务器与不同的 DC 以及 AD 用户创建代码通信。

您应该做的是排列交换器和您的 AD 创建代码以与同一个 DC 通信。

S.DS.AM 下的 PrincipalContext 对象中,从 ConnectedServer 属性中读取 DC 的 FQDN。然后将该值传递给启用邮箱 cmdlet 的 -DomainController 参数。

关于c# - 邮件在创建后过早启用 AD 帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7290129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com