使用 DirectoryService 更新用户

发布于 2024-12-24 02:48:36 字数 1278 浏览 1 评论 0原文

因此,我设法滚动一些代码来从外部源更新 AD。但是,我对它的工作原理有点困惑。 我有一个人,其 sAMAccount xxxx 存在于不同的 OU 中。 现在,我只想更新特定 OU 中的信息,因此我将其放入 LDAP 路径中。不过,不同的 OU 中的信息似乎也已更新?

这可能吗?是因为只有一个“Person”对象,还是“GetDirectoryEntry()”没有把我放在树中我想到的地方?或者..我只是想象,而我看到的奇怪的事情是因为其他原因。

一些代码

            DirectoryEntry entry = new DirectoryEntry(LDAP://my.path/ou=myou, dc=my, dc=path);
            entry.Username = myUser
            entry.Password = myPass
            DirectorySearcher searcher = new DirectorySearcher(entry);
            searcher.Filter = @"(&(objectClass=Person)(SamAccountname=" + person.id + "))";
            SearchResult result = searcher.FindOne();

                    try
                    {
                        DirectoryEntry user = result.GetDirectoryEntry();
                        user.Properties["displayName"].Value = person.DisplayName;
                        user.Properties["givenName"].Value = person.Firstname;
                        user.CommitChanges();
                        user.Close();
                    }
                    catch (DirectoryServicesCOMException ex)

编辑:它确实更新了所有 OU 中的 Person 对象。因此,要么 Person 对象在整个 AD 中是一个且相同的,这使得我尝试仅在特定的 OU 中更新它们毫无意义,要么“result.GetDirectoryEntry”忽略了我认为我只在特定的 OU 中工作的事实在我的 LDAP 路径中声明的 OU。

So I managed to get some code rolling for updating the AD from an external sourced. However, I'm a bit confused about how it works.
I have a person with sAMAccount xxxx existing in different OUs.
Now, I only want to update the info in a specific OU, so I put that in my LDAP path. Still, it seem that the info has been updated in different OU's as well?

Could that be possible? Is it because there's only one "Person" object, or do the "GetDirectoryEntry()" not put me where I thought in the tree? Or.. am I only imagine and the weird things I see is becausde of something else.

Some code

            DirectoryEntry entry = new DirectoryEntry(LDAP://my.path/ou=myou, dc=my, dc=path);
            entry.Username = myUser
            entry.Password = myPass
            DirectorySearcher searcher = new DirectorySearcher(entry);
            searcher.Filter = @"(&(objectClass=Person)(SamAccountname=" + person.id + "))";
            SearchResult result = searcher.FindOne();

                    try
                    {
                        DirectoryEntry user = result.GetDirectoryEntry();
                        user.Properties["displayName"].Value = person.DisplayName;
                        user.Properties["givenName"].Value = person.Firstname;
                        user.CommitChanges();
                        user.Close();
                    }
                    catch (DirectoryServicesCOMException ex)

EDIT: It did update the Person object in all the OU's. So either the Person object is one and the same in the whole AD, whick makes my attempt to update them in only the specific OU pointless, or does the "result.GetDirectoryEntry" ignore the fact that I thought I was working only in my specific OU declared in my LDAP path.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

四叶草在未来唯美盛开 2024-12-31 02:48:36

功能已确认,但仍然想知道为什么我需要特定的测试,因为它仍然是相同的用户。无论如何,我们开始吧!

Functionality confirmed, still wonder why I needed a specific test-ou since it's still the same users. Anyway, here we go!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文