Многое нужно сказать там.
1.Наличие атрибута
Для запроса атрибута он должен сначала присутствовать в СХЕМЕ вашего каталога.SCHEMA определяет типы и атрибуты, которые могут содержать записи каталога.В схеме этот атрибут должен быть определен как «МОЖЕТ быть» или «ДОЛЖЕН быть» представлен в типе.Например, атрибут objectClass
ДОЛЖЕН присутствовать во всех типах.
Если я взгляну на схему моего Windows 2K8 R2, я смогу увидеть ваш атрибут:
Теперь, если я использую Apache Directory Studio, я вижу, что physicalDeliveryOfficeName
присутствует в 12 типах (11 на обычном сервере, забудьте SlxAuteur)
Заключениеэтой первой части : Вы, вероятно, (если у вас достаточно прав) установите этот атрибут на user
или inetOrgPerson
.
2.Способ поиска атрибута
Здесь вы найдете пример использования искателя каталогов.Я добавляю код для изменения атрибута physicalDeliveryOfficeName
для указанного пользователя.
$dn = New-Object System.DirectoryServices.DirectoryEntry ("LDAP://192.168.183.138:389/dc=societe,dc=fr","administrateur@societe.fr","blabla")
# Look for users
$Rech = new-object System.DirectoryServices.DirectorySearcher($dn)
$rc = $Rech.filter = "((objectCategory=person))"
$rc = $Rech.SearchScope = "subtree"
$rc = $Rech.PropertiesToLoad.Add("distinguishedName");
$rc = $Rech.PropertiesToLoad.Add("sAMAccountName");
$rc = $Rech.PropertiesToLoad.Add("ipphone");
$rc = $Rech.PropertiesToLoad.Add("telephoneNumber");
$rc = $Rech.PropertiesToLoad.Add("memberOf");
$rc = $Rech.PropertiesToLoad.Add("distinguishedname");
$rc = $Rech.PropertiesToLoad.Add("physicalDeliveryOfficeName"); # Your attribute
$liste = $Rech.findall()
foreach ($usr in $liste)
{
# Write-Host $usr.Properties["samaccountname"]
if ($usr.Properties["samaccountname"] -eq "massin")
{
Write-Host $usr.Properties["distinguishedname"]
$dnUser = New-Object System.DirectoryServices.DirectoryEntry ("LDAP://192.168.183.138:389/$($usr.Properties["distinguishedname"])","administrateur@societe.fr","blabla")
$dnUser.put("physicalDeliveryOfficeName", "1 rue de la source")
$res = $dnUser.setinfo()
$res
}
}
Вот результат:
Примечания: поиск в каталоге
- Узел, с которого начинается поиск
- требуемых атрибутов (это не обязательно, но рекомендуется), если вы их не дадите, вы НЕ МОЖЕТЕ быть уверены, что онинайдено.
- Глубина (базовое, одноуровневое, поддерево)
- Фильтр
Если атрибут не запрошен или является пустым, он не будет присутствовать врезультат