PowerShell设置AD组的所有者可以更新组员


设置组的所有者可以更新组员可以有三种方法

1.通过Exchange端的PS命令设置,这些命令在非exchange环境上不可用

2.通过安装Active Roles模块,使用Quest命令实现,但是需要安装第三方软件

3.使用ADSI实现

以下函数使用了方法3实现组管理员可以更新组员

cls
function Set-GroupManager($GroupName,$ManagerSAM)

{


try {
Import-Module ActiveDirectory -NoClobber
        $ManagerDN = (Get-ADUser -Identity $ManagerSAM -Properties * |select DistinguishedName).DistinguishedName.ToString().Trim()
        $GroupDN = (Get-ADGroup -Identity $GroupName -Properties * |select DistinguishedName).DistinguishedName.ToString().Trim()
$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");#这个数值默认都是这个,除非被修改. 可以通过ADSI中CN=Configuration -> CN=Extended-Rights -> CN=Self-Memberships -> rightsGuid

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

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

[System.DirectoryServices.DirectoryEntryConfiguration]$SecOptions=$grp.get_Options();
$SecOptions.SecurityMasks=[System.DirectoryServices.SecurityMasks]'Dacl'

$grp.get_ObjectSecurity().AddAccessRule($adRule);
$grp.CommitChanges();
}
catch
{
write-host"Update failed..."
}
}

& Set-GroupManager "DCGroups" "Managers"
本文链接: https://www.pstips.net/ps-set-ad-group-manager-can-update-member-list.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注