AD账号加到本机管理员组

时间:2022-12-18 08:47:14

在日常工作中,有时需要将某个AD账号加到本机管理员组中,但是如果用AD中的受限组来做的话,会将Admin组现有的其它成员全部移出来的!下面的脚本就是专门为解决此问题所写的!
以前,我有写一个将AD中的某个账号加到用户电脑的本机管理员的脚本,如下:
Dim oWshNetwork
Set oWshNetwork = WScript.CreateObject("WScript.Network")

Dim strComputer
strComputer = oWshNetwork.ComputerName
'WScript.Echo strComputer


Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators")
Set objUser = GetObject("WinNT://Domain/DomainUser")
objGroup.Add(objUser.ADsPath)
但是这个脚本有个不足,就是如果查到用户"DomainUser"已存在于本机管理员中的话,就是出现一个错误,说用户已经存在,加到开机脚本中后,用户经常会抱怨,所以后来我又经过改进,如下:
Dim sFlag
Dim oWshNetwork
Set oWshNetwork = WScript.CreateObject("WScript.Network")

strComputer = oWshNetwork.ComputerName
sFlag=0
Set colGroups = GetObject("WinNT://" & strComputer & "/Administrators")

For Each objUser In colGroups.Members
    'Wscript.Echo  objUser.Name
   
Next

strTestString = "/" & strComputer & "/"

Set colGroups = GetObject("WinNT://" & strComputer & "/Administrators")

For Each objUser In colGroups.Members
    If InStr(objUser.AdsPath, strTestString) Then
        'Wscript.Echo "Local user: " & objUser.Name
    Else
        IF objuser.Name = "DomainUser" Then
           sFlag=1                       
            'wscript.echo "IN"   
        end if
      
      'Wscript.Echo "Domain user: " & objUser.Name
     
    End If
Next
if sFlag=0 then
   'wscript.echo "NO"
Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators")
             Set objUser = GetObject("WinNT://Domain/DomainUser")
             objGroup.Add(objUser.ADsPath)
end if            
这样更改,加了一个判断检测后,就不管此用户是存在于本机的管理员组,都不会有错误提示,如果已存在,则结束运行脚本,如果不存在,将DomainUser加到本机管理员组!
有需要的用户,将上面的代码COPY出来,存为.vbs格式,放在domain.com\SYSVOL\domain.com\scripts下面,用GPO加到Computer Setting的启动脚本中,这时候对用户的权限没有要求,因为这个时间是电脑启动中,用户还没有登录,是以域管理员的身份在执行脚本.

大家要用的话,只要将Domain改为你的Domain Name,将DomainUser改为你要加到本机管理员组的账号,就可以了!
希望这个对大家有用!我现在就是用这个,将我们一个管理账号加到所有电脑中,这样就方便平时的管理工作!

本文出自 “大向技术分享” 博客,转载请与作者联系!