Witam wszystkich,
Jak każdy admin po pewnym czasie zależy nam na wygodzie i jak największej kontroli tego co mamy.
Jako, że w mojej firmie oprogramowanie dostarcza firma trzecia i dystrybuuje je na ponad 70 komputerów zdarza się, że coś jest gdzieś nie tak.
I dlatego zgłaszam się do Was o pomoc/podpowiedź/poradę jak mogę usprawnić działanie tworu który stworzyłem.
Cel: sprawdzanie ponad 70 komputerów z WinXP pod kątem wersji oprogramowania kilku plików exe i wysłanie ma maila informacji.
Stworzyłem plik check.vbs a w nim:
Wscript.Echo ("Sprawdzanie wersji oprogramowania ")
Wscript.Echo ("Lokalizacja: xxx")
Wscript.Echo ("Host: yyy")
Wscript.Echo (" ")
Wscript.Echo (" ************************")
Wscript.Echo (" ")
Wscript.Echo ("Wersja Firefoxa")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Wscript.Echo objFSO.GetFileVersion("C:\Program Files\Mozilla Firefox\firefox.exe")
Wscript.Echo (" ")
Wscript.Echo (" ************************")
Wscript.Echo (" ")
Wscript.Echo ("Wersja Foobara")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Wscript.Echo objFSO.GetFileVersion("E:\foobar2000\foobar2000.exe")
Wscript.Echo (" ")
Wscript.Echo (" ************************")
Wscript.Echo (" ")
Wscript.Echo ("Wersja Google Chrome")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Wscript.Echo objFSO.GetFileVersion("C:\Documents and Settings\xyz\Ustawienia lokalne\Dane aplikacji\Google\Chrome\Application\chrome.exe")
Plik mail.vbs który jest odpowiedzialny za wysłanie danych na podany adres e-mail.
Set myMail=CreateObject("CDO.Message")
set args = WScript.Arguments
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
'Open the file for reading
Set f = fso.OpenTextFile(args.Item(3), ForReading)
'The ReadAll method reads the entire file into the variable BodyText
BodyText = f.ReadAll
'Close the file
f.Close
Set f = Nothing
Set fso = Nothing
myMail.Subject=args.Item(0)
myMail.From=args.Item(1)
myMail.To=args.Item(2)
myMail.TextBody=BodyText
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
'Name or IP of remote SMTP server
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
="192.168.0.1"
'Server port
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") _
=25
myMail.Configuration.Fields.Update
myMail.Send
oraz plik version.bat który łączy wszystko w całość i nadaje maila.
@echo off
cscript check.vbs > send.txt
C:\version\mail.vbs "Oprogramowanie na kompach" moj@email.pl docelowy@email.pl C:\version\send.txt
Efekt jest taki, że plik version.bat odpala chceck.vbs, sprawdza co ma sprawdzić i tworzy plik send.txt przy pomocy cscript, który to jest później wysłany za pomocą drugiego pliku mail.vbs
W efekcie mam problem taki, że job odpalany będzie raz w tygodniu i przyjdzie “fala” maili (z każdego kompa).
I tu mam do Was pytanie, jak mogę z agregować te dane aby wysłać jednym mailem a nie siedemdziesięcioma.