none
Saber versão do IE RRS feed

  • Pergunta

  • Boa Tarde,

    Existe algum script o qual me informa qual a versão do INTERNET EXPLORER, e em seguida gere um log, Quero rodar via GPO e saber como está o parque de máquinas.

    Obrigado.

    segunda-feira, 27 de setembro de 2010 18:48

Respostas

  • Rafael para mostrar na tela

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer _
        & "\root\cimv2\Applications\MicrosoftIE")
    Set colIESettings = objWMIService.ExecQuery _
        ("Select * from MicrosoftIE_Summary")
    For Each strIESetting in colIESettings
        Wscript.Echo "Active printer: " & strIESetting.ActivePrinter
        Wscript.Echo "Build: " & strIESetting.Build
        Wscript.Echo "Cipher strength: " & strIESetting.CipherStrength
        Wscript.Echo "Content advisor: " & strIESetting.ContentAdvisor
        Wscript.Echo "IE Administration Kit installed: " & _
            strIESetting.IEAKInstall
        Wscript.Echo "Language: " & strIESetting.Language
        Wscript.Echo "Name: " & strIESetting.Name
        Wscript.Echo "Path: " & strIESetting.Path
        Wscript.Echo "Product ID: " & strIESetting.ProductID
        Wscript.Echo "Version: " & strIESetting.Version
    Next

    -------------------------------------------------------------------------------------

    Outro exemplo é de como jogar em um arquivo - Repare nas linhas de INPUT, ok

     

    On Error Resume Next

    INPUT_FILE_NAME = "Computers.txt"
    OUTPUT_FILE_NAME = "Scan_Hotfix.csv"
    HOTFIX = "KB958687"

    Const FOR_READING = 1
    Const FOR_WRITING = 8
    const HKEY_CURRENT_USER = &H80000001
    Const HKEY_LOCAL_MACHINE = &H80000002

    Set StdOut = WScript.StdOut

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set oldfile = objFSO.GetFile(OUTPUT_FILE_NAME)
    oldfile.delete

    Set objOutputFile = objFSO.OpenTextFile(OUTPUT_FILE_NAME, FOR_WRITING, true)


    Set objFile = objFSO.OpenTextFile(INPUT_FILE_NAME, FOR_READING)
    strComputers = objFile.ReadAll
    objFile.Close

    arrComputers = Split(strComputers, vbCrLf)

    Dim result
    DIM noresult
    result = 0
    noresult = 0

    For Each strComputer In arrComputers

       objOutputFile.Write
       objOutputFile.Write
       objOutputFile.Write strComputer
       objOutputFile.Write ","
         
      Err.Clear

      Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
         If Err.Number <> 0 Then
               Wscript.Echo strComputer & " " & "Error Number " & Err.Number &  ": " & Err.Description
               Err.Clear
               Else
      
        strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
        objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
       
        result = 0
        noresult = 0
       
        For Each Subkey in arrSubKeys
                       
            IF Subkey = HOTFIX Then
            result = 1
            noresult = 0
           
            Else
            noresult = 1
           
         End IF          
                 
        Next          
              
         IF result = 1 Then
          
           WScript.Echo strComputer & " " & HOTFIX & " Instalado!!!"
           objOutputFile.Write HOTFIX & " Instalado!!!"
         Else
           WScript.Echo strComputer & " " & HOTFIX & " Não Instalado!"
           objOutputFile.Write HOTFIX & " Não Instalado!"
         End If
        
            objOutputFile.Write ","
     
          end If
         
         objOutputFile.Writeline
        
    Next
    objOutputFile.Close

     

     

    Abraços.

     

     

     

     

    quarta-feira, 29 de setembro de 2010 11:17
  • Rafael,

    O script exibia informações para o usuário porque vc estava utilizando ECHO na sua parte do script.

    Vc deu uma excelente idéia de pegar a versão do IE pelo registro. Substituí toda sua parte do script por apenas duas linhas, veja como ficou agora:

    on error resume next
    
    'inicio - Versao do IE -----------------------
    Set WshShell = CreateObject("Wscript.shell")
    strIEVersao = WshShell.RegRead ("HKLM\SOFTWARE\MICROSOFT\Internet Explorer\Version")
    '------------------------------------------------ fim 
    
    
    'Retorna nome da maquina
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    strMaquina = WshNetwork.ComputerName 
    
    
    
    'Salva informacao em um arquivo text
    strArquivo = "C:\technet.txt"
    
    Const ForAppending = 8
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile(strArquivo, ForAppending, True)
    
    'Utilizei TAB para separar o nome da maquina da versao, vc pode preferir separar por ponto e virgula - substitua vbtab por ";"
    objTextFile.WriteLine(strMaquina & vbtab & strIEVersao)
    
    objTextFile.Close
    
    

    Agora vc só tem que definir onde o log será gerado na rede alterando o caminho do arquivo na linha "strArquivo = "C:\technet.txt"
    "

     


    Fábio de Paula Junior
    • Marcado como Resposta Rafael S. AMARAL segunda-feira, 4 de outubro de 2010 03:08
    sexta-feira, 1 de outubro de 2010 15:50
    Moderador

