Usuário com melhor resposta
Habilitar e Alterar Senha de Administrador Local nas Estações do Domínio

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"- Sugerido como Resposta GustavoZimmermannMicrosoft employee quinta-feira, 12 de novembro de 2015 17:34
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:
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,
Gustavoquinta-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.brquinta-feira, 19 de novembro de 2015 12:13