【发布时间】:2012-11-13 17:19:12
【问题描述】:
这个问题是在一个在 DC 服务器上运行(或正在远程访问 DC)的服务的上下文中,这样该服务可以访问 Active Directory,但该服务不知道 Active Directory 服务器有多少服务器应该有,服务器地址是什么,等等......
此外,必须在 Active Directory 设置可能涉及一组联合服务器的假设下编写服务。
所以通过一个例子来说明问题 -
假设我正在尝试通过 Powershell v2(或者您可以使用目录服务)运行一个非常简单的 AD 查询,以获取所有 ADUser:
$users = 获取 ADUser
现在让我们假设示例公司 Contoso 在纽约(用于其纽约办事处)和西雅图(用于其西雅图办事处)有一个 AD 服务器。此外,该服务将指向作为纽约数据中心服务器的 DC。
所以为了简单起见,假设 $users 返回两个用户对象,其显示名称属性为:
丹跳 吉姆·威尔逊
现在让我们假设西雅图服务器已关闭,所以我再次运行查询并得到:
丹跳
据我了解 - AD 不会返回指示西雅图服务器已关闭的错误..它只会返回它可以找到的用户..
我知道可以检测到已删除的对象,因此,如果我保存了所有用户的列表,我可能会验证该用户是否已被删除...但这有点开销,特别是如果我感兴趣的不仅仅是只是一个用户列表
那么有没有办法在我运行查询之前检测到联合集群中的一个或多个 AD 服务器已关闭?
【问题讨论】:
-
1. “AD服务器”的“联合集群” - 你能澄清一下吗? AD 出现在域和林中。您可以在域之间和林之间建立信任,但通常“联合”一词适用于 SAML 或 WS-Federation 方案。 2. 由于 DC Locator 机制,不必将应用程序配置为知道 DC 名称。 3. Active Directory 使用多主机复制,这提供了与收敛的松散一致性,这意味着域内的所有用户最终都应该在每个 DC 上。鉴于所有这些,您的问题对我来说没有多大意义。你能澄清一下吗?
-
我正在讨论一个 WS-Federation 场景,但这只是为了说明一种可能的场景。将运行此查询的程序是在 Active Directory 域控制器上运行的服务,因此该服务完全不知道域和林之间的信任。该服务使用目录服务获取所有用户和组信息,只要它有权查看所有林和域。可以假设服务可以访问它需要的东西,但我不清楚如何识别什么时候丢失了
-
...一些 AD 版本可能较旧,但我试图说明的示例应该是一个实际示例。虽然我确信你的观点主要是有效的,但我被告知我将有几种情况我不能依赖复制(基于历史经验)并且将不得不面对这样一个事实,即某些数据可能存在于某些服务器上有时可能无法访问。如果这没有意义,那么我只需要回到告诉我情况的人那里......
-
...但这些是我收到的卡片,我无法控制我将使用的服务器的 Exchange 设置。我之前没有在 Exchange 上做过很多工作,所以如果我的解释令人沮丧,请原谅我。我只是想弄清楚这一点,但似乎找不到合适的搜索词......或者我只是在追鬼:/如果你认为我确实在追鬼,请告诉我 :)
-
抱歉延迟回复 - 我不像以前那样经常来这里,因为 IMO 的一些节制过于热情,破坏了这个地方的气氛。无论如何,首先 WS-Federation 与您要解决的问题无关,因此您可以搁置他们告诉您的任何内容。该服务可能不知道域拓扑,但是一旦您可以访问 DC,就可以通过查询获得所需的信息。而且,如果他们不能依赖复制,AD 就会损坏。
标签: powershell active-directory powershell-2.0 directoryservices