none
Script para Remover Users do Grupo Administradores e ADD usuario logado no grupo Administradores RRS feed

  • Pergunta

  • Amigos bom dia!

    Estou precisando de um script que faça o seguinte.

    Qdo rodar a GPO ele verifica o grupo Adminsitradores da maquina e remove tds os users q estão lá.
    após isso, verificar o user que está logado na maquina e ADD no grupo Adminsitradores.

    Por favor que tiver um script que faça isso e puder me passar eu agradeço.

    Um abraço a tds.

    Marcelo

     

    sexta-feira, 9 de dezembro de 2011 11:02

Respostas

Todas as Respostas

  • Ola Marcelo,

    Para retirar e cadastrar, o script deve ser executado com nivel elevado e um usuario comum não poderá faze-lo.
    Existem utilitarios para criptografar senha e com ele você consegue executar o script como administrador. O KIX é um deles.
    Só que ainda terá um problema, no primeiro logon, a mudança de grupo do usuario não vai funcionar até ele fazer novo logon.
    Explique melhor sua necessidade. Dependendo, um ADD via GPO resolve.

     

     

    sexta-feira, 9 de dezembro de 2011 12:45
  • Ola Eugenio, obrigado pela resposta.

    Bom a necessidade é essa mesmo.

    tenho um script que está fazendo somente a remoção dos ADM do grupo, porém para colocar o usuario local ele não está fazendo. .

    Talvez seja mesmo esse o problema que não inclui devido a permissão.

    A AGPO está sendo feita via Computer.

    Mas faz somente a remoção o ADD do user logado não.

    olha como q é o Script...

     

    Public strDomain, strComputer, GrupoVSDev, UserVSDev, GrupoLocalADM, Maquina, Usuario, ArquivoConfig

    On Error Resume Next
    ArquivoConfig = "\\dominio.local\NETLOGON\Packets\DesenvADM\Restrict_Policy.txt"

    Set objNetwork = CreateObject("Wscript.Network")
    strComputer = objNetwork.ComputerName
    strDomain = "sky"
    VerificaGrupoAdnimLocal 'ch

    '------------------Grupos e usuarios comuns---------------------------
    Call AdicionaGpGlobal_em_GpLocal("Admin-Workstation", GrupoLocalADM)
    Call AdicionaGpGlobal_em_GpLocal("Domain Admins", GrupoLocalADM)
    Call AdicionaGpGlobal_em_GpLocal("GG_Helpdesk", GrupoLocalADM)
    Call AdicionaUsuarioEmGrupo("SMS_SVC", GrupoLocalADM)
    '---------------------------------------------------------------------


    RemoveTodosUsuariosDoGrupo (GrupoLocalADM) 'ch
    'RemoveTodosUsuariosDoGrupo ("VS Developers") 'ch
    LerArquivo 'ch

    Set objNetwork = Nothing
    'MsgBox "fim"


    '************************************************************
    Sub VerificaGrupoAdnimLocal()
    On Error Resume Next
    'Procedure verifica se o grupo ADM local é (Port)Administrador ou (Ingles)Administrator
    Set colGroups = GetObject("WinNT://" & strComputer & "")
    colGroups.Filter = Array("group")
    For Each objGroup In colGroups
        
        Grupo = objGroup.Name
            If Grupo = "Administrators" Or Grupo = "Administradores" Then
                GrupoLocalADM = Grupo
                Exit For
            End If
    Next
    Set colGroups = Nothing
    End Sub
    Sub AdicionaGpGlobal_em_GpLocal(GpGlobal, GpLocal)
    On Error Resume Next
    ' Bind to local Administrators group.
    Set objLocalGroup = GetObject("WinNT://" & strComputer & "/" & GpLocal & ",group")
    ' Bind to domain group.
    Set objDomainGroup = GetObject("WinNT://" & strDomain & "/" & GpGlobal & ",group")
    ' Check if the domain group is already a member of the local group.
            If Not objLocalGroup.IsMember(objDomainGroup.ADsPath) Then
                ' Add the domain group to the local group.
                objLocalGroup.Add (objDomainGroup.ADsPath)
            End If
    ' Clean up.

    Set objLocalGroup = Nothing
    Set objDomainGroup = Nothing
    End Sub
    '**************************************************************
    Sub AdicionaUsuarioEmGrupo(Ad_Usuario, GpLocal)
    On Error Resume Next
    'msgbox strDomain & " " & usuario
    'Esta procedure adiciona um usuario em um grupo Local
    Set objGroup1 = GetObject("WinNT://" & strComputer & "/" & GpLocal & ",group")
    Set objUser = GetObject("WinNT://" & strDomain & "/" & Ad_Usuario & ",user")
            If Not objGroup1.IsMember(objUser.ADsPath) Then
                  objGroup1.Add (objUser.ADsPath)
            End If

    Set objGroup1 = Nothing
    Set objUser = Nothing
    End Sub

    '---------------------------------------------------------------------------------
    Sub RemoveTodosUsuariosDoGrupo(GrLocal)
    On Error Resume Next
    'Esta sub remove  do grupo adm local , qualquer usuario que naõ esteja na
    'sub GruposComuns ou no arquivo usuarios do br não local
    Dim oGroup, oMember
    Set oGroup = GetObject("WinNT://" & strComputer & "/" & GrLocal & ",group")
    Set oGroup2 = GetObject("WinNT://" & strComputer & "/" & "VS Developers" & ",group")

    For Each oMember In oGroup.Members
      membro = UCase(oMember.Name)
      tipo = oMember.Class
          If tipo = "User" Then
                If membro = "ADMINISTRADOR" Or membro = "ADMINISTRATOR" Or membro = "SMS_SVC" Then
                Else
                'Remove usuarios nao autorizados do grupo administrador
                      Set objUser = GetObject("WinNT://" & strDomain & "/" & membro & "," & tipo)
                      oGroup.Remove (objUser.ADsPath)
                      oGroup2.Remove (objUser.ADsPath)
                End If
          Else
                If membro = "ADMIN-WORKSTATION" Or membro = "DOMAIN ADMINS" Or membro = "GG_HELPDESK" Then
                'MsgBox "ok"
                Else
                'Remove Grupos nao autorizados do grupo administrador
                    Set objUser = GetObject("WinNT://" & strDomain & "/" & membro & "," & tipo)
                    oGroup.Remove (objUser.ADsPath)
                End If
        End If
    Next

    Set oGroup = Nothing
    Set objUser = Nothing
    End Sub
    '********************************************************************
    Sub LerArquivo()
    On Error Resume Next
    'Esta sub lê o arquivo txt, filtra as linha comentadas com # e verifica se as variaveis
    'não estão em branco e depois chama a sub de adicionar o usuario lido no grupo adm local
    Const ForReading = 1, ForWriting = 2
    Dim fso, f
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set r = fso.OpenTextFile(ArquivoConfig, ForReading, False)
    Do While r.AtEndOfStream <> True
            d = r.readline
            y = Len(d)
            Dim X, sStr, iContaPar, sNovaLinha
                        sStr = Mid(d, (InStr(d, "#")), 1)
                        If sStr <> "#" And sStr <> " " Then
                                    position = InStr(d, "|")    ' Returns 2
                                    Maquina = Mid(d, 1, position - 1)
                                    Usuario = Mid(d, position + 1, (y - 1))
                                    If UCase(strComputer) = UCase(Maquina) Then
                                        If Maquina = " " Or Usuario = "" Then
                                            Else
                                               'adicionaUsuarioNoGrupo 'ch
                                               Call AdicionaUsuarioEmGrupo(Usuario, GrupoLocalADM) 'ch
                                               Call AdicionaUsuarioEmGrupo(Usuario, "VS Developers") 'ch
                                            End If
                                    End If
                        End If
                        sStr = ""
    Loop
    r.Close

    Set fso = Nothing
    Set r = Nothing
    End Sub

     

     

     

    Esse é o Script q estou usando...

    Se puder me ajudar agradeço.

     

    Marcelo.

    sexta-feira, 9 de dezembro de 2011 13:45
  • Mas explica qual a necessidade de retirar um usuario e cadastrar outro.
    Por exemplo: seria um usuario fixo que você quer cadastrar em todas as estações ?
    sexta-feira, 9 de dezembro de 2011 14:44
  • Pois é sim,

    então no script ele pega um arquivo TXT q tem o nome da maquina e o usuario qdo esse user se logar ele coloca esse user no grupo administradores.

    dentro do arquivo TXT vai conter os dados abaixo:

    cnit0933|vborri

     

    maquina | account

     

     

    sexta-feira, 9 de dezembro de 2011 15:17
  • Já que você tem um esquema fixo, rode este script no Schedule de um DC. Assim você tem o grupo atualizado sempre.
    Pode ser que o script precise de alguma alteração para rodar remotamente mas deve ser coisa simples.

     

    sexta-feira, 9 de dezembro de 2011 15:39
  • Marcelo,

    Pode esclarecer algumas coisas?

    1. Qualquer usuário vai ser administrador mas somente no periodo que ele estiver logado? Para isso bastaria (acho nunca testei) adicionar o usuário INTERATIVO no grupo administrador.

    2. Se seu script roda na diretiva de Startup (computer) , ainda não tem usuário logado , isto é, não tem como ele saber quem vai logar.

     

    Agora se o caso é este: Cada máquina tem seu proprio(s) administradores, exemplo:

    Micro01, admins são fabio e marcelo

    cnit0933, admin é somente vborri

    Então você deve colocar um script de startup que excluir todos os usuários do grupo administradores (exceto alguns como Domain Admins ou suporte técnco) e em seguida através de um IF ou SELECT CASE adiciona mais alguns usuários ao grupo administradores.

    Veja em "portugol"

    Select case nomedocomputado

        case Micro01: adiciona fabio e marcelo ao grupo administradores

        case cnit0933: adiciona vborr ao grupo administradores

    end select

     

    Talvez sua idéia seja esta mas ao inves do select case vc está mantendo a informação em um arquivo texto.

     

     


    Fábio de Paula Junior
    sexta-feira, 9 de dezembro de 2011 15:50
    Moderador
  • Ola Bom dia pessoal

     

    a Ideia é colocar quem se logar nessas maquina no grupo de adminstradores.

    Visto que essas maquinas são do pessoal de Desenvolvimento.

    então a pessoa que se logar deve ser incluida no grupo.

    Um abraço

    Marcelo;

     

     

     

    segunda-feira, 12 de dezembro de 2011 10:17
  • Marcelo,

    Se uma pessoa que não seja desenvolvedor logar na estação, ele deve ser administrador?

     

    outra coisa:

    Tentou o procedimento abaixo? (para o caso de qualquer um poder ser administrador)

    1. Qualquer usuário vai ser administrador mas somente no periodo que ele estiver logado? Para isso bastaria (acho nunca testei) adicionar o usuário INTERATIVO no grupo administrador.


    Fábio de Paula Junior
    segunda-feira, 12 de dezembro de 2011 11:42
    Moderador
  • Fabio bom dia!

    Obirgado pela resposta.

     

    Bom não manjo nada da parte de script.

    Mas acho q esse logon interativo já me resolveria.

    Se vc puder ajustar esse script para usar isso eu agradeço.

    e qq pessoa q se logar na maquina será incluida sim no grupo administradores, eqto estiver logado.

    obrigado e fico no aguardo.

    Marcelo

     

     

    segunda-feira, 12 de dezembro de 2011 12:20
  • Marcelo,

    Esta solução não é por script é por GPO.

    Neste link tem um vídeo mostrando como configurar.

    No seu caso ao invés de utilizar o grupo HelpDesk você deve utilizar o grupo Interativo.

    O grupo interativo é um grupo especial que somente o usuário logado faz parte (é quem esta interagindo com o computador).

    Qualquer dúvida avise.

     

    Link útili:

    http://claudianojs.wordpress.com/2011/11/15/adicionar-grupo-de-administradores-local-via-gpo/

     


    Fábio de Paula Junior
    segunda-feira, 12 de dezembro de 2011 12:36
    Moderador