none
Inventario de PC RRS feed

  • Pergunta

  • Boa Tarde galera, 

        Depois de muito procurar localizei alguns scripts para Inventario do PC e adaptei ao que eu preciso, o Script funciona ok,  porem estou com um problema:  Ao listar os softwares instalado a Data de Instalação é mostrado no padrão yyyyddmm. Não consegui mudar isso para o padrão dd/mm/aaaa. Alguem sabe como fazê-lo?

    Caso alguem queira o codigo eu posto ele. AS principais funções são: Informações sobre Hardware, Softwares Instalados, Dominio, Network, Keys do Windows e Office.

    Segue parte do código

     'Softwares Instalados
    
    Set colSoftware = objWMIService.ExecQuery  ("Select * from Win32_Product")
    	objTextFile.WriteLine ""
    	objTextFile.WriteLine "SOFTWARES INSTALADOS:"
    
    For Each objSoftware in colSoftware
    
    	Nome = objSoftware.Name
    	Versao = objSoftware.Version
    	Data = objSoftware.dtmInstallDate
             
    objTextFile.WriteLine("Name: " & Nome & " : Versão: " & versao & " : Data Instalação: " & Data) Next


    Douglas Oliveira Admin Rede []
    quarta-feira, 22 de julho de 2009 20:33

Respostas

  • Olá,

    Substitua a variavel Data = obj....

    Por:
        Data =  MID(objSoftware.InstallDate,7,2) & "/" & MID(objSoftware.InstallDate,5,2) & "/" & MID(objSoftware.InstallDate,1,4)



    Faça os testes e nos retorne.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quarta-feira, 22 de julho de 2009 21:03

