Мастер имитации делегирования управления с помощью PowerShell

Я хочу передать управление организационным подразделением TestUsers пользователю NickA и предоставьте ему следующие разрешения:

  1. Создание, удаление и управление учетными записями пользователей
  2. Сброс паролей пользователей и принудительное изменение пароля при следующем входе в систему
  3. Прочитать всю информацию о пользователе
  4. Создать, удалить и управлять группами
  5. Изменить членство в группе

Единственный метод, который я нашел, - это следующий g, но я не могу найти правильные разрешения для назначения:

$acc  = Get-ADUser NickA
$sid  = new-object System.Security.Principal.SecurityIdentifier $acc.SID
$guid = new-object Guid bf967aba-0de6-11d0-a285-00aa003049e2 
$ou   = Get-ADOrganizationalUnit -Identity TestUsers
$acl  = Get-ACL -Path "AD:$($ou.DistinguishedName)"
$acl.AddAccessRule($(new-object System.DirectoryServices.ActiveDirectoryAccessRule $sid,"CreateChild,DeleteChild","Allow",$guid))
Set-ACL -ACLObject $acl -Path "AD:$($ou.DistinguishedName)"
3
задан 19 July 2016 в 18:36
2 ответа

Наконец-то я сделал это с помощью PowerShell. Благодаря следующим сообщениям TechNet Справочник по GUID Exchange 2007 и Обновить скелет ACL я смог делегировать управление организационным подразделением TestUsers пользователю NickA и предоставить разрешения, которые я изначально опубликовал.

$OU   = Get-ADOrganizationalUnit -Identity "OU=TestUsers,DC=contoso,DC=private"
$SID  = new-object System.Security.Principal.SecurityIdentifier $(Get-ADUser "NickA").SID
$GUIDUserOBJ  = new-object Guid bf967aba-0de6-11d0-a285-00aa003049e2
$GUIDGroupOBJ = new-object Guid bf967a9c-0de6-11d0-a285-00aa003049e2
$GUIDNull     = new-object Guid 00000000-0000-0000-0000-000000000000 

$ACL  = Get-ACL -Path "AD:$($OU.DistinguishedName)"

#Create a hashtable to store the GUID value of each schema class and attribute
$ADRootDSE = Get-ADRootDSE
$GUIDMap = @{}
Get-ADObject -SearchBase ($ADRootDSE.SchemaNamingContext) -LDAPFilter "(schemaidguid=*)" -Properties lDAPDisplayName,schemaIDGUID | % {$GUIDMap[$_.lDAPDisplayName]=[System.GUID]$_.schemaIDGUID}

$ACL.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule $SID,"CreateChild,DeleteChild","Allow",$GUIDUserOBJ,"ALL"))
$ACL.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule $SID,"GenericAll","Allow",$GUIDNull,"Descendents",$GUIDMap["user"]))
$ACL.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule $SID,"CreateChild,DeleteChild","Allow",$GUIDGroupOBJ,"ALL"))
$ACL.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule $SID,"GenericAll","Allow",$GUIDNull,"Descendents",$GUIDMap["group"]))

Set-ACL -ACLObject $ACL -Path "AD:$($OU.DistinguishedName)"
1
ответ дан 3 December 2019 в 06:57

Я еще не занимался построением ACL с помощью PowerShell, но это можно сделать с помощью старой команды DSACLS, которая была частью RSAT и средств поддержки с Windows Server 2003.

dsacls "OU=Test,DC=domain,DC=com" /I:S /G "domain\user:CA;Reset Password";user

Положите DN делегированной OU заключите в кавычки и поместите пользователя после параметра / G (grant). Параметр / I: S указывает ACE наследовать только дочерние объекты, а параметр CA означает Control Access.

Подробнее о синтаксисе можно найти на ] TechNet или другие сайты. Если вам нужно использовать PowerShell, ознакомьтесь с документацией к поставщику Active Directory для обновления ACL .

1
ответ дан 3 December 2019 в 06:57

Теги

Похожие вопросы