none
Mudando Nome da Estações de Trabalho de acordo com o Serial Number das mesma. RRS feed

  • Pergunta

  • Boa tarde pessoal,

    Gostaria de saber se tenho como alterar o nome das maquinas do dominio, para uma string do tipo. B000+"SerialNumber".

    O comando para buscar o serial number das maquinas eu uso o "wmic bios get serialnumber".

    Será que alguem teria alguma ideia, de como eu poderia renomear as maquinas de um dominio com um script.

     

    terça-feira, 13 de dezembro de 2011 18:58

Respostas

  • Então, via script de logon você vai ter que ir até a estação pra fazer isso. Assim não justifica um script.
    Se quer algo automatico, tenho este script (precisa testar antes). Cadastra o nome de uma estação no arquivo estacoes.txt e teste. Precisa executar de dentro de uma maquina que tenha o netdom.exe



    '
    ' script: rename-estacoes.vbs
    ' descricao: Pega a estação no arquivo e faz o rename
    '
    '
    'On Error Resume Next


    strArquivo = "estacoes.txt"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objArquivo = objFSO.OpenTextFile(strArquivo, 1)

    wscript.echo "[+] Processando registros das estacões..."

    nTotal = 0
    nTotPr = 0

    Do Until objArquivo.AtEndOfStream

      strComputador = objArquivo.ReadLine
      ' strComputador = "192.168.1.10"

      If strComputador <> "" Then

     nTotal = nTotal + 1
     Set objShell = CreateObject("WScript.Shell")
     Set objExec = objShell.Exec("ping -n 1 -w 1000 " & strComputador)
     strPingResults = LCase(objExec.StdOut.ReadAll)

     If InStr(strPingResults, "reply from") Then

        Set objWMIService = GetObject("winmgmts:\\" & strComputador & "\root\cimv2")
        Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")

        For Each objItem in colItems

      strSerialNumber = objItem.SerialNumber
      if ucase(strSerialNumber) <> "NONE" Then
       ' Wscript.Echo "Numero Serial: " & strSerialNumber
       nTotpr = nTotpr + 1
       objShell.Run "C:\WINDOWS\SYSTEM32\netdom.exe renamecomputer " & strComputador & " /newname:B000" & strSerialNumber & " /userD:<DOMINIO>\administrator /passwordd:<SENHA> /usero:Administrator /passwordo:<SENHA> /reboot:60",0,true
      End If
        Next

     Else
      WScript.Echo strComputador & ";OFF-LINE"
     End If

       End If

    Loop
    wscript.echo "---------------------------------------------"
    wscript.echo " Processados: ( " & nTotpr & " )    Total: ( " & nTotal & " )"

     

     

    • Marcado como Resposta Richard Juhasz segunda-feira, 19 de dezembro de 2011 17:28
    sexta-feira, 16 de dezembro de 2011 18:38