Todas as Respostas

  • Bom dia,

    Consegui fazer uma mistura e ficou como eu quero, agora não sei como fazer com que ele gere logs com os nomes das máquinas, Minha intenção é colocar esse script na GPO (maquinas) e quando logarem gerar os logs.

    Obrigado desde já.

     

    Set objComputer = CreateObject("Shell.LocalMachine")

    Wscript.Echo "Computer name: " & objComputer.MachineName


    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & _
            "\root\cimv2\Applications\MicrosoftIE")

    Set colIESettings = objWMIService.ExecQuery _
        ("Select * from MicrosoftIE_Summary")

    For Each strIESetting in colIESettings
        Wscript.Echo "Name: " & strIESetting.Name
        Wscript.Echo "Version: " & strIESetting.Version
    Next

    terça-feira, 28 de setembro de 2010 11:19
  • Rafael,

    Segue uma versao simplificada (o seu  está melhor na parte do IE pois nao depende do caminho do exe do IE)

    'Retorna a versão do arquivo
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    strIEVersao = objFSO.GetFileVersion("C:\Program Files\Internet Explorer\iexplore.exe")
    
    'Retorna nome da maquina
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    strMaquina = WshNetwork.ComputerName 
    
    
    
    'Salva informacao em um arquivo text
    strArquivo = "C:\technet.txt"
    
    Const ForAppending = 8
    
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile(strArquivo, ForAppending, True)
    
    
    'Utilizei TAB para separar o nome da maquina da versao, vc pode preferir separar por ponto e virgula - substitua vbtab por ";"
    objTextFile.WriteLine(strMaquina & vbtab & strIEVersao)
    
    objTextFile.Close
    

     


    Fábio de Paula Junior
    terça-feira, 28 de setembro de 2010 12:18
    Moderador
  • Bom dia Fábio,

    Obrigado pelo retorno. Estava testando o seu script e verifiquei que ele gera log, mas só vem o nome da máquina. Minha intenção é
    deixar 2 semanas esse script na GPO, para depois analisar o log e instalar o IE7 nas que têm o IE6. Verifiquei também se o usuário logar
    mais de uma vez vai gerar logs. (Não tem como colocar para não sobrescrever?)

    Obrigado.
    terça-feira, 28 de setembro de 2010 12:42
  • 1- Acredito que não está aparecendo a versao no arquivo porque o executavel do IE deve estar em um local diferente ( no script eu coloquei C:\Program Files\Internet Explorer\iexplore.exe). Vc pode substituir a parte que pega a versão do IE pelo seu script, preenchendo a variavel strIEVersao, assim nao precisa alterar o resto do script.(coloquei em negrito onde deve ser alterado)

    Seu script:

     

    Set objComputer = CreateObject("Shell.LocalMachine")

    Wscript.Echo "Computer name: " & objComputer.MachineName


    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & _
            "\root\cimv2\Applications\MicrosoftIE")

    Set colIESettings = objWMIService.ExecQuery _
        ("Select * from MicrosoftIE_Summary")

    For Each strIESetting in colIESettings
        Wscript.Echo "Name: " & strIESetting.Name
        strIEVersao = strIESetting.Version
    Next

     

    2-Ele não subscreve, adiciona linhas. (ForAppending), se logar duas vezes aparecerão duas linhas. Recomendo colocar uma terceira informação por linha: a data de geração da linha.

    objTextFile.WriteLine(strMaquina & vbtab & strIEVersao & vbtab & date & " " & time )

     


    Fábio de Paula Junior
    terça-feira, 28 de setembro de 2010 15:17
    Moderador
  • Boa Tarde Fábio,

    Desculpa mas não entendi o que devo fazer....aonde e qual script mudar...

    terça-feira, 28 de setembro de 2010 16:00
  • Rafael,

    Segue o script completo (não testei a sua parte do script , estou contando que vc realmente havia testado). pode copiar todo o script abaixo.

     

    on error resume next

    'inicio script rafael -----------------------

    Set objComputer = CreateObject("Shell.LocalMachine")

    Wscript.Echo "Computer name: " & objComputer.MachineName


    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & _
            "\root\cimv2\Applications\MicrosoftIE")

    Set colIESettings = objWMIService.ExecQuery _
        ("Select * from MicrosoftIE_Summary")

    For Each strIESetting in colIESettings
        Wscript.Echo "Name: " & strIESetting.Name
        strIEVersao = strIESetting.Version 'modificação q fiz para preencher a versao do IE
    Next

    '------------------------------------------------ fim script rafael


    'Retorna nome da maquina
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    strMaquina = WshNetwork.ComputerName



    'Salva informacao em um arquivo text
    strArquivo = "C:\technet.txt"

    Const ForAppending = 8


    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile(strArquivo, ForAppending, True)


    'Utilizei TAB para separar o nome da maquina da versao, vc pode preferir separar por ponto e virgula - substitua vbtab por ";"
    objTextFile.WriteLine(strMaquina & vbtab & strIEVersao)

    objTextFile.Close


    Fábio de Paula Junior
    terça-feira, 28 de setembro de 2010 18:43
    Moderador
  • Rafael para mostrar na tela

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer _
        & "\root\cimv2\Applications\MicrosoftIE")
    Set colIESettings = objWMIService.ExecQuery _
        ("Select * from MicrosoftIE_Summary")
    For Each strIESetting in colIESettings
        Wscript.Echo "Active printer: " & strIESetting.ActivePrinter
        Wscript.Echo "Build: " & strIESetting.Build
        Wscript.Echo "Cipher strength: " & strIESetting.CipherStrength
        Wscript.Echo "Content advisor: " & strIESetting.ContentAdvisor
        Wscript.Echo "IE Administration Kit installed: " & _
            strIESetting.IEAKInstall
        Wscript.Echo "Language: " & strIESetting.Language
        Wscript.Echo "Name: " & strIESetting.Name
        Wscript.Echo "Path: " & strIESetting.Path
        Wscript.Echo "Product ID: " & strIESetting.ProductID
        Wscript.Echo "Version: " & strIESetting.Version
    Next

    -------------------------------------------------------------------------------------

    Outro exemplo é de como jogar em um arquivo - Repare nas linhas de INPUT, ok

     

    On Error Resume Next

    INPUT_FILE_NAME = "Computers.txt"
    OUTPUT_FILE_NAME = "Scan_Hotfix.csv"
    HOTFIX = "KB958687"

    Const FOR_READING = 1
    Const FOR_WRITING = 8
    const HKEY_CURRENT_USER = &H80000001
    Const HKEY_LOCAL_MACHINE = &H80000002

    Set StdOut = WScript.StdOut

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set oldfile = objFSO.GetFile(OUTPUT_FILE_NAME)
    oldfile.delete

    Set objOutputFile = objFSO.OpenTextFile(OUTPUT_FILE_NAME, FOR_WRITING, true)


    Set objFile = objFSO.OpenTextFile(INPUT_FILE_NAME, FOR_READING)
    strComputers = objFile.ReadAll
    objFile.Close

    arrComputers = Split(strComputers, vbCrLf)

    Dim result
    DIM noresult
    result = 0
    noresult = 0

    For Each strComputer In arrComputers

       objOutputFile.Write
       objOutputFile.Write
       objOutputFile.Write strComputer
       objOutputFile.Write ","
         
      Err.Clear

      Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
         If Err.Number <> 0 Then
               Wscript.Echo strComputer & " " & "Error Number " & Err.Number &  ": " & Err.Description
               Err.Clear
               Else
      
        strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
        objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
       
        result = 0
        noresult = 0
       
        For Each Subkey in arrSubKeys
                       
            IF Subkey = HOTFIX Then
            result = 1
            noresult = 0
           
            Else
            noresult = 1
           
         End IF          
                 
        Next          
              
         IF result = 1 Then
          
           WScript.Echo strComputer & " " & HOTFIX & " Instalado!!!"
           objOutputFile.Write HOTFIX & " Instalado!!!"
         Else
           WScript.Echo strComputer & " " & HOTFIX & " Não Instalado!"
           objOutputFile.Write HOTFIX & " Não Instalado!"
         End If
        
            objOutputFile.Write ","
     
          end If
         
         objOutputFile.Writeline
        
    Next
    objOutputFile.Close

     

     

    Abraços.

     

     

     

     

    quarta-feira, 29 de setembro de 2010 11:17
  • Boa Tarde,

    Fábio obrigado, mas não deu certo em certo momento.

    Configurei a GPO e a maquina que configurei estava executando o script, mas não estava gravando as informações. (Permissões estao OK). Se a pessoa executar o script a informação aparece.

    Poderíamos tentar outro plano? Pensei na seguinte hípotese. Tentar fazer um script que informe qual a versão do IE das máquinas (gravar log em um caminho na rede, com nome e qual o IE  (de forma transparente para os usuários, sem aparecer como estava).

    Outra hipotese:

    No registro tem a chave HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\Internet Explorer  dentro disto tem um arquivo chamado Version, Existe a possibilidade de fazer um script onde ele traga as informações desse version e com o nome da máquina ?

    Desde já muito obrigado.

    sexta-feira, 1 de outubro de 2010 14:53
  • Rafael,

    O script exibia informações para o usuário porque vc estava utilizando ECHO na sua parte do script.

    Vc deu uma excelente idéia de pegar a versão do IE pelo registro. Substituí toda sua parte do script por apenas duas linhas, veja como ficou agora:

    on error resume next
    
    'inicio - Versao do IE -----------------------
    Set WshShell = CreateObject("Wscript.shell")
    strIEVersao = WshShell.RegRead ("HKLM\SOFTWARE\MICROSOFT\Internet Explorer\Version")
    '------------------------------------------------ fim 
    
    
    'Retorna nome da maquina
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    strMaquina = WshNetwork.ComputerName 
    
    
    
    'Salva informacao em um arquivo text
    strArquivo = "C:\technet.txt"
    
    Const ForAppending = 8
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile(strArquivo, ForAppending, True)
    
    'Utilizei TAB para separar o nome da maquina da versao, vc pode preferir separar por ponto e virgula - substitua vbtab por ";"
    objTextFile.WriteLine(strMaquina & vbtab & strIEVersao)
    
    objTextFile.Close
    
    

    Agora vc só tem que definir onde o log será gerado na rede alterando o caminho do arquivo na linha "strArquivo = "C:\technet.txt"
    "

     


    Fábio de Paula Junior
    • Marcado como Resposta Rafael S. AMARAL segunda-feira, 4 de outubro de 2010 03:08
    sexta-feira, 1 de outubro de 2010 15:50
    Moderador
  • Obrigado Fábio, funcionou perfeitamente, agora é esperar logarem e depois fazer um filtro.

    Obs: Eu tinha pedido ajuda no forum Technet - US tbm, mas o seu funcionou perfeitamente. O seu script está no forum de lá com os devidos "direitos autorais".

    Segue: http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/611b52b9-5ee9-4506-aedb-7a8204739bf4

    Vlw.

    segunda-feira, 4 de outubro de 2010 03:07
  • Fabio obrigado pela grande ajuda até o momento, mas deixa eu tirar uma outra duvida relacionado, nesse script é possivel acrescentarmos para que adicione também o login do usuário que logou?

    Atualmente está:

    Nome da máquina  | Versão do IE


    Teria como ficar:

    Nome da máquina  |  Versão do IE  |  Login


    Obrigado.
    terça-feira, 5 de outubro de 2010 18:23
  • Rafael,

    Veja as modificações em Negrito

    on error resume next

    'inicio - Versao do IE -----------------------
    Set WshShell = CreateObject("Wscript.shell")
    strIEVersao = WshShell.RegRead ("HKLM\SOFTWARE\MICROSOFT\Internet Explorer\Version")
    '------------------------------------------------ fim


    'Retorna nome da maquina
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    strMaquina = WshNetwork.ComputerName
    strUser    = WshNetwork.UserName

    'Salva informacao em um arquivo text
    strArquivo = "C:\technet.txt"

    Const ForAppending = 8
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile(strArquivo, ForAppending, True)

    'Utilizei TAB para separar o nome da maquina da versao, vc pode preferir separar por ponto e virgula - substitua vbtab por ";"
    objTextFile.WriteLine(strMaquina & vbtab & strIEVersao & vbtab & strUser)

    objTextFile.Close

     


    Fábio de Paula Junior
    quarta-feira, 6 de outubro de 2010 16:13
    Moderador