Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] -searchScope, нужен кэп. (http://forum.oszone.net/showthread.php?t=290706)

nokogerra 10-11-2014 11:10 2427273

-searchScope, нужен кэп.
 
Доброго времени суток.
есть "ou=computers,ou=ttt,dc=domain,dc=local", в нем 2 ou "1" и "2". В "1", "2" и самом "computers" есть объекты компьютеров. Почему
Код:

get-adcomputer -searchbase "ou=computers,ou=ttt,dc=domain,dc=local" -searchscope 0 -f '*'
не показывает ничего, хотя должен показывать только машины из "computers" (если правильно трактовать справку " Основной запрос (типа "Base") выполняет поиск только по текущему пути или в текущем объекте.")
Код:

get-adcomputer -searchbase "ou=computers,ou=ttt,dc=domain,dc=local" -searchscope 1 -f '*'
показывает только машины в "computers", хотя должен показывать только машины в "1" и "2", опять же если правильно трактовать справку "Одноуровневый запрос (типа "OneLevel") выполняет поиск в непосредственных дочерних элементах этого пути или объекта."

Ожидаемым оказался только результат с уровнем поиска Subtree - т.е. все машины в "computers" и дочерних OU. Я что-то не верно понял или не верно делаю?
Спасибо заранее.

Kazun 10-11-2014 11:26 2427277

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx - Specifying the Search Scope

Base. A base search limits the search to the base object. The maximum number of objects returned is always one.

One-level. A one-level search is restricted to the immediate children of a base object, but excludes the base object itself. This setting can perform a targeted search for immediate child objects of a parent object. For example, consider a parent object P1 and its immediate children: C1, C2, and C3. A one-level search evaluates C1, C2, and C3 against the search criteria, but does not evaluate P1. Use a one-level search to enumerate all children of an object. An IADsContainer enumeration translates to a one-level search.

Поэтому вопросы и непонимание лишь от лени и нехотения читать документацию.

nokogerra 10-11-2014 12:59 2427319

Спасибо за ответ.
При чем тут лень, я честно прочитал полную справку по командлету (get-help), как часто предлагается на msdn и то, что она неполная - не моя вина. Очевидно я не правильно понял принцип уровней поиска, но и после прочтения указанной статьи понять сокровенный смысл base-поиска не могу:
"This search is useful to verify the existence of an object for retrieving group membership. For example, if you have an object distinguished name, and you must verify the object's existence based on the path, you can use a one-level search. If the search fails, you can assume that the object may have been renamed or moved to a different location, or you were given the wrong information about the object. " - то, что написано в кавычках просто бред, для выяснения существования объекта по строгому имени нет вообще никакой необходимости использовать searchscope (более того, это не удобно), а то что написано дальше "например, бла-бла, вы можете использовать one-level search", при этом данный пример описывает работу base search, просто замечательно.

Kazun 10-11-2014 14:00 2427341

Да, кто-то всегда виноват, что неполная, написан бред.

"ou=computers,ou=ttt,dc=domain,dc=local" - в данном примере base object. Запрос типа Base служит для чтения атрибутов у base object, когда известен DN. В этом случаем мы указывает - DN,требуемые атрибуты, и если требуется фильтр.

Скажем потребовалось запросить атрибут description:

Код:

Get-ADOrganizationalUnit -searchbase "ou=computers,ou=ttt,dc=domain,dc=local" -searchscope 0 -Filter * -Properties Description
Или задать еще фильтр:

Код:

Get-ADObject -searchbase "ou=computers,ou=ttt,dc=domain,dc=local" -searchscope 0 -Filter "Name -ne 'computers'" -Properties Description

nokogerra 10-11-2014 14:33 2427364

Я это понял, я не пойму зачем нужен вообще searchscope, в случае если известен DN? Я имею в виду, что проще указать DN в get-adorganizationalunit или get-adobject параметру -identity и также получить список всех необходимых атрибутов (-properties *| fl bla,bla). Получается это просто более "длинно-написуемая" альтернатива identity.

Kazun 10-11-2014 15:54 2427396

Конкретное применение для командлетов Get-AD* - возможность использовать Filter.

nokogerra 11-11-2014 06:08 2427692

filter - это, конечно, удобно, но смысл фильтра если в итоге максимум что мы сможем найти - это 1 объект? Вот вы использовали фильтр во 2м своем примере, заведомо зная что ответом будет пустота, а зная DN (и указав его в searchbase) и указав фильтр * при searchscope 0 мы точно знаем, что ответом будет объект, DN которого мы ввели. Как говорится "конец немного предсказуем". Спасибо за помощь, searchscope удобный параметр, но смысла base search я так и не понял, и, думаю, не пойму.


Время: 09:56.

Время: 09:56.
© OSzone.net 2001-