如何修改OU中所有用户/组的自定义属性X?

时间:2014-12-12 12:57:19

标签: powershell exchange-server custom-attributes

我需要在Exchange中为~500个邮箱更改自定义属性1和2 与邮箱关联的用户帐户分布在AD中的10-15个OU,每个不同的OU需要不同的自定义属性。

理想情况下,我不想为每个邮箱运行以下命令两次

Set-Mailbox user@domain.com -CustomAttribute1 "X"

SUDO

获取AD中给定OU中所有用户,电子邮件组,联系人,房间的列表 将每个自定义属性1更改为X
将每个自定义属性2更改为X

1 个答案:

答案 0 :(得分:0)

使用LDAP过滤器:

(|
  (objectCategory=person)
  (&
    (objectCategory=group)
    (!
      (groupType:1.2.840.113556.1.4.803:=2147483648)
    )
  )
  (msExchResourceMetaData=ResourceType:Room)
)

以上匹配以下对象类型:

  • 用户和联系人:(objectCategory=person)
  • 通讯组:(&(objectCategory=group)(!(groupType:1.2.840.113556.1.4.803:=2147483648)))(从技术上讲,这意味着:不属于安全组的组)
  • 房间资源:(msExchResourceMetaData=ResourceType:Room)

您可以选择与Get-ADObject匹配该过滤条件的AD对象,并使用Set-ADObject修改其属性:

$ou   = 'OU=some unit,DC=example,DC=com'
$fltr = '(|(objectCategory=person)' +
          '(&(objectCategory=group)' +
            '(!(groupType:1.2.840.113556.1.4.803:=2147483648)))' +
          '(msExchResourceMetaData=ResourceType:Room))'

Get-ADObject -LDAPFilter $fltr -SearchBase $ou -SearchScope Subtree |
  Set-ADObject -Replace @{
    'extensionAttribute1' = 'X'
    'extensionAttribute2' = 'X'
  }

我不完全确定属性名称,因为我手头没有Exchange。您必须在此处使用其LDAP名称,而不是任何花哨的别名。