Cybquest 36 Geschrieben 15. Mai 2008 Melden Teilen Geschrieben 15. Mai 2008 Ich sag mal... WOW... äh, gut, Hauptsache es läuft ;) Gibts denn immer C, D und E? Defrag auf ne Platte, die es nicht gibt, könnte nen Fehler erzeugen ;) Ich würde vorschlagen, noch ein wenig Fehlerabfangroutinen einzubauen, sowie den Defrag-Teil in eine Sub bzw. Function auszulagern, damit man den Code nur einmal hat aber 3x laufen lassen kann (zwecks Programmpflege einfach besser!) Bis morgen kann ich Dir ggf. das auch ein bissle aufräumen ;) Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 15. Mai 2008 Autor Melden Teilen Geschrieben 15. Mai 2008 das habe ich mir schon gedacht das es probleme geben kann mit den LW. auch das ich dies nicht 3x mal "schreiben" muss und besser pflegen kann, wen es eigentlich das selbe ist! :) nur mein wissen ist noch zu beschränkt um die nötigen anpassungen/ verbesserungen machen zu können. ...danke für deine unterstützung und tips! Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 15. Mai 2008 Melden Teilen Geschrieben 15. Mai 2008 So, hier Dein bissle überarbeiteter Code: Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") temp = fso.GetSpecialFolder(2).Path FullFileName = temp & "\defrag.txt" flgstart = false if fso.FileExists(FullFileName) then if MsgBox("Script läuft bereits oder wurde abnormal beendet!" & chr(13) & "Script dennoch laufen lassen?", vbyesno) = vbyes then flgStart = true else flgstart = true end if if flgstart then strComputer = "." 'Abfrage der Zeit Datum Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime") For Each objItem in colItems 'Die Variablen dazu dim day dim week dim hour dim minute dim month dim quarter dim second dim weekinmonth dim year 'Gesetzte Variablen day = objItem.Day week = objItem.DayOfWeek hour = objItem.Hour minute = objItem.Minute month = objItem.Month quarter = objItem.Quarter second = objItem.Second weekinmonth = objItem.WeekInMonth year = objItem.Year next 'Ende der Zeit und Datum Abfrage 'Abfrage der Variable CSV-System Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_Environment") For Each objItem in colItems 'Variablen setzen dim systemname dim csv systemname = objItem.Name If systemname = "CSVSystem" then csv = objItem.VariableValue next 'Ende der Variablen Auslesen 'Anfang der Hostabfrage Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem",,48) For Each objItem in colItems 'Variablen setzen dim computername dim strErgebnisc dim strErgebnisd dim strErgebnise dim sql 'Domäne: DNSHostname, sonst Name on error resume next computername = objItem.DNSHostName if err > 0 then computername = objItem.Name on error goto 0 'Ende der Hostabfrage 'Defrag Analyse von C: Laufwerk strErgebnisc = DefragLW("C:") 'Defrag Analyse von D: Laufwerk strErgebnisd = DefragLW("D:") 'Defrag Analyse von E: Laufwerk strErgebnise = DefragLW("E:") 'Ausführen der SQL Befehle und schreiben in die Spalten set db = CreateObject("ADODB.Connection") db.Open("Provider=SQLOLEDB.1;Data Source=server; Trusted_Connection=Yes;Initial Catalog=wartung;User ID=sa;Password=xxxx;") sql = "use wartung;" db.Execute(sql) sql = "insert into wartung (day, year, dayofweek, hour, minute, month, quarter, second, weekinmonth, computername, csv,cdefrag,ddefrag,edefrag)" sql = sql & "values ('" & day & "','" & year & "','" & week & "','" & hour & "','" & minute & "','" & month & _ "','" & quarter & "','" & second & "','" & weekinmonth & "','" & computername & "','" & csv & "','" & _ strErgebnisc & "','" & strErgebnisd & "','" & strErgebnise & "');" db.Execute(sql) db.close Next fso.GetFile(FullFileName).Delete End if Set fso = Nothing '------------------------- Function DefragLW(strLW) dim strErgebnis dim return strergebnis = "" return = WshShell.run("cmd.exe /C DEFRAG.EXE " & strLW & " -a > " & FullFileName, 0, true) if return = 0 then Set file = fso.OpenTextFile(FullFileName) strErgebnis = file.readAll If Instr(strErgebnis, "You should defragment this volume") > 0 or _ Instr(strErgebnis, "Das Volume sollte defragmentiert werden") >0 then DefragLW = "Ja" Else DefragLW = "Nein" file.Close Set file = Nothing else DefragLW = "Defrag FehlerID " & return end if End Function Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 16. Mai 2008 Autor Melden Teilen Geschrieben 16. Mai 2008 ...oh wow vielen dank schon getestet und läuft auch ! ;-) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.