![]() |
-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 '*' Код:
get-adcomputer -searchbase "ou=computers,ou=ttt,dc=domain,dc=local" -searchscope 1 -f '*' Ожидаемым оказался только результат с уровнем поиска Subtree - т.е. все машины в "computers" и дочерних OU. Я что-то не верно понял или не верно делаю? Спасибо заранее. |
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. Поэтому вопросы и непонимание лишь от лени и нехотения читать документацию. |
Спасибо за ответ.
При чем тут лень, я честно прочитал полную справку по командлету (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, просто замечательно. |
Да, кто-то всегда виноват, что неполная, написан бред.
"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 |
Я это понял, я не пойму зачем нужен вообще searchscope, в случае если известен DN? Я имею в виду, что проще указать DN в get-adorganizationalunit или get-adobject параметру -identity и также получить список всех необходимых атрибутов (-properties *| fl bla,bla). Получается это просто более "длинно-написуемая" альтернатива identity.
|
Конкретное применение для командлетов Get-AD* - возможность использовать Filter.
|
filter - это, конечно, удобно, но смысл фильтра если в итоге максимум что мы сможем найти - это 1 объект? Вот вы использовали фильтр во 2м своем примере, заведомо зная что ответом будет пустота, а зная DN (и указав его в searchbase) и указав фильтр * при searchscope 0 мы точно знаем, что ответом будет объект, DN которого мы ввели. Как говорится "конец немного предсказуем". Спасибо за помощь, searchscope удобный параметр, но смысла base search я так и не понял, и, думаю, не пойму.
|
Время: 09:56. |
Время: 09:56.
© OSzone.net 2001-