Vakti zamanında bir ihtiyaç nedeniyle aşağıdaki vbs'i oluşturmuştum. Amacı; Active Directory ortamında, domain admin kullanıcısı ile login olunan bir sunucudan, servers.txt dosyasında belirtilen sunucuların system up time ve last boot time istatistiklerini report.txt dosyasına yazmak. Elbette daha verimli hale getirilebilir.
CONST ForReading = 1 CONST ForAppending = 8 SET objFSO = CREATEOBJECT("Scripting.FileSystemObject") SET objReadTextFile = objFSO.OpenTextFile("c:\servers.txt", ForReading) DO WHILE objReadTextFile.AtEndOfStream <> TRUE strComputer = objReadTextFile.ReadLine SET objFSO = CREATEOBJECT("Scripting.FileSystemObject") SET objWriteTextFile = objFSO.OpenTextFile _ ("c:\report.txt", ForAppending, True) SET objWMIDateTime = CREATEOBJECT("WbemScripting.SWbemDateTime") SET objWMI = GETOBJECT("winmgmts:\\" & strComputer & "\root\cimv2") SET colOS = objWMI.InstancesOf("Win32_OperatingSystem") FOR EACH objOS in colOS objWMIDateTime.Value = objOS.LastBootUpTime objWriteTextFile.WriteLine(strComputer & vbTab & _ objWMIDateTime.GetVarDate & vbTab & _ TimeSpan(objWMIDateTime.GetVarDate,NOW)) objWriteTextFile.Close NEXT LOOP FUNCTION TimeSpan(dt1, dt2) IF (ISDATE(dt1) AND ISDATE(dt2)) = FALSE THEN TimeSpan = "00:00:00" EXIT FUNCTION END IF seconds = ABS(DATEDIFF("S", dt1, dt2)) minutes = seconds \ 60 hours = minutes \ 60 minutes = minutes MOD 60 seconds = seconds MOD 60 IF LEN(hours) = 1 THEN hours = "0" & hours TimeSpan = hours & ":" & _ RIGHT("00" & minutes, 2) & ":" & _ RIGHT("00" & seconds, 2) END FUNCTION
0 yorum:
Yorum Gönder