Как искать членов группы или объекта с рекламой - PullRequest
1 голос
/ 05 апреля 2019

В компании есть структура AD, в которой мне нужно искать имена групп, в которых пользователь является участником.Я знаю, что должно быть в атрибуте "memberof" для пользователей, скажем так, что это не всегда правильно.

Я попробовал приведенный ниже код, чтобы найти имя пользователя (или имя объекта)в атрибуте «members» для всех групп в подразделении, а затем верните имя группы.К сожалению, я думаю, что что-то упустил.Обратный поиск (т. Е. Список членов группы) работает, но в моем случае я не знаю названия групп.Также мне нужны все группы, а не одна.

uname ="*anyoldusername*"

$Searcher = [ADSISearcher]"(member=$uname)"
$Searcher.SearchRoot = [ADSI] "LDAP://mydomainsearchroot"
$Searcher.PageSize = 10000
$result = $Searcher.FindAll().Properties.cn

echo $result

1 Ответ

2 голосов
/ 05 апреля 2019

Это должно сделать это:

$UserName ="TestUser"
$Searcher = [ADSISearcher]""
$Searcher.SearchRoot = [ADSI]"LDAP://mydomainsearchroot"
$Searcher.Filter = "Name=$UserName"
$UserDN = $Searcher.FindOne().properties.distinguishedname
$Searcher.Filter = "(member:1.2.840.113556.1.4.1941:=$UserDN)"
$Searcher.PageSize = 10000
$result = $Searcher.FindAll().Properties.cn
$result

Первый поиск - найти DN пользователя, поскольку это необходимо для фильтра при следующем поиске.Чтобы узнать больше о фильтре "1.2.840.113556.1.4.1941", см. эту документацию .

О, а echo - это псевдоним для записи-вывода в Powershell, лучше использовать его напрямуюили даже полностью опустить его, так как строка или переменная сама по себе будет по умолчанию использовать Write-Output, как вы можете видеть, когда $ result выполняется в конце.

...