locked
Habilitar e Alterar Senha de Administrador Local nas Estações do Domínio RRS feed

  • Pergunta

  • Boa tarde galera!

    Preciso que a conta de administrador local seja habilitada em todos os computadores do domínio (em grande parte são Windows 7) aqui da empresa, e preciso setar uma senha pra ela também.

    Andei pesquisando e vi que a maioria das soluções envolvem o uso de uma GPO específica pra isso, que foi já desabilitada pela Microsoft por alguma questão de segurança. E nos casos em que achei a solução em Script, não funcionou comigo.

    Tem aqui um script que tentei usar e não funcionou:

    strComputer = "."
    strSenha = "Minha_senha"
    
    i = 0
    
    ' Armazenando o Nome da Estação
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colSettings = objWMIService.ExecQuery _
        ("SELECT * FROM Win32_ComputerSystem")
    For Each objComputer in colSettings
       strComputer = objComputer.Name
    Next
    
    'Armazenando a conta de administrador independentemente do idioma
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colAccounts = objWMIService.ExecQuery _
        ("Select * From Win32_UserAccount Where Domain = '" & strComputer & "'")
    
    For Each objAccount in colAccounts
        If Left (objAccount.SID, 6) = "S-1-5-" and Right(objAccount.SID, 4) = "-500" Then
    	strContaAlvo = objAccount.Name
            If (objAccount.Disabled = True) Then
               i = i + 1
            End If
    
        End If
    Next
    
    
    'Configurando a senha do administrador local
    Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
    Set objShell = Wscript.CreateObject("Wscript.Shell")
    strSetSenha = "cmd /c net user " & strContaAlvo & " " & strSenha
    objShell.Run (strSetSenha), 0, True
    
    'Caso a conta esteja Desabilitada Habilita a mesma
    If (i > 0) Then
       strAtivaConta = "cmd /c net user " & strContaAlvo & " /active:yes"
       objShell.Run (strAtivaConta), 0, True
    End If
    

    Criei uma GPO numa OU específica para testar, editei a OU:

    Configuração do Computador/Políticas/Configurações do Windows/Scripts/Inicialização e adicionei o arquivo (salvo em .vbs)

    Mas quando testo num computador que está dentro da mesma OU não acontece nada... a conta de administrador ainda está desabilitada nele.

    Tem algo errado com o script? teria que adicionar algum Parâmetro? existe outro script que funcione?

    Desde já agradeço


    Roger William

    quinta-feira, 12 de novembro de 2015 15:50

Respostas

  • Roger,

    Veja se na hora que você copiou o script acima se não modificou algum caráter. Pela mensagem, ele não reconheceu algum carater na linha 1, por isso vale verificar. Tem que estar assim a linha 1:

    Set objshell = CreateObject("WScript.shell")

    Eu testei o script que está acima agora e funcionou.

    Um abraço,
    Gustavo

    • Sugerido como Resposta Emanuella Clara segunda-feira, 16 de novembro de 2015 18:13
    • Marcado como Resposta Emanuella Clara segunda-feira, 16 de novembro de 2015 18:13
    quinta-feira, 12 de novembro de 2015 20:32

