Get-PrimaryGroup

По мотивам темы в форуме, и просто чтобы не забыть🙂

Скрипт получает Primary Group пользователя. В отличии от остальных групп, primary содержится не в атрибуте пользователя MemberOf, а в PrimaryGroupId. Более того, в отличии от MemberOf в котором указываются DN групп, в PrimaryGroupID указывается лишь номер группы. Узнать какая группа соответствует какому номеру можно из свойства группы PrimaryGroupToken. В итоге с использованием AD Cmdlets получается вот такая конструкция:

Function Get-PrimaryGroup ($User)
{
    $groups = @{}
    Get-QADGroup -IncludedProperties PrimaryGroupToken | foreach {$groups[$_.PrimaryGroupToken]=$_.name}
    
    Get-QADUser $User -IncludedProperties PrimaryGroupId | 
    foreach {
        $_ | Add-Member -Type "NoteProperty" -Name "PrimaryGroup" -Value ($groups[$_.primaryGroupId]) -PassThru 
    }
}

На выходе из функции будут объекты пользователей полученные с помощью Get-QADUser, но с добавленным свойством — PrimaryGroup:

[PS <40> C:\Root] Get-PrimaryGroup -User Иванов| Format-List name, prim*

Name           : Иванов Иван
PrimaryGroup   : Domain Users
PrimaryGroupId : 513


[PS <42> C:\Root] Get-PrimaryGroup -User Ив* | Format-Table name, logonname, prim*

Name             LogonName   PrimaryGroup PrimaryGroupId
----             ---------   ------------ --------------
Иванов Иван      Ivanov      Domain Users            513
Иванищенко Фёдор Ivanichenko Domain Users            513

Разумеется при большом количестве групп имеет смысл не получать таблицу соответствий PrimaryGroupToken каждый раз, а закешировать её, или применять запрос LDAP для того чтобы отбор нужной группы выполнялся уже с помощью ресурсов Active Directory.

комментария 3 to “Get-PrimaryGroup”

  1. www.MaximumExchange.ru Says:

    А нафига оно? — primary group-то?
    В смысле зачем вообще нужна Primary group, и зачем ее тут запрашивать?

  2. www.MaximumExchange.ru Says:

    add-on: я вобщем-то знаю, зачем нужны p.g., мне интересна ваша точка зрения🙂

  3. Xaegr Says:

    Забыл упомянуть топик — http://forum.sysfaq.ru/index.php?showtopic=11604
    Зачем автору нужны primary group честно говоря не знаю🙂 Знаю что они не перечисляются в атрибуте memberof, и нужны для совместимости с альтернативными системами и древним софтом🙂 Ну и по умолчанию primary group у всех пользователей домена — Domain Users🙂


Обсуждение закрыто.

%d такие блоггеры, как: