none
script para verificar versão do drive da placa de rede RRS feed

  • Pergunta

  • Bom dia!!!

    Não possuo muita experiencia nessa área e preciso fazer um script para consultar via rede a versão do drive das placas de rede instaladas nos equipamentos. Eu digfito o IP da maquina e o script me retorna os dados da placa de rede com a versão do drive instalado.

    Achei esse na internet, porém na classe "Win32_NetworkAdapter" não consigo verificar a versão do drive. 

    ':::::::::::::::::::::::::::::::::::::
    ':: ::
    ':: Dispositivos de rede ::
    ':: ::
    ':::::::::::::::::::::::::::::::::::::
    MountHtml = MountHtml & "<br/>" & vbCrLf
    MountHtml = MountHtml & "<div id='div_t1'>" & vbCrLf
    MountHtml = MountHtml & "<h3>Conectividade</h3>" & vbCrLf
    MountHtml = MountHtml & "<span class='l_demarc'></span>" & vbCrLf
    MountHtml = MountHtml & "<ul class='list_itens'>" & vbCrLf
    MountHtml = MountHtml & "<li><span class='s_line' style='width: 544px;'>REDE</span></li>" & vbCrLf
    MountHtml = MountHtml & "<span class='l_demarc'></span>" & vbCrLfLf

    strProperties = "ProductName, Manufacturer, MACAddress, AdapterType, AdapterTypeID"
    objClass = "Win32_NetworkAdapter"
    strQuery = "SELECT " & strProperties & " FROM " & objClass & " WHERE AdapterType='Ethernet 802.3' AND ProductName !='Packet Scheduler Miniport'"
    Set colNet = objWMIService.ExecQuery(strQuery, , wbemFlagReturnImmediately + wbemFlagForwardOnly)
    For Each objItem in colNet
    Net_Prod = objItem.ProductName
    Net_Manufacturer = objItem.Manufacturer
    Net_MAC = objItem.MACAddress
    Net_Version = objItem.AdapterTypeID
    MountHtml = MountHtml & "<li><span class='li_itens' style='width: 180px;'>Dispositivo de LAN: </span><span class='li_itens' style='width: 364px;'>" & CheckNull(Net_Prod) & "</span></li>" & vbCrLf
    MountHtml = MountHtml & "<li><span class='li_itens' style='width: 180px;'>Fabricante: </span><span class='li_itens' style='width: 364px;'>" & CheckNull(Net_Manufacturer) & "</span></li>" & vbCrLf
    MountHtml = MountHtml & "<li><span class='li_itens' style='width: 180px;'>Endereço MAC: </span><span class='li_itens' style='width: 364px;'>" & CheckNull(Net_MAC) & "</span></li>" & vbCrLf
    MountHtml = MountHtml & "<li><span class='li_itens' style='width: 180px;'>Versao: </span><span class='li_itens' style='width: 364px;'>" & CheckNull(Net_Version) & "</span></li>" & vbCrLf
    MountHtml = MountHtml & "<span class='l_demarc'></span>" & vbCrLf
    Next
    If Net_Prod = "" Then
    MountHtml = MountHtml & "<li><span class='li_itens' style='width: 544px;'>" & VarMsg_Err3 & "</span></li>" & vbCrLf
    MountHtml = MountHtml & "<span class='l_demarc'></span>" & vbCrLf
    End If
    MountHtml = MountHtml & "<li><span class='s_line' style='width: 544px;'>MODEM</span></li>" & vbCrLf
    MountHtml = MountHtml & "<span class='l_demarc'></span>" & vbCrLf

    Alguém poderia me dar uma luz?

    Desde já agradeço!!!


    quarta-feira, 13 de julho de 2016 11:26

