В отличие от пользователей (CN=Users
) после установки в Active Directory нет контейнера CN=Printers
.
Принтеры публикуются в Active Directory в соответствующем контейнере компьютеров. Что означает связанный компьютерный контейнер? Что ж, откройте оснастку MMC «Пользователи и компьютеры Active Directory» и выполните следующую процедуру:
- Выберите дополнительные функции в меню просмотра.
- Выберите «Пользователи», «Контакты», «Группы» и «Компьютеры» в качестве контейнеров в меню просмотра.
- Перейдите к объекту компьютера (который теперь отображается как контейнер), которому принадлежит ваш принтер.
- Нажмите на плюсик контейнера компьютера. Там вы увидите объект принтера.
Итак, вы видите, что принтеры публикуются в Active Directory в соответствующем контейнере компьютера (к которому принадлежит принтер), а не в одном общем контейнере, таком как CN=Printers
.
Таким образом, для поиска объекта принтера в Active Directory необходимо указать другой путь LDAP. Например, вы можете указать корень вашей Active Directory в качестве корня поиска:
using (DirectoryEntry entry = new DirectoryEntry())
{
entry.Path = "LDAP://xxx.xxx.xxx.xxx/DC=domainName,DC=com";
entry.Username = @"domainName.com\Administrator";
entry.Password = "SecurePassword";
using (DirectorySearcher search = new DirectorySearcher(entry))
{
search.Filter = "(objectCategory=printQueue)";
SearchResult result = search.FindOne();
if (result != null)
{
ResultPropertyCollection fields = result.Properties;
foreach (String ldapField in fields.PropertyNames)
{
foreach (Object myCollection in fields[ldapField])
Console.WriteLine(String.Format("{0,-20} : {1}",
ldapField, myCollection.ToString()));
}
}
}
}
Конечно, вы также можете указать в качестве корня поиска путь LDAP к компьютеру, на котором находится общий доступ к вашему принтеру. Например, если ваш принтер используется совместно на компьютере с именем server10
, и этот компьютер находится в контейнере CN=Computers
, укажите этот путь LDAP:
LDAP://xxx.xxx.xxx.xxx/CN=server10,CN=Computers,DC=domainName,DC=com
Если вы используете общий принтер на контроллере домена, путь LDAP немного отличается (поскольку по умолчанию объекты компьютеров контроллера домена расположены в организационной единице OU=Domain Controllers
):
LDAP://xxx.xxx.xxx.xxx/CN=DomainControllerName,OU=Domain Controllers,DC=domainName,DC=com
person
Hans
schedule
06.05.2012