Inquiridor
Script para verificar se existe um serviço especifico

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
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 -
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 -
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 -
-
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 -
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 -
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 -
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 -