PowerShell Active Directory列出所有多值属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerShell Active Directory列出所有多值属性相关的知识,希望对你有一定的参考价值。

不确定我是否在这里追逐野鹅但是根据主题,我需要获得一个AD属性列表,对于用户对象类,它是多值的。

例如,proxyAddresses交换特定属性是多值的,其中extensionAttribute *仅接受单个字符串。

我们使用了一个高度自定义的模式,虽然我可以浏览每个属性文档,但我宁愿通过PowerShell获取上述属性的列表。

我尝试过使用ldp.exe但无法获得所需的结果,并且想知道是否有办法通过PowerShell或.Net托管代码执行此操作。

提前感谢任何帮助/指针。

答案

因此,您必须查询目录的Schema部分并查找objectClass attributeSchema和属性isSingleValued(FALSE)。区别名称wichh不变的部分是:CN=Schema,CN=Configuration

首先尝试使用CSV:

csvde -f MultivaluedAttributes.csv -d CN=Schema,CN=Configuration,DC=MySubdomain,DC=MyDomain,DC=com -r "(&(objectclass=attributeSchema)(isSingleValued=FALSE))" -l lDAPDisplayName

这是powershell代码。

# LDAPSchemaQuery.PS1
try
{
  $dn = New-Object System.DirectoryServices.DirectoryEntry ("LDAP://179.22.21.01/CN=Schema,CN=Configuration,DC=MyDomain,DC=MyExt","MyUser", 'MyPassword')
  # Query into the Schema
  # csvde -f MultivaluedAttributes.csv -d CN=Schema,CN=Configuration,DC=office,DC=coyotesystems,DC=com -r "(&(objectclass=attributeSchema)(isSingleValued=FALSE))" -l lDAPDisplayName
  $Rech = new-object System.DirectoryServices.DirectorySearcher($dn)
  #$Rech.filter = "(&(objectclass=user)(mail=*)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))"
  $Rech.filter = "(&(objectclass=attributeSchema)(isSingleValued=FALSE))"
  $Rech.SearchScope = "subtree"
  $dumy=$Rech.PropertiesToLoad.Add("lDAPDisplayName")

  $adAttributes = $Rech.findall()
  foreach ($adAttribute in $adAttributes) 
  {
    $multivaluedAttribute =  try{$adAttribute.Properties["lDAPDisplayName"]}catch{""}
    $multivaluedAttribute
  }
}
catch
{
  Write-Verbose "LDAPSchemaQuery : PB with $($adAttribute.Path)"
}

以上是关于PowerShell Active Directory列出所有多值属性的主要内容,如果未能解决你的问题,请参考以下文章

powershell PowerShell:列出Active Directory子网

powershell PowerShell:备份Active Directory组策略#PowerShell#ActiveDirecoty

powershell 使用powershell添加Active Directory组成员

powershell PowerShell:Active Directory中的操作系统计数

powershell PowerShell:按收件人类型交换Active Directory查询

powershell PowerShell:从Active Directory获取计算机的上次登录时间