Active Directory 2003 – 被删除的委托权限

我有一个运行在Windows 2003,2000模式下的域。 我正在尝试创build一个AD组来为用户授予临时域pipe理员权限,以节省必须给他们永久的DA。

我已经在OU中创build了一个AD组:g.Temp_DomainAdmin:Groups / Admin / Delegated Permissions。

我有一个计划的任务运行一个VBScript从这个组中删除所有用户。

该任务作为服务帐户运行,权限有限:s.purge_temp_da

我已经将OU的权限委派给服务帐户,以允许完全控制它下面的组。

手动运行任务完美地工作。 但是,无论什么时候在午夜运行,都会以“-2147024891 – 一般访问被拒绝错误”失败。 查看g.Temp_DomainAdmin组显示委派的权限已经消失。

有任何想法吗? 这是VBScript:

Option Explicit Dim objRootDSE, strDomain, objGroup, objUser, strdistinguishedName, arrDnComponents Const ADS_PROPERTY_DELETE = 4 ' Retrieve domain information Set objRootDSE = GetObject("LDAP://RootDSE") strDomain = objRootDSE.Get("DefaultNamingContext") ' Bind to the group Set objGroup = GetObject("LDAP://CN=G.ADM.Temp_DomainAdmin,OU=Delegated Permissions,OU=Admin,OU=Resource Access,OU=groups," & strDomain) ' Iterate through the user objects in the group For Each objUser In objGroup.Members on error resume next ' Get the users distinguishedName strdistinguishedName = objUser.distinguishedName wscript.echo "Removing " & objUser.cn ' Remove the user from the group objGroup.PutEx ADS_PROPERTY_DELETE, "member", Array(strdistinguishedName) objGroup.SetInfo wscript.echo "Removed " & objUser.cn if err.number <> 0 then wscript.echo err.number & " - " & err.description end if on error goto 0 Next wscript.echo "Done" 

谢谢

您遇到Active Directory的“adminSDHolder”和“SDProp”function的影响。 此function的目的是将已知的ACL应用于作为特殊保护组成员的安全主体(用户,组和计算机)。 您的“g.Temp_DomainAdmin”组,作为“域pipe理员”的成员,已被标记为“adminCount”值“1”,现在受“adminSDHolder”约束。 当此线程运行时,“g.Temp_DomainAdmin”组中的ACL将重置为已知的ACL。 (如果你想知道更多的细节,微软对这个function的描述就更加冗长了 。)

您可以修改adminSDHolder ACL以允许您尝试执行的操作,但通常不推荐使用该操作。

由于您的脚本有权添加/删除“Domain Admins”组的成员,因此最好使用具有“Domain Admins”成员身份的用户来运行该脚本,从而避免需要为脚本委派任何权限。 (基本上,如果有人“拥有”脚本执行上下文,即使是你试图安排的代表,他们也可以使用这个脚本将自己添加到“域pipe理员”中,委托使事务复杂化,并且不提供真正的安全性。 )