none
Script vbs adicionar computador ao dominio em determinada OU RRS feed

  • Pergunta

  • Estou tentando criar um script para adicionar um micro ao domínio e coloca-lo em determinada OU, conforme escolha feita pelo técnico do suporte.

    Gostaria de criar uma condição de escolha para o técnico tipo, estado RJ vai para OU=RJ,OU=Computador, se SP vai para OU=SP, OU=Computador, isso tudo de acordo com um "Checkbox" que aparece para o técnico escolher.

    Estou testando este script abaixo, mais não sei como adicionar a condição para que apareça o "Checkbox".

    On Error Resume Next
    ' This script joins the current computer to a domain, using specified user and placing it in specified OU
    ' Created by Sole Viktor - sole@sole.dk
    ' Set theese variables
    strDomain = "London.local" ' Domain to logon
    strPassword = "password6" ' Service account logon password
    strUser = "user" ' Service account
    strOU = "OU=Computador,OU=RJ" ' OU to place computer in
    ' Constants to choose from when joining
    Const JOIN_DOMAIN = 1
    Const ACCT_CREATE = 2
    Const ACCT_DELETE = 4
    Const WIN9X_UPGRADE = 16
    Const DOMAIN_JOIN_IF_JOINED = 32
    Const JOIN_UNSECURE = 64
    Const MACHINE_PASSWORD_PASSED = 128
    Const DEFERRED_SPN_SET = 256
    Const INSTALL_INVOCATION = 262144
    Set objNetwork = CreateObject("WScript.Network")
    strComputer = objNetwork.ComputerName
    ' Join Domain
    Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _
    strComputer & "'")
    ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
    strPassword, strDomain & "\" & strUser, strOU, _
    JOIN_DOMAIN + ACCT_CREATE + DOMAIN_JOIN_IF_JOINED)
    Select Case ReturnValue
    Case 0 Status = "Success"
    Case 2 Status = "Missing OU"
    Case 5 Status = "Access denied"
    Case 53 Status = "Network path not found"
    Case 87 Status = "Parameter incorrect"
    Case 1326 Status = "Logon failure, user or pass"
    Case 1355 Status = "Domain can not be contacted"
    Case 1909 Status = "User account locked out"
    Case 2224 Status = "Computer Account allready exists"
    Case 2691 Status = "Allready joined"
    Case Else Status = "UNKNOWN ERROR " & ReturnValue
    ' Show Status
    WScript.Echo "Join domain status: " & Status
    End Select




    • Editado Hugo Carneiro Jr quinta-feira, 27 de fevereiro de 2014 17:23
    • Editado Fábio JrModerator quinta-feira, 27 de fevereiro de 2014 18:14 Título e formatacao de codigo
    quinta-feira, 27 de fevereiro de 2014 16:50

Respostas

  • Hugo,

    Checkbox é uma caixinha de marcar, não seria o InputBox que você precisa?

    No VBScript não existe o checkbox, existe o Msgbox (para exibir) e o inputbox (para pegar algo com o usuário).

    No seu caso recomendo o Input box, substitua a sua linha que começa com strOU por isso:

    Estado=ucase(Inputbox("Digite o estado"))
    select case Estado
    	Case "RJ" : strOU = "OU=Computador,OU=RJ"
    	Case "SP" : strOU = "OU=Computador,OU=SP"
    	CASE else
    		msgbox "Estado inválido"
    		wscript.quit
    end select


    Fábio de Paula Junior

    quinta-feira, 27 de fevereiro de 2014 18:19
    Moderador

