17 Temmuz 2012 Salı

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