Todas as Respostas

  • Olá,

    Substitua a variavel Data = obj....

    Por:
        Data =  MID(objSoftware.InstallDate,7,2) & "/" & MID(objSoftware.InstallDate,5,2) & "/" & MID(objSoftware.InstallDate,1,4)



    Faça os testes e nos retorne.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quarta-feira, 22 de julho de 2009 21:03
  • Vlw!!! mto obrigado  funcionou perfeitamente.

    abraços.
    Douglas Oliveira Admin Rede []
    quinta-feira, 23 de julho de 2009 01:39
  • Vlw!!! mto obrigado  funcionou perfeitamente.

    abraços.
    Douglas Oliveira Admin Rede []

    Boa tarde Douglas,
    Estava com esse mesmo problema também.
    Teria como postar esse seu código? Eu tenho alguns scripts para inventariar as máquinas da minha rede, mas nenhum me atende plenamente, mesmo com as adaptações que eu fiz.
    Valeu.

    Aldrey Ribeiro
    quinta-feira, 23 de julho de 2009 16:08
  • Olá,

    Dá uma olhada no link abaixo:

    http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/49d47477-cf16-4e1e-ba8d-9f3a1d6016b6

    quinta-feira, 23 de julho de 2009 16:23
  • Ta na mão

    abraços!



    On error resume Next
    Const ForReading = 1
    Const ForAppending = 8
    Dim strLogDir
    Dim strCompName
    Dim strUserName
    Dim site
    strComputer = "."
    '### Se for servidor aborta o script ###
    Set os = GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
    For Each obj In os
        Set prps = obj.Properties_
        OSLang = prps("OSLanguage").value
        BldNum = prps("BuildNumber").value
    Next
    Select Case BldNum
        Case "2600" OPERATINGSYSTEM = "WINDOWS-XP"
        Case "2195" OPERATINGSYSTEM = "WINDOWS-2000"
        Case "1381" OPERATINGSYSTEM = "WINDOWS-NT"
        Case "3790" OPERATINGSYSTEM = "Windows 2003"
    End Select
    
    If OPERATINGSYSTEM <> "WINDOWS-XP" Then  'Colocar o VISTA e WIN7
    	wscript.quit()
    End If
    
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
    Set colProcessors = objWMIService.ExecQuery("Select * from Win32_Processor")
    Set colDiskDrives = objWMIService.ExecQuery ("Select * from Win32_DiskDrive")
    Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colSoftware = objWMIService.ExecQuery("Select * from Win32_Product")
    Set IPConfigSet = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
    
    '### Se estação já foi inventariada finaliza script ###
    regkey = "HKCU\Software\Inventario\HardWare\Executado"
    regval = -1
    regval = WshShell.RegRead(regkey)
    If regval = "Sim" then 
    	'WScript.Echo "Já Foi Executado"
    	wscript.quit()
    Else 
    '### WScript.Echo "Não Foi Executado ###
    '### Executa o Script ###
    
        strCompName = WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
        strUserName  = WshShell.ExpandEnvironmentStrings("%USERNAME%")
    
        strLogDir = "c:" 'Local onde log será salvo.
    
    	Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objTextFile = objFSO.CreateTextFile(strLogDir & "\" & strCompName & ".log", True)
    
        objTextFile.WriteLine "************ Inventário Iniciado em " & Date & " ************ "
    	objTextFile.WriteLine ""
        'objTextFile.WriteLine "Nome do Usuário: " & strUserName
        objTextFile.WriteLine "Nome do Computador: " & strCompName
    	objTextFile.WriteLine ""
    
    	'IP
        For Each IPConfig in IPConfigSet
            If Not IsNull(IPConfig.IPAddress) Then
                For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)				
                    objTextFile.WriteLine "Endereço de IP: " &  IPConfig.IPAddress(i)
                Next
            End If
    	Next
        'Modelo e fabricante
        For Each objItem In colItems
    		objTextFile.WriteLine ""
            objTextFile.WriteLine "Fabricante da Placa Mãe: " & objItem.Manufacturer
            objTextFile.WriteLine "Modelo da Placa Mãe: " & objItem.Model
            objTextFile.WriteLine "Total Memória Fisica: " & objItem.TotalPhysicalMemory
            objTextFile.WriteLine "Tipo do Sistema: " & objItem.SystemType
            objTextFile.WriteLine "Numero de Processadores: " & objItem.NumberOfProcessors
    	    objTextFile.WriteLine "Dominio: " & objItem.Domain
        Next
        'Processador
        For Each objProcessor in colProcessors
    		objTextFile.WriteLine ""
            objTextFile.WriteLine "Fabricante do Processador: " & objProcessor.Manufacturer
            objTextFile.WriteLine "Nome do Processador: " & Trim(objProcessor.Name)
            objTextFile.WriteLine "Descrição do Processador: " & objProcessor.Description
            objTextFile.WriteLine "Processor ID: " & objProcessor.ProcessorID
            'objTextFile.WriteLine "Address Width: " & objProcessor.AddressWidth
            'objTextFile.WriteLine "Data Width: " & objProcessor.DataWidth
            objTextFile.WriteLine "Familia: " & objProcessor.Family
            objTextFile.WriteLine "Velocidade Maxima de Clock: " & objProcessor.MaxClockSpeed
        Next
        'Hard Disk
        For each objDiskDrive in colDiskDrives 
    		objTextFile.WriteLine ""
            objTextFile.WriteLine "Nome do HD: "  &  objDiskDrive.Caption
            objTextFile.WriteLine "Tipo de Interface: "  & objDiskDrive.InterfaceType
            objTextFile.WriteLine "Fabricante: "  & objDiskDrive.Manufacturer
            objTextFile.WriteLine "Modelo do HD: " &  objDiskDrive.Model
            objTextFile.WriteLine "Tamanho: " & vbTab &  objDiskDrive.Size    
        Next
        'Sistema Operacional
    	DIM OSNome
    	For Each objOS in colOSes
    		objTextFile.WriteLine ""
            objTextFile.WriteLine "Sistema Operacional: " & objOS.Caption 'Name
    		OSNome = objOS.Caption
            objTextFile.WriteLine "Versão: " & objOS.Version 'Version & build
            objTextFile.WriteLine "Numero do Build: " & objOS.BuildNumber 'Build
            objTextFile.WriteLine "Tipo do Build: " & objOS.BuildType
            objTextFile.WriteLine "Tipo do SO: " & objOS.OSType
            objTextFile.WriteLine "Outra Descrição: " & objOS.OtherTypeDescription
            objTextFile.WriteLine "Service Pack: " & objOS.ServicePackMajorVersion & "." & objOS.ServicePackMinorVersion
    		objTextFile.WriteLine "Registrado Para: " & objOS.RegisteredUser
    	    objTextFile.WriteLine "Organização: " & objOS.Organization
        Next
    
    
    
    '#### Licenças do Windows ####
    
    objTextFile.WriteLine ""
    objTextFile.WriteLine "Licenças:"
    
    CONST HKEY_LOCAL_MACHINE = &H80000002
    CONST SEARCH_KEY = "DigitalProductID"
    Dim arrSubKeys(4,1)
    Dim foundKeys
    Dim iValues, arrDPID
    foundKeys = Array()
    iValues = Array()
    arrSubKeys(0,0) = OSNome
    arrSubKeys(0,1) = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
    arrSubKeys(2,0) = "Microsoft Office XP"
    arrSubKeys(2,1) = "SOFTWARE\Microsoft\Office\10.0\Registration"
    arrSubKeys(1,0) = "Microsoft Office 2003"
    arrSubKeys(1,1) = "SOFTWARE\Microsoft\Office\11.0\Registration"
    arrSubKeys(3,0) = "Microsoft Office 2007"
    arrSubKeys(3,1) = "SOFTWARE\Microsoft\Office\12.0\Registration"
    arrSubKeys(4,0) = "Microsoft Exchange Product Key"
    arrSubKeys(4,1) = "SOFTWARE\Microsoft\Exchange\Setup"
    
    ' <--------------- Open Registry Key and populate binary data into an array -------------------------->
    strComputer = "."
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
    
    For x = LBound(arrSubKeys, 1) To UBound(arrSubKeys, 1)
    oReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1), SEARCH_KEY, arrDPIDBytes
    If Not IsNull(arrDPIDBytes) Then
     call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
    Else
     oReg.EnumKey HKEY_LOCAL_MACHINE, arrSubKeys(x,1), arrGUIDKeys
     If Not IsNull(arrGUIDKeys) Then
      For Each GUIDKey In arrGUIDKeys
       oReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1) & "\" & GUIDKey, SEARCH_KEY, arrDPIDBytes
       If Not IsNull(arrDPIDBytes) Then
        call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
       End If
      Next
     End If
    End If
    Next
    'MsgBox("Finished")
    
    ' <----------------------------------------- Return the Product Key --------------------------------------------------->
    Function decodeKey(iValues, strProduct)
    
    Dim arrDPID
    arrDPID = Array()
    
    ' <--------------- extract bytes 52-66 of the DPID -------------------------->
    For i = 52 to 66
     ReDim Preserve arrDPID( UBound(arrDPID) + 1 )
     arrDPID( UBound(arrDPID) ) = iValues(i)
    Next
     
    ' <--------------- Create an array to hold the valid characters for a microsoft Product Key -------------------------->
    Dim arrChars
    arrChars = Array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9")
    
    ' <--------------- The clever bit !!! (decode the base24 encoded binary data)-------------------------->
    For i = 24 To 0 Step -1
     k = 0
     For j = 14 To 0 Step -1
      k = k * 256 Xor arrDPID(j)
      arrDPID(j) = Int(k / 24)
      k = k Mod 24
     Next
     strProductKey = arrChars(k) & strProductKey
     If i Mod 5 = 0 And i <> 0 Then strProductKey = "-" & strProductKey
    Next
    
    ReDim Preserve foundKeys( UBound(foundKeys) + 1 )
    foundKeys( UBound(foundKeys) ) = strProductKey
    strKey = UBound(foundKeys)
    
    objTextFile.WriteLine strProduct & "  :  " & foundKeys(strKey) & vbNewLine
    End Function
    
    ' ####  FIM  ####
    
    
     'Softwares Instalados
    
    Set colSoftware = objWMIService.ExecQuery  ("Select * from Win32_Product")
    	objTextFile.WriteLine ""
    	objTextFile.WriteLine "SOFTWARES INSTALADOS:"
    
    For Each objSoftware in colSoftware
    
    	Nome = objSoftware.Name
    	Versao = objSoftware.Version
    	Data =  MID(objSoftware.InstallDate,7,2) & "/" & MID(objSoftware.InstallDate,5,2) & "/" & MID(objSoftware.InstallDate,1,4)
        'Wscript.Echo data
    
        objTextFile.WriteLine("Name: " & Nome & "  :  Versão: " & versao & "  :  Data Instalação: " & Data)
    Next
    
     'Marca estação para não rodar novamente
    '    regkey = "HKCU\Software\Inventario\HardWare\Executado"
    '    regval = "Sim"
    '    WshShell.regWrite regkey, regval, "REG_SZ"
    
    	objTextFile.WriteLine ""
        objTextFile.WriteLine "************ Inventário Finalizado em " & Date & " ************"
        objTextFile.Close
    
    End If
    
    MsgBox("Inventario Finalizado")
    WScript.Quit

    Douglas Oliveira Admin Rede []
    • Sugerido como Resposta MaikCosta terça-feira, 19 de janeiro de 2010 13:02
    sexta-feira, 24 de julho de 2009 12:12
  • Boa tarde,


    na linha:

    strLogDir = "c:" 'Local onde log será salvo.


    teria como ao invés do script salvar em um diretório, ele salvar via FTP ou mandar via e-mail?

    Obrigado!
    terça-feira, 28 de julho de 2009 18:28
  • Queria dar os parabéns pelo script fantastico que vocês desenvolveram!!!

    O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz.
    terça-feira, 19 de janeiro de 2010 13:02
  • Como faço para gravar os .txt em um compartilhamento da rede?
    Anderson Provasi Pereira
    quarta-feira, 20 de janeiro de 2010 13:23
  • Faça o seguinte pega o código que o dfoliveira postou e salve o arquivo .vbs
    Depois disso criei uma gpo de scripts dentro de Configurações de usuários>Diretivas>Configurações do Windows>Scripts(Login/Logoff)>fazer logon
    Adicione o script nesta gpo e aplica a gpo de scrip da unidade que deseja realizar o inventário!!!
    neste trecho do script:
     strLogDir = "c:" 'Local onde log será salvo.
    

    Redirecione para uma pasta compartilhada da rede onde todos tenha a permissão para grava!!!

    Assim que os usuários efetuarem o próximo logon o inventario será feito e salvo na pasta que vc redirecionou...

    Caso ajudei classifique.
    abraços

    O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz.
    segunda-feira, 25 de janeiro de 2010 18:08
  • 1 - Há a possibilidade de fazer esse script ser salvo em um documento do Word?
    2 - E nessa GPO, tem como configura - la para rodar 1 vez por semana, por exemplo?

    No aguardo.
    sábado, 30 de janeiro de 2010 15:47
  • copiei o Script em um txt, salvei como inventario.vbs, mas o mesmo não gera nada, não aparece mensagem alguma...mesmo executando manualmente (clicando no arq. inventario.vbs), não faz nada.

    como devo proceder???

    quarta-feira, 3 de março de 2010 18:52
  • copiei o Script em um txt, salvei como inventario.vbs, mas o mesmo não gera nada, não aparece mensagem alguma...mesmo executando manualmente (clicando no arq. inventario.vbs), não faz nada.

    como devo proceder???


    ele não executa no ambiente windows vista. tem algum dica\solução, no windows xp funciona corretamente.
    qual a variavel\função que poderia ser acrescentado ao script para que me retornasse a memoria ram do equipamento?
    quinta-feira, 4 de março de 2010 18:23
  • Bom Dia,

    Como posso alterar para esse script rodar em Servidores, no script tem uma função informando que não executa em Servidores, gostaria de executar em alguns servers.

    Desde já obrigado.
    segunda-feira, 8 de março de 2010 15:17
  • Kra desculpa a demora pra responder.....

    valeu pelo elogio... 


    para fazer funcionar em outros sistemas tem que colocar o build do SO no código abaixo:

    Select Case BldNum
        Case "2600" OPERATINGSYSTEM = "WINDOWS-XP"
        Case "2195" OPERATINGSYSTEM = "WINDOWS-2000"
        Case "1381" OPERATINGSYSTEM = "WINDOWS-NT"
        Case "3790" OPERATINGSYSTEM = "Windows 2003"
    End Select

    Douglas Oliveira Admin Rede []
    terça-feira, 9 de março de 2010 18:40
  • Amigos Boa Noite.

    Estou precisando de um script +- igual a esse.
    Porem preciso rodar ele para varrer toda a minha rede.

    Para verificar as versões de Office que tem Instalado nas Maquinas.

    Vamos padronizar todas as Estações com Office 2007.

    Obrigado

    Marcelo
    quinta-feira, 18 de março de 2010 00:42
  • Olá a todos,

           Quando executo o script ele mostra tudo certo, porém não está me retornando os sostwares instalados. Alguma sugestão para resolver esse problema ?

     

    []´s.

    terça-feira, 27 de julho de 2010 03:50
  • Douglas muito bom esse script.

    Deu certo demais aqui para mim. Onde que tu arrumou material para aprender vbs? Tenho várias coisas aqui que rodam em batches e queria tonar um negócio mais legal.

     

    Parabéns e obrigado.


    Ronald Leite Cavalcante MCDST | MCP | MCSA Confio em Deus e oro para que a Sua bênção venha a mim. E ela veio!
    terça-feira, 27 de julho de 2010 13:10
  • onde é gravada a resposta do inventario?
    segunda-feira, 9 de agosto de 2010 14:27
  • Ele esta salvando no raiz

     strLogDir = "c:"
     'Local onde log será salvo.
    
    quarta-feira, 8 de setembro de 2010 17:55
  • Olá a todos !!!

     

    DOliveira, o script rodou legal, parabéns !!!

     

    Mais como eu faria se na parte de programas instalados quizesse que também o nome do usuário que instalou o programa.

     

    Como eu faço?

     

    Desde já agradeço.

     

    sexta-feira, 7 de janeiro de 2011 17:37
  • Olá a todos !!!

     

    DOliveira, o script rodou legal, parabéns !!!

     

    Mais como eu faria se na parte de programas instalados quizesse que também o nome do usuário que instalou o programa.

     

    Como eu faço?

     

    Desde já agradeço.

    sexta-feira, 7 de janeiro de 2011 17:38
  • Não estou conseguindo rodar o script no seven e apenas no xp, o que devo alterar para resolver esse problema?
    segunda-feira, 17 de dezembro de 2012 10:49

  • tente

    Select Case BldNum
        Case "2600" OPERATINGSYSTEM = "WINDOWS-XP"
        Case "2195" OPERATINGSYSTEM = "WINDOWS-2000"
        Case "1381" OPERATINGSYSTEM = "WINDOWS-NT"
        Case "3790" OPERATINGSYSTEM = "Windows 2003"
        Case "7600" OPERATINGSYSTEM = "Windows 7"
    End Select
    ou apague a seguinte linha

    Select Case BldNum
        Case "2600" OPERATINGSYSTEM = "WINDOWS-XP"
        Case "2195" OPERATINGSYSTEM = "WINDOWS-2000"
        Case "1381" OPERATINGSYSTEM = "WINDOWS-NT"
        Case "3790" OPERATINGSYSTEM = "Windows 2003"
    End Select
    
    If OPERATINGSYSTEM <> "WINDOWS-XP" Then  'Colocar o VISTA e WIN7
    	wscript.quit()
    End If




    att, Aparecido Deveza

    segunda-feira, 17 de dezembro de 2012 23:37