Active Directory中是否存在任何主键(或)唯一键?

时间:2018-10-23 03:59:17

标签: windows powershell active-directory ldap

我正在从PowerShell运行以下命令:

Get-ADUser -Server ad.com -Filter '*' -Properties '*' Export-Csv 'C:\Users\myFolder\file.csv' -NoTypeInformation -Delimiter '|'

只需尝试标识可用作“主键”的属性,例如EmployeeID或EmployeeNumber。 广告属性列表:[链接] AD是否提供主键?

2 个答案:

答案 0 :(得分:5)

如果您是pretty well documented

专有名称是主键。作为分层数据库,具有规范名称的对象的完整路径在林中必须是唯一的。

samAccountNameuserPrincipalName在域中的安全主体之间也必须是唯一的。

objectSID在整个域中都是唯一的。

objectGUID是全局唯一的。

也就是说,我已经看到用户主体名称或samAccountName重复的奇怪情况,但这会引起问题,因为系统认为它们必须是唯一的。

EmployeeNumber是用户指定的属性。旨在使用您的用户数据库或HR数据库中的ID进行填充,以使人口统计数据和组织数据保持最新。该属性本身没有约束。

答案 1 :(得分:4)

如果您需要用户和组条目中的唯一值,则可以查看属性objectSID。 LDAP字符串表示形式是 OctetString ,但是您可以找到将其转换为ASCII干净的所谓SDDL表示形式的代码。

请注意,SID包含域的SID作为前缀。因此,如果域被迁移,则会生成新的SID,并将旧的SID放置在属性sIDHistory中,直到由AD管理员清除为止。

但是,如果您要查找与外部数据源同步数据的主键,我会在该外部数据源中创建唯一值并将其放在employeeIDemployeeNumber中。 / p>

许多其他属性必须是唯一的,但某些属性并不是真正稳定或局部的,因此不适合使用,例如用于同步数据:

objectGUID是全局唯一的,因为它是一个编码为 OctetString 的UUID(请参阅RFC 4122)。但是IIRC在所有副本中都不稳定。

samAccountName userPrincipalName 通常来自人名。广告中的条目的RDN也基于 cn ,该名称大多数时候都包含该人的姓名。在结婚/离婚等之后,可能会更改从人的名字得出的值。

=>

  • 最好的同步属性是自己生成的ID(例如UUID)。
  • 第二好的属性是 objectSID sIDHistory 结合使用来定位条目。确保将 objectSID 的当前值同步回您的数据源。