none
Lista que controla la pertenencia al grupo local Administradores RRS feed

  • Pregunta

  •  

     

    Necesito un Script que la idea es correrlo a través de una GPO de inicio de sesión , que de una lista de usuarios que yo le de en un archivo.xls excel me chekeara si el o los usuarios de esa lista pertenecen al grupo local Administradores del PC, si esta en la lista y esta en el grupo no los toque , sino esta en la lista y esta en el grupo lo borre. 

    Que lo haga solo con usuarios dentro de este grupo local no con grupos, como pueden ser grupos globales estos últimos que no los toque ya que tengo al grupo domain admins y un grupo de soporte allí también

    En realidad lo que busco es un script que funcione como lista de control ,con grupos restringidos , me limpia completamente el grupo local de administradores cada vez que se aplica la GPO y esto no me sirve, por lo menos así funciona en Windows 2000 server , creo que en 2003 esta forma esta corregida , pero por ahora no puedo migrar, y con el script controlo esta pertenencia al grupo de forma centralizada y además me aseguro que ningún usuario se meta para dentro del grupo de vivo , por que algún técnico de helpdesk le hizo un favor u otras situaciones , si no esta en la lista que consulta el script lo borra del grupo , y ahora que estoy pensando además en la lista también debería estar asociada la forma de identificar el PC donde es administrador , a través del la macaddres o el nombre del PC 

    A ver si me explico mejor, quiero que el script recorra la lista de miembros del grupo local Administradores y que coteje contra una lista dada en Excel donde estará el usuario(racf) y el nombre del PC o macaddress del PC , si el script encuentra a ese o esos(puede ser mas de uno) usuario/s de la lista Excel ,en el grupo local Administradores  de específicamente el PC que según la lista le corresponde ,lo respeta , porque esta en la lista , pero todo usuario que encuentre en el grupo local Administradores , de los PCS si no encuentra su correspondencia en la lista los borra. oficia de lista de control y para que lo respete o sea no lo borre del grupo local de Administradores tiene que cumplir esa doble condición estar en la lista y el nombre del PC al lado del racf (usuario) tiene que coincidir también, o sea consulta el grupo local Administradores si el o los usuarios que encuentra en la consulta están en la lista que lea de un Excel y el nombre del PC donde encuentra a el o los usuarios coinciden los deja pero si no lo borra No lo puedo poner mas claro no se como explicarlo , este script va a correr como un script de inicio de sesión bajo Computers por lo que correrá con permisos de System por lo que con los permisos no hay drama.

    Limpia grupo de administradores local del equipo , necesito que limpie según un criterio, que de una lista de usuarios que yo le con un Array , Lista.xls , me coteje si el o los usuarios locales o de dominio de esa lista, que pertenecen al grupo local Administradores del PC , si esta en la lista y esta en el grupo no los toque , si no esta en la lista, y esta en el grupo lo borre , el chekeo debe ser con doble condición en la lista porque debe estar asociado al nombre de la maquina o la Mac Address, o sea que chekee doble condición en la lista , pondría 2 campos, usuario y nombre de PC o Mac Address, sino el usuario en la lista en cuestión seria Administrador en todas las maquinas del dominio donde se logué y yo lo quiero  a una maquina en particular.

     

     

    Hasta ahora tengo un Script que hace lo siguiente: * limpia grupo de administradores local de un equipo

    * Renombra usuario Administrador

    * Cambio clave de usuario administrador local

    * Agrega a un grupo global del dominio al grupo local Administradores

     

    Tengo un  pequeño problemas: 1 , cuando *  

    ‘==========================================================================

    ‘ VBScript Source File — Created with SAPIEN Technologies PrimalSCRIPT(TM)

    ‘ NAME:

    ‘ DATE : 13/05/2008

    ‘ COMMENT:

    ‘==========================================================================

     

    ‘********************************** limpia grupo de administradores local de un equipo *******************************************************

    Sub LimpiaAdmins

     

    Set colGroups = GetObject(”WinNT://” & strComputer & “”)

    colGroups.Filter = Array(”Group”)

    For Each objGroup In colGroups

    ‘Wscript.Echo objGroup.Name

    If ObjGroup.Name=”Administradores” then

    For Each objUser in objGroup.Members

    If (UCASE(objUser.Name) UCase(”domain admins”)) And (objUser.Name “AdminLocalesPC”) Then

     

    on error resume Next

    Set objUser2 = GetObject(”WinNT://” & “NTDOM1″ & “/” & objUser.Name,user)

     

    on error resume Next

    Set objUser3 = GetObject(”WinNT://” & strComputer & “/” & objUser.Name ,user)

     

    on error resume Next

    objGroup.Remove(objUser2.ADsPath)

     

    on error resume Next

    objGroup.Remove(objUser3.ADsPath)

     

    End if

    Next

    End if

    Next

    End Sub

     

    ‘************************ Renombra usuario Administrador ****************************************************

    Sub RenombraAdmin(strNewName)

     

    If (ExistUser(strNewName) = FALSE) Then

    ‘ —— END CONFIGURATION ———

    ‘WScript.Echo strnewName

    set objComputer = GetObject(”WinNT://” & strComputer)

    set objUser = GetObject(”WinNT://” & strComputer & _

    “/Administrador,user”)

    set objNewUser = objComputer.MoveHere(objUser.ADsPath,strNewName)

    ‘WScript.Echo “Successfully renamed account to: ” & strNewName

    End if

    End Sub

     

    ‘ *********************** Cambio clave de usuario administrador local ***************************************

    Sub CambiarClaveAdmin(strNewAdmin,strClave)

     

    Set WshShell = WScript.CreateObject(”WScript.Shell”)

     

    ‘Query Admin Members

    Set colGroups = GetObject(”WinNT://” & strComputer)

    colGroups.Filter = Array(”group”)

    For Each objGroup In colGroups

    ‘check the administrators local group members..

    If (InStr(1,objGroup.Name,”Administradores”,1) >0) Then

    For Each objUser in objGroup.Members

    strUSER=strUSER &vbCrLf& objuser.class &”=”& objUser.name

    next

    End If

    Next

     

    Set objUser = GetObject(”WinNT://” & strComputer & “/” & strNewAdmin)

    objUser.SetPassword strClave

    objUser.Setinfo

     

    End Sub

     

    ‘******************* Agrego los admin locales ******************************************

    Sub AgregoAdminLocales(strGroup)

     

    strNetBIOSDomain=”NTDOM1″

     

    Set objLocalGroup = GetObject(”WinNT://” & strComputer & “/Administradores,group”)

     

    Set objGroup = GetObject(”WinNT://” & strNetBIOSDomain & “/” & strGroup & “,group”)

     

    Set objWMIService = GetObject(”winmgmts:\\” & strComputer & “\root\cimv2″)

     

    If (IsMember(objLocalGroup, objGroup) = False) Then

    objLocalGroup.Add “WinNT://” & strNetBIOSDomain & “/” & strGroup

    End If

    End sub

     

    ‘********************** funciones auxiliares de AdminLocal**********************

    Function ExistUser(strUser)

     

    Set colGroups = GetObject(”WinNT://” & strComputer & “”)

    colGroups.Filter = Array(”Group”)

    ExistUser=FALSE

    For Each objGroup In colGroups

    ‘Wscript.Echo objGroup.Name

    If ObjGroup.Name=”Administradores” then

    For Each objUser in objGroup.Members

    If (UCASE(objUser.Name)=UCASE(strUser)) Then

    ””’ WScript.echo objUser.Name & ” = ” & strUser

    ExistUser=TRUE

    End if

    Next

    End if

    Next

    End Function

     

    Function IsMember(ByVal objGroup, ByVal objDomainGroup)

    Dim objMember

    For each objMember In objGroup.Members

    If (LCase(objMember.AdsPath) = LCase(objDomainGroup.AdsPath)) Then

    IsMember = True

    Exit Function

    End If

    If (LCase(objMember.Class) = “group”) Then

    If (InStr(LCase(objMember.AdsPath), “/” & LCase(strComputer) & “/”) > 0) Then

    IsMember = IsMember(objMember, objDomainGroup)

    If (IsMember = True) Then

    Exit Function

    End If

    End If

    End If

    Next

    IsMember = False

    End Function

     

    ‘***************** Rutina Principal del script *****************************************

     

    strComputer = WScript.Arguments(0)

     

    AgregoAdminLocales(”AdminLocalesPC”)

    LimpiaAdmins

    RenombraAdmin “NewAdmin”

    CambiarClaveAdmin “NewAdmin”,”password2008″

     

    WScript.Echo(”fin”)

     

    sábado, 7 de junio de 2008 23:12

Respuestas