Todas as Respostas

  • Roger, tudo jóia?

    Faltou colocar o Set objshell = CreateObject("WScript.shell") no início do código, tenta esse abaixo:

    Set objshell = CreateObject("WScript.shell")
    strComputer = "."
    strSenha = "Minha_senha"
    
    i = 0
    
    ' Armazenando o Nome da Estação
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colSettings = objWMIService.ExecQuery _
        ("SELECT * FROM Win32_ComputerSystem")
    For Each objComputer in colSettings
       strComputer = objComputer.Name
    Next
    
    'Armazenando a conta de administrador independentemente do idioma
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colAccounts = objWMIService.ExecQuery _
        ("Select * From Win32_UserAccount Where Domain = '" & strComputer & "'")
    
    For Each objAccount in colAccounts
        If Left (objAccount.SID, 6) = "S-1-5-" and Right(objAccount.SID, 4) = "-500" Then
    	strContaAlvo = objAccount.Name
            If (objAccount.Disabled = True) Then
               i = i + 1
            End If
    
        End If
    Next
    
    
    'Configurando a senha do administrador local
    Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
    Set objShell = Wscript.CreateObject("Wscript.Shell")
    strSetSenha = "cmd /c net user " & strContaAlvo & " " & strSenha
    objShell.Run (strSetSenha), 0, True
    
    'Caso a conta esteja Desabilitada Habilita a mesma
    If (i > 0) Then
       strAtivaConta = "cmd /c net user " & strContaAlvo & " /active:yes"
       objShell.Run (strAtivaConta), 0, True
    End If
    Qualquer coisa, avise.

    Se a resposta fornecida nessa thread ajudou na sua solução, não esqueça de marcar como resposta!

    Abraço,
    Gustavo Zimmermann Montesdioca - MTAC, MCT
    Blog: www.gm9.com.br
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    quinta-feira, 12 de novembro de 2015 17:34
  • Boa tarde, Gustavo!

    Obrigado pela atenção, mas continua não funcionando... Esse script que passei é de um amigo adm de redes e funciona perfeito la onde ele trabalha. Não sei o que posso estar fazendo de errado.


    Roger William

    quinta-feira, 12 de novembro de 2015 17:49
  • Roger,

    Apenas complementando, acabei pesquisando para saber porque removeram essa funcionalidade e encontrei um artigo que explica bem, foi um hotfix, pois o nível de criptografia usado na GPO era fraco. Ele tem uma alternativa usando PowerShell e senhas criptogradas, mas se não for uma preocupação, usa solução mesmo.

    Você pode habilitar o administrator local via GPO também (isso funciona). Para habilitar o Administrador local, vá em Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options e configure como padrão a policy 'Accounts: Administrator account status' (imagem abaixo).

    O artigo que comentei é esse:

    http://blogs.technet.com/b/askpfeplat/archive/2014/05/19/how-to-automate-changing-the-local-administrator-password.aspx

    Abraço,
    Gustavo Zimmermann Montesdioca - MTAC, MCT
    Blog: www.gm9.com.br

    quinta-feira, 12 de novembro de 2015 17:58
  • Roger,

    Talvez o problema esteja na GPO, eu acabei de testar o script na minha máquina e ele setou a senha e habilitou o usuário. Tente atualizar a GPO e faça um 'gpupdate /force', e depois reinicie a estação.

    Abraço,
    Gustavo

    quinta-feira, 12 de novembro de 2015 18:11
  • Gustavo,

    Tentei executar no próprio computador, mas mesmo assim da erro:


    Roger William

    quinta-feira, 12 de novembro de 2015 19:55
  • Roger,

    Veja se na hora que você copiou o script acima se não modificou algum caráter. Pela mensagem, ele não reconheceu algum carater na linha 1, por isso vale verificar. Tem que estar assim a linha 1:

    Set objshell = CreateObject("WScript.shell")

    Eu testei o script que está acima agora e funcionou.

    Um abraço,
    Gustavo

    • Sugerido como Resposta Emanuella Clara segunda-feira, 16 de novembro de 2015 18:13
    • Marcado como Resposta Emanuella Clara segunda-feira, 16 de novembro de 2015 18:13
    quinta-feira, 12 de novembro de 2015 20:32
  • Olá,

    Na verdade o problema estava na hora de renomear o arquivo...

    Um amigo me mandou o arquivo em ".vbs.txt", aí fui no bloco de notas > salvar como > todos os arquivos, e dei o nome "arquivo.vbs", e dessa forma estava dando erro. Quando peguei o mesmo arquivo e só renomeei de "arquivo.vbs.txt" para "arquivo.vbs" o script funcionou.

    Obrigado


    Roger William

    quinta-feira, 19 de novembro de 2015 11:53
  • Roger, 

    Maravilha. Sucesso na implementação.

    Abraço,
    Gustavo Zimmermann Montesdioca - MTAC, MCT
    Blog: www.gm9.com.br
    quinta-feira, 19 de novembro de 2015 12:13