none
Script para verificar se existe um serviço especifico RRS feed

  • Discussão Geral

  • Senhores,

    eu preciso de um script que faça o seguinte
    verifique se existe um serviço espeficico como "Microsoft Forefront security client"
    A minha intençãi é, atraves de script de logon, um vbs veriricaria se ha este serviço e geraria um log em um determinado compartilhamento somente com o hostname das maquinas que não existe tal serviço

    obrigado

    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    quarta-feira, 1 de abril de 2009 12:24

Todas as Respostas

  • Olá,

    Verifique se o código abaixo te atende:

    strComputer = "."

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
    Set objNetwork = CreateObject("Wscript.Network")
    Set objSysInfo = CreateObject("ADSystemInfo")

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

    Set colRunningServices =  objWMIService.ExecQuery _
        ("Select * from Win32_Service Where Name = 'nomedoservico'")


    i=0
    strComputador = objNetwork.Computername


    For Each objService in colRunningServices
       i = i + 1
    Next

    if i = 0 Then
       geralog  
    End if


    Sub Geralog

    strShare = "c:\"
    strLogFile = "log.txt"
    'wscript.echo "geralog"
    Set Arquivo = FileSystem.CreateTextFile(strShare & strLogFile, True)

    Arquivo.WriteLine "Computador: " & strComputador & " Não possui o serviço"
    Arquivo.Close
    End sub


    Poste os resultados.

    Até mais,

    Jesiel
    quarta-feira, 1 de abril de 2009 20:40
  • Perfeito Jesiel,

    Tentei por algum tempo procurar na internet o codigo que pudesse ser adaptado ao seu script para enviar a informaçào gerada para um e-mail, mas percebi que tenho que continuar mesmo como infraestrutura!

    POderia me ajudar a adaptar esta adequação ?


    Abraço
    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    quinta-feira, 2 de abril de 2009 11:27
  • Olá Adriano,

    Você quer que ao invés de criar um arquivo de log, ele envie por email???

    Se for isso, segue o script:

    strComputer = "."

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
    Set objNetwork = CreateObject("Wscript.Network")
    Set objSysInfo = CreateObject("ADSystemInfo")

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

    Set colRunningServices =  objWMIService.ExecQuery _
        ("Select * from Win32_Service Where Name = 'nomedoservico'")


    i=0
    strComputador = objNetwork.Computername


    For Each objService in colRunningServices
       i = i + 1
    Next

    if i = 0 Then
       EnviaMail
    End if


    Sub EnviaMail
     Set objEmail = CreateObject("CDO.Message")

    'COLOQUE AQUI OS ENDEREÇOS DE EMAIL
     objEmail.From = "servidor@contoso.msft"
     objEmail.To = "jesiel@nwtraders.msft"

     objEmail.Subject = "COMPUTADOR SEM O SERVIÇO SOLICITADO: " & strComputador
     objEmail.TextBody = "Computador: " & strComputador & " Serviço não existe"

     objEmail.Configuration.Fields.Item _
          ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    'COLOQUE AQUI O IP DO SERVIDOR DE EMAIL
     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.0.0.1" '<-informe seu servidor smtp

     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     objEmail.Configuration.Fields.Update
     objEmail.Send
    end sub


    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quinta-feira, 2 de abril de 2009 12:52
  • Excelente,

    Obrigado Jesiel

    ja classificado

    Abraço


    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    quinta-feira, 2 de abril de 2009 13:57
  • Jesiel, uma ultima pergunta,

    Com este script eu ja tenho como saber atraves de e-mail todas as maquinas que não estão com o Antivirus Instalado. Para finalizar o meu objetivo, eu gostaria de usar o mesmo script com a seguinte condição.

    se nao existir o serviço especifico, ao inves de me enviar esta informação, o vb chamaria um arquivo bat, que no caso ja tenho pronto e instalaria o Antivirus.


    Obrigado
    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    quinta-feira, 2 de abril de 2009 14:02
  • Olá Adriano,

    segue o script completo: (EU DEIXEI ELE ENVIANDO EMAIL AINDA, PARA VOCÊ VERIFICAR SE A INSTALAÇÃO OCORREU)



    Set objNetwork = CreateObject("Wscript.Network")
    Set objSysInfo = CreateObject("ADSystemInfo")
    set objshell = createobject("wscript.shell")

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

    Set colRunningServices =  objWMIService.ExecQuery _
        ("Select * from Win32_Service Where Name = 'nomedoservico'")


    i=0
    strComputador = objNetwork.Computername


    For Each objService in colRunningServices
       i = i + 1
    Next

    if i = 0 Then
       objshell.run "c:\arquivo.bat" '-> ALTERE AQUI E COLOQUE O SEU SCRIPT BAT
       EnviaMail
    End if


    Sub EnviaMail
     Set objEmail = CreateObject("CDO.Message")

    'COLOQUE AQUI OS ENDEREÇOS DE EMAIL
     objEmail.From = "servidor@contoso.msft"
     objEmail.To = "jesiel@nwtraders.msft"

     objEmail.Subject = "COMPUTADOR SEM O SERVIÇO SOLICITADO: " & strComputador
     objEmail.TextBody = "Computador: " & strComputador & " Serviço não existe"

     objEmail.Configuration.Fields.Item _
          ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    'COLOQUE AQUI O IP DO SERVIDOR DE EMAIL
     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.0.0.1" '<-informe seu servidor smtp

     objEmail.Configuration.Fields.Item _
         ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
     objEmail.Configuration.Fields.Update
     objEmail.Send
    end sub

    Até mais,

    Jesiel
    quinta-feira, 2 de abril de 2009 14:09

  • eu apenas gostaria que executasse o executavel "\\domainname\NETLOGON\Startup\install_forefront.exe" sem necessidade de enviar o e-mail (algumas maquinas são bloqueadas a conexão direta ao smtp"

    esta com o seguinte erro:

    error: object required 'objshell'
    code: 800a01a8


    grato mais uma vez
    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    quinta-feira, 2 de abril de 2009 14:27
  • Olá Adriano,

    Você copiou o ultimo script inteiro???
    Verifique se a linha que está em negrito existe no seu script:

    strComputer = "."

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
    Set objNetwork = CreateObject("Wscript.Network")
    Set objSysInfo = CreateObject("ADSystemInfo")
    Set objshell   = createobject("wscript.shell")

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

    Set colRunningServices =  objWMIService.ExecQuery _
        ("Select * from Win32_Service Where Name = 'nomedoservico'")


    i=0
    strComputador = objNetwork.Computername


    For Each objService in colRunningServices
       i = i + 1
    Next

    if i = 0 Then
       objshell.run "\\domainname\NETLOGON\Startup\install_forefront.exe "
    End if



    Até mais,

    Jesiel
    quinta-feira, 2 de abril de 2009 14:57
  • Obrigado Jesiel pelo pronto atendimento, funcionou corretamente agora.


    Abraço

    classificado
    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    quinta-feira, 2 de abril de 2009 16:31