Todas as Respostas

  • Cesar,

    Você pode rodar um shell dentro do script com o comando abaixo passando os parametros:

    netdom help RENAMECOMPUTER

     

     


    terça-feira, 13 de dezembro de 2011 19:22
  • Eugenio,

    Poderia exemplificar algo do tipo, preciso fazer isso em quase 3000 maquina e preciso ser preciso com a ação. E de onde precisamente eu executaria o comando.

    obrigado.


    • Editado Cesar Goes terça-feira, 13 de dezembro de 2011 20:10
    terça-feira, 13 de dezembro de 2011 20:08
  • Ok

    Você tem um arquivo .txt com o nome das estações ou tem que pegar no AD ?
    Se for no AD, elas estão numa OU separada ou tem algum padrão de nome para o script seleciona-las ?

    Manda isso ai que te mando um script e como deve ser executado.

    quarta-feira, 14 de dezembro de 2011 10:02
  • Na verdade, o AD daqui está completamente desorganizado, esse procedimento e na tentativa de organizar e reestruturar o AD, então a ideia principal era usar um script bat que faria isso:

    Maquina = resultado(wmic bios get serialnumber)

    Dai, usaria o comando netsom para fazer a troca por exemplo

    NomeAntigo = resultado(hostname)
    NomeNovo= resultado(wmic bios get serialnumber)

    netdom renamecomputer NomeAntigo /newname:NomeNovo
    /userD:mydomain\administrator /passwordd: *
    /usero:Administrator /passwordo: * /reboot:60

    Pensei em usar isso em um script, logon... porém se tiver alguma forma mais facil aceito a sugestão.

     

    quarta-feira, 14 de dezembro de 2011 11:39
  • Pra fazer o script preciso ter o nome da estação que esta no AD. Sem essa informação não tem como fazer algo automatico.
    Se no AD esta dificil de selecionar os hosts, então minha sugestão é você montar a linha de comando no excel e depois copiar para um .BAT onde cada linha terá o comando que você postou. Seria mais simples.

    Dai você precisará executar isso de dentro do DC.


    Posso fazer o script ler um txt só com o nome da estação. Seu trabalho será colocar os nomes neste arquivo.
    quarta-feira, 14 de dezembro de 2011 15:42
  • Eugenio,

    Fiz algumas analises preciso mais ou menos disso, mais não sei, se seria uma opção valida. a forma que preciso seria apenas por script logon executado localmente na maquina. Olha a ideia.

    hostname > c:\nomedamaquina.txt

    Ler esse arquivos e pegar o nome da maquina.

    wmic bios get serialnumber >> c:\serialnumber.txt

    Ler esse arquivos e pegar o serial.

    novonome = B000 + serial

    executa algum comando local para mudança de nome da maquina. usando as duas variaveis como referencia.

     

    sexta-feira, 16 de dezembro de 2011 16:49
  • Então, via script de logon você vai ter que ir até a estação pra fazer isso. Assim não justifica um script.
    Se quer algo automatico, tenho este script (precisa testar antes). Cadastra o nome de uma estação no arquivo estacoes.txt e teste. Precisa executar de dentro de uma maquina que tenha o netdom.exe



    '
    ' script: rename-estacoes.vbs
    ' descricao: Pega a estação no arquivo e faz o rename
    '
    '
    'On Error Resume Next


    strArquivo = "estacoes.txt"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objArquivo = objFSO.OpenTextFile(strArquivo, 1)

    wscript.echo "[+] Processando registros das estacões..."

    nTotal = 0
    nTotPr = 0

    Do Until objArquivo.AtEndOfStream

      strComputador = objArquivo.ReadLine
      ' strComputador = "192.168.1.10"

      If strComputador <> "" Then

     nTotal = nTotal + 1
     Set objShell = CreateObject("WScript.Shell")
     Set objExec = objShell.Exec("ping -n 1 -w 1000 " & strComputador)
     strPingResults = LCase(objExec.StdOut.ReadAll)

     If InStr(strPingResults, "reply from") Then

        Set objWMIService = GetObject("winmgmts:\\" & strComputador & "\root\cimv2")
        Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")

        For Each objItem in colItems

      strSerialNumber = objItem.SerialNumber
      if ucase(strSerialNumber) <> "NONE" Then
       ' Wscript.Echo "Numero Serial: " & strSerialNumber
       nTotpr = nTotpr + 1
       objShell.Run "C:\WINDOWS\SYSTEM32\netdom.exe renamecomputer " & strComputador & " /newname:B000" & strSerialNumber & " /userD:<DOMINIO>\administrator /passwordd:<SENHA> /usero:Administrator /passwordo:<SENHA> /reboot:60",0,true
      End If
        Next

     Else
      WScript.Echo strComputador & ";OFF-LINE"
     End If

       End If

    Loop
    wscript.echo "---------------------------------------------"
    wscript.echo " Processados: ( " & nTotpr & " )    Total: ( " & nTotal & " )"

     

     

    • Marcado como Resposta Richard Juhasz segunda-feira, 19 de dezembro de 2011 17:28
    sexta-feira, 16 de dezembro de 2011 18:38