Todas as Respostas

  • Luiz, bom dia.

    Experimente esse Script em Powershell.

    Fique atento aos parâmetros que você deve alterar para que o Script funcione corretamente.

    #Nome do Servidor. Se você deixar o ponto, o script irá verificar o servidor local. Para pesquisar um servidor ou computador na rede, coloque o nome dele no lugar do ponto.
    $Server= "."
    
    #Se desejar, Altere a letra da unidade e o nome do arquivo de saída onde a lista de drivers será salva.
    $xFile = "d:\myDriverList.txt"
    
    #Trim the output of gwmi 
    #gwmi - is shortcut alias for Get-WmiObject 
    
    $NetworkAdapters = (gwmi -computer $Server win32_networkadapter | select name |  Out-String).Trimend()
    
    #Se você deseja visualizar as interfaces de rede, tire o # no início da linha abaixo para descomenta-la.
    #write $NetworkAdapters 
    
    $xNetAdapters = $NetworkAdapters.ToString().TrimEnd()  
    #write $xNetAdapter
    
    
    #replace the spaces with nothing
    #note the .replace(  )is a double space
    #if it is set to single space it will remove all the spaces on the string
    $xNetAdapters = $xNetAdapters.ToString()
    
    
    $xNetAdapters = $xNetAdapters.replace("  ","") | Set-Content $xFile
    #write-host $xNetAdapters
    
    
    #skip the first 3 lines on the file which is not needed
    $xcontent = Get-Content $xfile | Select-Object -Skip 3
    
    
    ForEach ($Line In $xcontent)
    {
    
    #write $Line
    
    #List the driver description,Manufacturer, driverdate, driver version and the signer or publisher
    
    $NetWorkDrivers = Get-WmiObject win32_pnpsigneddriver | WHERE { $_.Description -like "*$Line*" }  | select Description , Manufacturer, driverdate, driverversion, signer
    write $NetWorkDrivers
    
    }

    Atenciosamente,

    Saimon

    Obs: Se a resposta te ajudar, marque como resposta, por favor.

    • Sugerido como Resposta Saimon_SP quarta-feira, 13 de julho de 2016 14:27
    quarta-feira, 13 de julho de 2016 14:27
  • Eu salvo como .VBS?
    quarta-feira, 13 de julho de 2016 14:55
  • Bom dia Luiz,

           Não ele postou um script em PowerShell (extensão seria .PS1), mais se você quer um em .VBS pode usar este aqui que achei em ( https://social.technet.microsoft.com/Forums/scriptcenter/en-US/411f5049-f5c8-4126-a91b-418b9b27010e/wmi-script-to-get-active-network-adapter-and-driver-information?forum=ITCG )

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter Where NetConnectionStatus = 2")
    For Each objItem in colItems
        sActiveName
    = objItem.Name
        Wscript
    .Echo "Network Card" & "," & sActiveName
    next
    Set colItems = objWMIService.ExecQuery( _
     
    "Select * from Win32_PnPSignedDriver where deviceclass = 'net' and Devicename = '" & sActiveName & "'")
    For Each objItem in colItems
        Wscript
    .Echo "DeviceName: " & objItem.DeviceName
        Wscript
    .Echo "DriverDate: " & objItem.DriverDate
        Wscript
    .Echo "DriverVersion: " & objItem.DriverVersion
    Next

    Este sim copie e cole com a extensão .VBS.

    • Sugerido como Resposta Saulo Ulisses quarta-feira, 13 de julho de 2016 17:08
    quarta-feira, 13 de julho de 2016 15:32
  • É isso que preciso, porém o script precisa pegar os dados de todas as placas de rede e perguntar o IP da maquina, pois será efetuado remoto... Esse script está pegando apenas da placa cabeada....Tem como?
    quarta-feira, 13 de julho de 2016 17:15
  • Já sei o que você quer e esse script faz isso não acho legal eu levar o credito de algo que não escrevi então segue o link do Script Center da MS ( https://gallery.technet.microsoft.com/scriptcenter/Network-Inventory-653edf89 ), entre neste endereço e veja, espero ter ajudado... Abraço!
    • Sugerido como Resposta Saulo Ulisses quarta-feira, 13 de julho de 2016 17:49
    quarta-feira, 13 de julho de 2016 17:49
  • Saulo, boa tarde!!

    Obrigado por sua ajuda!! Mas o que preciso realmente é a primeira sugestão que você me deu, porém com o script me perguntando qual o nome ou ip da maquina...

    quarta-feira, 13 de julho de 2016 18:22
  • Engraçado aqui eu tenho esse script rodando via Altiris e System Center para coletar inventário customizado com todas essas linhas mais as linhas para INPUT no System Center e Altiris... olha aí... em strCompute que e igual a "." onde . e o localhost, não entendi, quando você roda ele pergunta qual o ip da estação e isso? ou você quer incluir alguma outra informação. Abraço!

    set args = Wscript.Arguments
    If Wscript.Arguments.Count = 0 Then
        strComputer = "." 
    Else
        strComputer = args.item(0)
    end if
     
    'Query WMI
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_PnPSignedDriver where deviceclass = 'net'") 

    'Output to console
    For Each objItem in colItems 


        Wscript.Echo "Nome do Dispositivo: " & objItem.DeviceName
        Wscript.Echo "Fornecedor do Driver: " & objItem.DriverProviderName
        Wscript.Echo "Versão do Driver: " & objItem.DriverVersion
        Wscript.Echo "Nome do Arquivo .INF: " & objItem.InfName
        Wscript.Echo "Assinatura do Driver: " & objItem.IsSigned
        Wscript.Echo "Assinante: " & objItem.Signer

    Next

    quarta-feira, 13 de julho de 2016 18:51
  • Esse aí está em loop....

    eu preciso que ele abra uma caixa solicitando a digitação do IP ou nome da maquina.....

    quarta-feira, 13 de julho de 2016 19:47
  • Easy like this by using Windows PowerShell!

    quarta-feira, 13 de julho de 2016 20:47