Назад | Перейти на главную страницу

Как установить или снять флажок «Менеджер может обновлять список участников» с помощью PowerShell

Для группы рассылки я могу установить параметр Менеджер может обновлять список участников используя ADUC mmc, но я не могу найти, как это сделать с помощью PowerShell. Более того, даже Менеджер может обновлять список участников свойство установлено в ADUC, в листинге PowerShell для Get-QADGroup ManagerCanUpdateMembershipList свойство по-прежнему установлено на ложный.

В среде AD 2003 это двухэтапный процесс:

Add-QADPermission -Identity -Account -Rights WriteProperty -Property "Member" -ApplyTo 'ThisObjectOnly'

Set-QADGroup -ManagedBy

Первая команда установит необходимые разрешения и будет работать, но если в поле «Управляется кем» в ADUC еще нет учетной записи пользователя, это поле останется пустым, и флажок не будет установлен. Вторая команда заполнила это поле, и когда оба условия будут выполнены, флажок будет отмечен.

Имейте в виду, что ManagerCanUpdateMembershipList, указанный в свойствах группы, по-прежнему будет иметь значение FALSE в среде AD без сервера активных ролей. Это поле, по-видимому, является собственностью Active Roles Server.

У меня есть сообщение в блоге, в котором объясняется, как это сделать с помощью модуля ActiveDirectory и ADSI, вы можете найти его Вот, если вам просто нужен код:

 <#
.Synopsis
   Sets manager property on AD group and grants change membership rights.
.DESCRIPTION
   Sets manager property on AD group and grants change membership rights.
   This is done by manipulating properties directly on the DirectoryEntry object
   obtained with ADSI. This sets the managedBy property and adds an ACE to the DACL
   allowing said manager to modify group membership.
.EXAMPLE
   Set-GroupManager -ManagerDN "CN=some manager,OU=All Users,DC=Initech,DC=com" -GroupDN "CN=TPS Reports Dir,OU=All Groups,DC=Initech,DC=com"
.EXAMPLE
   (Get-AdGroup -Filter {Name -like "sharehost - *"}).DistinguishedName | % {Set-GroupManager "CN=some manager,OU=All Users,DC=Initech,DC=com" $_}
#>
function Set-GroupManager {
    param (
        [Parameter(Mandatory=$true, ValueFromPipeline=$false, ValueFromPipelinebyPropertyName=$True, Position=0)]
        [string]$ManagerDN,
        [Parameter(Mandatory=$true, ValueFromPipeline=$false, ValueFromPipelinebyPropertyName=$True, Position=1)]
        [string]$GroupDN
        )

    try {
        Import-Module ActiveDirectory -NoClobber

        $mgr = [ADSI]"LDAP://$ManagerDN";
        $identityRef = (Get-ADUser -Filter {DistinguishedName -like $ManagerDN}).SID.Value
        $sid = New-Object System.Security.Principal.SecurityIdentifier ($identityRef);

        $adRule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ($sid, [System.DirectoryServices.ActiveDirectoryRights]::WriteProperty, [System.Security.AccessControl.AccessControlType]::Allow, [Guid]"bf9679c0-0de6-11d0-a285-00aa003049e2");

        $grp = [ADSI]"LDAP://$GroupDN";

        $grp.InvokeSet("managedBy", @("$ManagerDN"));
        $grp.CommitChanges();

        # Taken from here: http://blogs.msdn.com/b/dsadsi/archive/2013/07/09/setting-active-directory-object-permissions-using-powershell-and-system-directoryservices.aspx
        [System.DirectoryServices.DirectoryEntryConfiguration]$SecOptions = $grp.get_Options();
        $SecOptions.SecurityMasks = [System.DirectoryServices.SecurityMasks]'Dacl'

        $grp.get_ObjectSecurity().AddAccessRule($adRule);
        $grp.CommitChanges();
    }
    catch {
        throw
    }
}

это можно найти Вот

Ваш вопрос заинтриговал меня, и я использовал Google, чтобы найти ответ ... У меня нет опыта работы с командлетами Quest для PoSh.

В описании New-QADGroup сказано, что для использования параметра ManagerCanUpdateMembershipList требуется подключение к серверу ActiveRoles.