Todas as Respostas

  • Hugo,

    Checkbox é uma caixinha de marcar, não seria o InputBox que você precisa?

    No VBScript não existe o checkbox, existe o Msgbox (para exibir) e o inputbox (para pegar algo com o usuário).

    No seu caso recomendo o Input box, substitua a sua linha que começa com strOU por isso:

    Estado=ucase(Inputbox("Digite o estado"))
    select case Estado
    	Case "RJ" : strOU = "OU=Computador,OU=RJ"
    	Case "SP" : strOU = "OU=Computador,OU=SP"
    	CASE else
    		msgbox "Estado inválido"
    		wscript.quit
    end select


    Fábio de Paula Junior

    quinta-feira, 27 de fevereiro de 2014 18:19
    Moderador
  • Perfeito Fabio, seria o ImputBox, estou testando o script que coloquei acima e não esta dando certo, não consigo verificar o porque, não entendo muito de scripts.

    Você teria algum script completo que eu possa colocar esta opção e se possível solicitar usuário e senha para adicionar o micro no domínio?

    quinta-feira, 27 de fevereiro de 2014 18:33
  • Primeiro, o seu script estava funcionando?

    2) qual o erro aconteceu depois que você adicionou o código que enviei?

    3) Manda o seu script pós modificação.

    dica: retire a linha "On error resume next" quando estiver testando o script.


    Fábio de Paula Junior


    quinta-feira, 27 de fevereiro de 2014 19:09
    Moderador
  • Estava dando o erro Unknown 2202, e agora esta adicionando só não esta mostrando mensagem ao finalizar.

    Teria como realizar um Imputbox com a conta do usuário e senha que tenha permissão para colocar no domínio?

    envio o script abaixo:

    ' Set theese variables
    strDomain = "London.local"' Domain to logon
    strPassword = "password"' Service account logon password
    strUser = "user"' Service account
    Estado=ucase(Inputbox("Digite o estado"))
    selectcase Estado
        Case"RJ" : strOU = "OU=Computers,OU=RJ"
        Case"SP" : strOU = "OU=Computers,OU=SP"
        CASEelse
            msgbox"Estado inválido"
            wscript.quit
    endselect
    ' Constants to choose from when joining
    Const JOIN_DOMAIN = 1
    Const ACCT_CREATE = 2
    Const ACCT_DELETE = 4
    Const WIN9X_UPGRADE = 16
    Const DOMAIN_JOIN_IF_JOINED = 32
    Const JOIN_UNSECURE = 64
    Const MACHINE_PASSWORD_PASSED = 128
    Const DEFERRED_SPN_SET = 256
    Const INSTALL_INVOCATION = 262144
    Set objNetwork = CreateObject("WScript.Network")
    strComputer = objNetwork.ComputerName
    ' Join Domain
    Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & _
    strComputer & "'")
    ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
    strPassword, strDomain & "\" & strUser, strOU, _
    JOIN_DOMAIN + ACCT_CREATE + DOMAIN_JOIN_IF_JOINED)
    SelectCase ReturnValue
    Case0 Status = "Success"
    Case2 Status = "Missing OU"
    Case5 Status = "Access denied"
    Case53 Status = "Network path not found"
    Case87 Status = "Parameter incorrect"
    Case1326 Status = "Logon failure, user or pass"
    Case1355 Status = "Domain can not be contacted"
    Case1909 Status = "User account locked out"
    Case2224 Status = "Computer Account allready exists"
    Case2691 Status = "Allready joined"
    CaseElse Status = "UNKNOWN ERROR " & ReturnValue
    ' Show Status
    WScript.Echo"Join domain status: " & Status
    EndSelect

    Esta ultima linha não esta sendo mostrada com o resultado.

    quinta-feira, 27 de fevereiro de 2014 19:35
  • Não está mostrando a mensagem porque você colocou ela dentro de uma das opções do SELECT CASE, ela só será exibida se entrar no CASE ELSE.

    Coloque ela após o END SELECT.


    Fábio de Paula Junior

    sexta-feira, 28 de fevereiro de 2014 11:57
    Moderador
  • Perfeito Fabio, agora ta funcionando perfeitamente.

    So uma ultima ajuda, tem como eu tirar o login utilizado no script e solicitar ao técnico que tiver utilizando? 

    sexta-feira, 28 de fevereiro de 2014 12:42
  • Pra pegar o nome do usuário use a mesma técnica utilizada para pegar o Estado, mas para a senha isso não é muito bom pois a senha não fica "máscarada" no inputbox.

    Pra senha eu aconselho você dar uma olhada neste artigo:

    How Can I Mask Passwords Using an InputBox?

    http://blogs.technet.com/b/heyscriptingguy/archive/2005/02/04/how-can-i-mask-passwords-using-an-inputbox.aspx

    Atualização:

    Outro link que pode ajudar

    Masking Passwords in Windows ScriptsMasking Passwords in Windows Scripts

    http://www.nilpo.com/2008/07/windows-scripting/masking-passwords-in-windows-scripts/


    Fábio de Paula Junior


    sexta-feira, 28 de fevereiro de 2014 12:57
    Moderador