none
Criar Script que verifique a versão do Sistema Operacional de uma lista de servidores RRS feed

  • Pergunta

  • Pessoal trabalho em um ambiente que possui em torno de 300 servidores Windows 2000, 2003 e 2008. Preciso criar um script que verifique a versão de Sistema Operacional de uma lista de servidores. Alguém possui um modelo de script que faça isso?

    Agradeço desde já.

    quinta-feira, 3 de janeiro de 2013 11:23

Respostas

  • Boa tare Felix,

    faça um teste com esse script, nele voce
    definir um arquivo txt com o nome dos servidores, ele ira ler o arquivo e
    após ler ira usar a classe wmi para verificar a versão do windows.

    Lembre que você tera que ter acesso a todos servidores...

    Salve o arquivo com a extensão .VBS (ex. SO_Server.vbs)

    abra um prompt do DOS acesse o diretório onde o script foi salvo,

    execute puxando o cscript.exe, o comando ficaria assim:

    C:\>cscript.exe SO_Server.vbs = Este comando mostrará no prompt o resultado, mas você pode gerar um txt com o comando abaixo:

    C:\>cscript.exe SO_Server.vbs >resultado.txt = Nesse caso não será mostrado nada no Prompt, mas ira gera o txt no mesmo diretório......

    on error resume next
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    sFile = "C:\lista.txt"
    If oFSO.FileExists(sFile) Then
    Set oFile = oFSO.OpenTextFile(sFile)
     Do While Not oFile.AtEndOfStream
      strComputer= oFile.ReadLine
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colOperatingSystems
    
    	Wscript.Echo "Maquina: "& strComputer & vbnewline & objOperatingSystem.Caption
    	Wscript.Echo "-----------------------------------"
    Next
     Loop
    oFile.Close
    End If

    Espero que ajude.....

    att, Aparecido Deveza


    quinta-feira, 3 de janeiro de 2013 15:50

Todas as Respostas

  • Boa tare Felix,

    faça um teste com esse script, nele voce
    definir um arquivo txt com o nome dos servidores, ele ira ler o arquivo e
    após ler ira usar a classe wmi para verificar a versão do windows.

    Lembre que você tera que ter acesso a todos servidores...

    Salve o arquivo com a extensão .VBS (ex. SO_Server.vbs)

    abra um prompt do DOS acesse o diretório onde o script foi salvo,

    execute puxando o cscript.exe, o comando ficaria assim:

    C:\>cscript.exe SO_Server.vbs = Este comando mostrará no prompt o resultado, mas você pode gerar um txt com o comando abaixo:

    C:\>cscript.exe SO_Server.vbs >resultado.txt = Nesse caso não será mostrado nada no Prompt, mas ira gera o txt no mesmo diretório......

    on error resume next
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    sFile = "C:\lista.txt"
    If oFSO.FileExists(sFile) Then
    Set oFile = oFSO.OpenTextFile(sFile)
     Do While Not oFile.AtEndOfStream
      strComputer= oFile.ReadLine
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colOperatingSystems
    
    	Wscript.Echo "Maquina: "& strComputer & vbnewline & objOperatingSystem.Caption
    	Wscript.Echo "-----------------------------------"
    Next
     Loop
    oFile.Close
    End If

    Espero que ajude.....

    att, Aparecido Deveza


    quinta-feira, 3 de janeiro de 2013 15:50
  • Resolvido!

    Muito obrigado Deveza. Seu script retornou exatamente o resultado que eu precisava.

    Funcionou com sucesso.

    Att.

    Félix

    quinta-feira, 3 de janeiro de 2013 21:58
  • Bom dia

    Aparecido Deveza,

    Muito legal o seu script. Porém encontrei um BUG.

    Por exemplo: preenchi o arquivo de consulta com o hostname dos servidores e/ou desktops, com diferentes versões de SO. Porém ele so traz Windows 8 Enterprise e Windows Server 2008 Enterprise. 

    Na lista tem máquina com Windows 7 e Windows 2003.

    Tentei rodar o comando de uma maquina W8 e W2k8r2

    Sabe oq poderia ser?


    Thiago Zanardo

    quinta-feira, 14 de março de 2013 14:05
  • Bom dia

    Aparecido Deveza,

    Muito legal o seu script. Porém encontrei um BUG.

    Por exemplo: preenchi o arquivo de consulta com o hostname dos servidores e/ou desktops, com diferentes versões de SO. Porém ele so traz Windows 8 Enterprise e Windows Server 2008 Enterprise. 

    Na lista tem máquina com Windows 7 e Windows 2003.

    Tentei rodar o comando de uma maquina W8 e W2k8r2

    Sabe oq poderia ser?


    Thiago Zanardo



    Tive o mesmo problema, coloquei na lista Maquinas com Win7, Win2003, Win2008 e só apareceu Win7.

    De qualquer forma obrigado, o script tem muita funcionalidade.


    Grato, Alexandre Martins

    terça-feira, 16 de abril de 2013 18:29
  • Boa Noite Thiago Zanardo e Amartins.5,o ,

    O que pode ocorrer é acesso nos equipamentos ou o WMI que pode esta danificado..

    para ter certeza façam o seguinte teste, copie o cod abaixo, salve com a extensão .vbs, clique no arquivo vbs que irá abrir um popup, digite o nome da estação, verifique se irá apresentar erro.....

    ou executar na propria estação, clicando em Ok, pois o '.' (ponto) significa que irá rodar localmente...


    strComputer= inputbox ("Digite o Host/ip da estação","",".")
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colOperatingSystems
    
    	Wscript.Echo "Maquina: "& strComputer & vbnewline & " SO :" & objOperatingSystem.Caption
    Next
    Abaixo existem algumas referências

    http://technet.microsoft.com/en-us/library/cc904288%28v=ws.10%29.aspx

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa394596%28v=vs.85%29.aspx



    att, Aparecido Deveza

    quarta-feira, 17 de abril de 2013 01:27
  • Boa Noite Thiago Zanardo e Amartins.5,o ,

    O que pode ocorrer é acesso nos equipamentos ou o WMI que pode esta danificado..

    para ter certeza façam o seguinte teste, copie o cod abaixo, salve com a extensão .vbs, clique no arquivo vbs que irá abrir um popup, digite o nome da estação, verifique se irá apresentar erro.....

    ou executar na propria estação, clicando em Ok, pois o '.' (ponto) significa que irá rodar localmente...


    strComputer= inputbox ("Digite o Host/ip da estação","",".")
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colOperatingSystems
    
    	Wscript.Echo "Maquina: "& strComputer & vbnewline & " SO :" & objOperatingSystem.Caption
    Next
    Abaixo existem algumas referências

    http://technet.microsoft.com/en-us/library/cc904288%28v=ws.10%29.aspx

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa394596%28v=vs.85%29.aspx



    att, Aparecido Deveza

    Obrigado pela ajuda Aparecido.

    Fiz um teste e funcionou perfeitamente com estações Win7 e Win2008.



    Grato, Alexandre Martins

    quarta-feira, 17 de abril de 2013 17:24
  • Funcionou perfeitamente no windows 10, e se acrescentar no final da linha  & vbnewline & objOperatingSystem.Version também recebe a build do windows.
    sexta-feira, 3 de julho de 2020 13:46