【发布时间】:2017-06-23 09:22:59
【问题描述】:
在代码中,我使用此代码将计算机帐户移动到另一个活动目录 OU 中。
DirectoryEntry eLocation = new DirectoryEntry("LDAP://" + DevicePath, ADAdmin, ADPass);
DirectoryEntry nLocation = new DirectoryEntry("LDAP://" + ADMoveOU, ADAdmin, ADPass);
eLocation.MoveTo(nLocation);
eLocation.CommitChanges();
eLocation.RefreshCache();
nLocation.Close();
eLocation.Close();
从这里代码返回所有好的计算机移动到另一个 OU。但是,我现在需要使用此代码为用户刷新数据。
DirectoryEntry Entry = new DirectoryEntry(Domain, ADUSER, ADpassword);
Entry.RefreshCache();
DirectorySearcher Search = new DirectorySearcher(Entry);
Search.Filter = string.Format("(&(objectCategory=computer)(cn={0}))", DeviceName);
这就是这段代码告诉我计算机没有移动的问题 实际上,我必须在移动和刷新之间等待 30 秒才能获得正确的活动目录数据。
所以,我不明白怎么回事。我什至刷新了缓存,为什么移动结果在移动后没有立即刷新?
【问题讨论】:
-
可能有 2 个原因导致此问题: DirectoryEntry 的 UsePropertyCshe 属性设置为 true。应设置为假。另一个原因是当您在一个域控制器上进行更改并连接到另一个域控制器时。在这种情况下,您必须等待复制通过。在多 DC 环境中始终连接到同一个 DC
-
我在 Cashe 上尽我所能。所以我猜它来自控制器的延迟,但不确定如何设置代码来处理这个
-
将域控制器名称传递给 DirectoryEntry 构造函数,例如。 G。 LDAP://mydomaincontroller.mydomain.com。您可以通过调用 DomainController.FindOne 方法获得有效的工作 DC
标签: c# .net active-directory