none
Script para fazer um levantamento das máquinas na rede

    Question

  • Amigos do technet,

    Preciso de um script que faça um levantamento de todas as estações de trabalho que eu tenho na minha rede, tanto Windows XP como Windows 2000, além do IP de cada uma delas. É possível?

    Desde já agradeço.

    Abraço pra todos.
    Thursday, April 02, 2009 2:02 PM

Answers

  • Olá Edu_mith,

    Então... a idéia do script é gerar um log quando o cliente ligar o computador.

    Assim, todos irão gerar um log, você varre os log´s (limpa os duplicados) e terá as maquinas da sua rede.

    Quanto ao software, ele tem uma limitação na versão gratuita (30 maquinas), Porém é muito bacana, mostra hotfix aplicado, ip, temperatura da CPU, espaço em disco, etc.

    Você pode testar ele e se atender você compra a licença.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    • Marked as answer by Edu_mith Thursday, April 02, 2009 5:03 PM
    Thursday, April 02, 2009 4:25 PM
  • Edu,

    Segue um script que faz isso (Só altere a linha objCommand.CommandText = "SELECT distinguishedName FROM 'LDAP://OU=Informatica,DC=dominio,DC=com' WHERE objectCategory='Computer'": apotando para o seu domínio.



    On Error Resume Next

    Const ADS_SCOPE_SUBTREE = 2

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE


    objCommand.CommandText = "SELECT distinguishedName FROM 'LDAP://OU=Informatica,DC=dominio,DC=com' WHERE objectCategory='Computer'"

    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst


    Do Until objRecordSet.EOF

      strPath = objRecordSet.Fields("distinguishedName").Value
      
      x=("LDAP://"&strpath)
      Set objComp = GetObject(x)
      
      strComputer = (objcomp.cn)
     
     aMachines = split(strComputer)

    IF objcomp.operatingSystem = "Windows XP Professional" or Objcomp.operatingSystem = "Windows 2000 Professional" then
     
     
     For Each machine in aMachines
        Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
            ExecQuery("select * from Win32_PingStatus where address = '"_
                & machine & "'")
        For Each objStatus in objPing
            If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
     
        wscript.echo (strcomputer & "-" & "Não foi possível acessar")
      else
     
     
     
       Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

       Set colAdapters = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
     
       n = 1

     
       For Each objAdapter in colAdapters
     

     
            If Not IsNull(objAdapter.IPAddress) Then
                For i = 0 To UBound(objAdapter.IPAddress)
                   WScript.Echo (objAdapter.DNSHostName & "-" & objAdapter.IPAddress(i)& "-" &objcomp.operatingSystem)
                Next
            End If
     
          n = n + 1
     
       Next
      
      End IF
      Next
      Next
    End If
     

    objRecordSet.MoveNext
    Loop


    Caso ajude, não esqueca de marcar como resposta.

    Para executar, acesso o prompt de comando e digite cscript + nome do script, o resultado aparecerá na tela.


    Bruno M. Cunha
    • Marked as answer by Edu_mith Thursday, April 02, 2009 5:03 PM
    Thursday, April 02, 2009 4:42 PM

All replies

  • Olá,

    Você pode ou usar um script de logon (assim os usuários ao logarem irá gerar um log e você varre esse log depois)
    Segue um link para script de log:
    http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/d5283b8d-443c-4504-8e25-52a76ea70820/

    Agora, você pode instalar um software de auditoria (faz levantamento de todas as maquinas na rede, sistema operaciona, endereço IP, etc)

    Segue um link de um software bacana (é trial, mas dá pra você conhecer pois ele faz até um numero x de maquinas)
    http://www.baixaki.com.br/download/newt-professional.htm

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    Thursday, April 02, 2009 2:18 PM
  • Jesiel tudo bem?

    Com relação ao script, eu não entendi muito bem....o que faz este script (só um detalhe, eu não manjo quase nada de script...principalmente vbs...). Sobre o software, eu tenho uma idéia de que a rede de onde eu trabalho tenha aproximadamente 4000 estações. Será que esse soft consegue fazer de todas estas máquinas?

    Obrigado pela resposta.

    Thursday, April 02, 2009 4:15 PM
  • Olá Edu_mith,

    Então... a idéia do script é gerar um log quando o cliente ligar o computador.

    Assim, todos irão gerar um log, você varre os log´s (limpa os duplicados) e terá as maquinas da sua rede.

    Quanto ao software, ele tem uma limitação na versão gratuita (30 maquinas), Porém é muito bacana, mostra hotfix aplicado, ip, temperatura da CPU, espaço em disco, etc.

    Você pode testar ele e se atender você compra a licença.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    • Marked as answer by Edu_mith Thursday, April 02, 2009 5:03 PM
    Thursday, April 02, 2009 4:25 PM
  • Edu,

    Segue um script que faz isso (Só altere a linha objCommand.CommandText = "SELECT distinguishedName FROM 'LDAP://OU=Informatica,DC=dominio,DC=com' WHERE objectCategory='Computer'": apotando para o seu domínio.



    On Error Resume Next

    Const ADS_SCOPE_SUBTREE = 2

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE


    objCommand.CommandText = "SELECT distinguishedName FROM 'LDAP://OU=Informatica,DC=dominio,DC=com' WHERE objectCategory='Computer'"

    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst


    Do Until objRecordSet.EOF

      strPath = objRecordSet.Fields("distinguishedName").Value
      
      x=("LDAP://"&strpath)
      Set objComp = GetObject(x)
      
      strComputer = (objcomp.cn)
     
     aMachines = split(strComputer)

    IF objcomp.operatingSystem = "Windows XP Professional" or Objcomp.operatingSystem = "Windows 2000 Professional" then
     
     
     For Each machine in aMachines
        Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
            ExecQuery("select * from Win32_PingStatus where address = '"_
                & machine & "'")
        For Each objStatus in objPing
            If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
     
        wscript.echo (strcomputer & "-" & "Não foi possível acessar")
      else
     
     
     
       Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

       Set colAdapters = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
     
       n = 1

     
       For Each objAdapter in colAdapters
     

     
            If Not IsNull(objAdapter.IPAddress) Then
                For i = 0 To UBound(objAdapter.IPAddress)
                   WScript.Echo (objAdapter.DNSHostName & "-" & objAdapter.IPAddress(i)& "-" &objcomp.operatingSystem)
                Next
            End If
     
          n = n + 1
     
       Next
      
      End IF
      Next
      Next
    End If
     

    objRecordSet.MoveNext
    Loop


    Caso ajude, não esqueca de marcar como resposta.

    Para executar, acesso o prompt de comando e digite cscript + nome do script, o resultado aparecerá na tela.


    Bruno M. Cunha
    • Marked as answer by Edu_mith Thursday, April 02, 2009 5:03 PM
    Thursday, April 02, 2009 4:42 PM
  • Bruno, Jesiel,

    Obrigado pelas respostas. Bruno, vou executar esse script. Me fale uma coisa: Se eu executar esse cara, ele pode gerar algum tráfego de rede, pode causar alguma lentidão?

    Abraços
    Thursday, April 02, 2009 5:05 PM
  • Creio que não chegará ao ponto de causar lentidão.

    Fique tranquilo.


    Bruno M. Cunha http://www.projetoz.net
    Thursday, April 02, 2009 5:07 PM
  • Brunão,

    Sem querer abusar, mas já abusando...rs...esse script ele salva as informações num arquivo de texto? Ou, se não, tem como fazer com que salve num txt?

    Obrigado novamente.
    Friday, April 03, 2009 7:58 PM
  • Edu, desculpe a demora para responder, acabei nao olhando o post.

    Então para TXT, seria possível sim adicionar uma função para isso.

    Mas acho que o mais fácil neste caso é executar com o cscript Nomedoscript.vbs >ARQUIVO.TXT

    mas


    Abs.

    Bruno M. Cunha
    http://www.projetoz.net

    Bruno M. Cunha http://www.projetoz.net
    Friday, April 17, 2009 4:53 PM
  • Opa Bruno muito obrigado!!! Um grande abraço pra vc!!
    Friday, April 17, 2009 6:55 PM