bergesel 10 Geschrieben 28. April 2008 Melden Teilen Geschrieben 28. April 2008 Hallo zusammen ich habe mir mal portable script angesehen und wollte den defrag testen. Nun sehe ich XP wird nicht unterstützt! ist es möglich oder besser gesagt ist es nun machbar per script ein XP client per script zu defragen? gruss und danke Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 28. April 2008 Melden Teilen Geschrieben 28. April 2008 Mal am DOS-Prompt "defrag /?" eingeben... Den Befehl kann man dann bequem in ner Batch verpacken. Zitieren Link zu diesem Kommentar
Eyeswide 10 Geschrieben 30. April 2008 Melden Teilen Geschrieben 30. April 2008 Hi, ja. :D @echo off %systemroot%\system32\defrag.exe c: :D Schon ist dein Script fertig. Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 6. Mai 2008 Autor Melden Teilen Geschrieben 6. Mai 2008 wie ruf ich es dann im vb script auf so?: Set WSHShell = WScript.CreateObject("WScript.Shell") WSHShell.run "defrag.bat" wen ja möchte ich dies wieder an sql db weitergeben, sprich true/false in db schreiben. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 6. Mai 2008 Melden Teilen Geschrieben 6. Mai 2008 Hier ein Beispiel-Script, das die Fragmentierung nur überprüft (durch den Schalter -a beim defrag) und das kpl. Ergebnis ausgibt. Ggf. könnte aus diesem Ergebnis der Prozentwert rausgepriemelt und weiter verarbeitet werden. Ergebnis ist abhängig von der Defrag-Version (unter Vista siehts z.B. anders aus als unter XP) Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") strergebnis = "" FileName = "defrag.txt" temp = fso.GetSpecialFolder(2).Path WshShell.run "cmd.exe /C DEFRAG.EXE C: -a > " & temp & "\" & FileName, 0, true Set file = fso.OpenTextFile(temp & "\" & FileName) strergebnis = file.readAll file.Close Set file = Nothing Set fso = Nothing MsgBox strErgebnis Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 6. Mai 2008 Autor Melden Teilen Geschrieben 6. Mai 2008 danke wieder mal! :) – wie bekomm ich den die meldungs box in sql eingetragen? danke Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 7. Mai 2008 Melden Teilen Geschrieben 7. Mai 2008 Hallo, Seht euch mal diesen Anhang in Post #2 an http://www.mcseboard.de/windows-forum-allgemein-28/automatisch-defragmentieren-95062.html#post580122 cu blub Zitieren Link zu diesem Kommentar
Stephan Betken 43 Geschrieben 7. Mai 2008 Melden Teilen Geschrieben 7. Mai 2008 Post #2 anhttp://www.mcseboard.de/windows-forum-allgemein-28/automatisch-defragmentieren-95062.html#post580122 Besten Dank von meiner Seite. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 7. Mai 2008 Melden Teilen Geschrieben 7. Mai 2008 @bergesel: Einfach mal das Script aus Deinem "DSN=eventlog..." Thread analysieren und kreativ einarbeiten ;) Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 7. Mai 2008 Autor Melden Teilen Geschrieben 7. Mai 2008 ok ok aber vielen dank für deine hilfe ;-) Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 15. Mai 2008 Autor Melden Teilen Geschrieben 15. Mai 2008 Hallo zusammen so das funktioniert wunderbar und schreibt es in die entsprechende spalte von sql. Habe je eine Spalte für LW c:, D:, E: gemacht. nun bekomme ich den ganzen text in die spalte und zwar so: Windows Disk Defragmenter Copyright © 2003 Microsoft Corp. and Executive Software International, Inc. Analysis Report 29.30 GB Total, 15.80 GB (53%) Free, 13% Fragmented (26% file fragmentation) You should defragment this volume. ...nun ist das ziel dies aber in eine andere spalte einzufügen, die mir sagt, soll defragmeniert werden oder nicht auf einen blick, sprich true/fals soll ich die abfrage in sql selber machen oder im script? und wen sql wie oder im script mit if not exist? gruss bergesel Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 15. Mai 2008 Melden Teilen Geschrieben 15. Mai 2008 Solltest du es mit meinem Ansatz per VB-Script gemacht haben, könntest Du einfach den entspr. String suchen für ne Entscheidung. Z.B. so: ... Set file = fso.OpenTextFile(temp & "\" & FileName) strergebnis = file.readAll If Instr(strErgebnis, "You should defragment this volume") > 0 then boolDefrag = true else boolDefrag = False ... ... und die Variable boolDefrag dann entspr. in deine Datenbank schreiben. Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 15. Mai 2008 Autor Melden Teilen Geschrieben 15. Mai 2008 ..geht nicht so wie ich das denke :) jetzt hab ich ein durcheinander mit den variablen :) bekomme diese meldung: input past end of file! Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") strergebnis = "" FileName = "cdefrag.txt" temp = fso.GetSpecialFolder(2).Path WshShell.run "cmd.exe /C DEFRAG.EXE C: -a > " & temp & "\" & FileName, 0, true Set file = fso.OpenTextFile(temp & "\" & FileName) strergebnis = file.readAll "hier soll der fehler sein" If Instr(strErgebnis, "You should defragment this volume") > 0 then boolDefrag = true else boolDefrag = False file.Close Set file = Nothing Set fso = Nothing set db = CreateObject("ADODB.Connection") db.Open("Provider=SQLOLEDB.1;Data Source=Server; Trusted_Connection=Yes;Initial Catalog=wartung;User ID=sa;Password=xxx;") sql = "use wartung;" db.Execute(sql) sql = "insert into wartung (cdefrag)" sql = sql & "values ('" & boolDefrag & "');" db.Execute(sql) Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 15. Mai 2008 Melden Teilen Geschrieben 15. Mai 2008 Hmmm... bei mir läufts. Hast evtl. zweimal gestartet? Der Defrag läuft ja erst mal ne Weile, bevor er Daten rausspuckt! Evtl. sollte man da eine kl. Routine mit einbauen, die das prüft/verhindert. Ich bastel mal. Mal was anderes: Du schreibst einfach in eine Tabelle mit einer Spalte die Werte true oder false... und woher weisst du dann, zu welchem Rechner das gehört? Oder hat jeder seine eigene Tabelle "Wartung" (was ich Datenbankdesigntechnisch jedoch für abwegig halten würde ;) )? Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 15. Mai 2008 Autor Melden Teilen Geschrieben 15. Mai 2008 ...also ich post hier mal mein bis jetzt zusammen gebasteltes script. also achtung kann lustig werden!! :) dies funktioniert mit sql! 'Abfrage der Zeit Datum strComputer = "." 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 'strComputer = "." 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 systemwert systemname = objItem.Name systemwert = objItem.VariableValue 'Abfrage If systemname = "CSVSystem" then csv = systemwert end if 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 computername = objItem.DNSHostName 'Ende der Hostabfrage 'Defrag Analyse von C: Laufwerk Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") strergebnisc = "" FileName = "cdefrag.txt" temp = fso.GetSpecialFolder(2).Path WshShell.run "cmd.exe /C DEFRAG.EXE C: -a > " & temp & "\" & FileName, 0, true Set file = fso.OpenTextFile(temp & "\" & FileName) strergebnisc = file.readAll cdefrag = strErgebnisc file.Close Set file = Nothing Set fso = Nothing 'Defrag Analyse von D: Laufwerk Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") strergebnisd = "" FileName = "ddefrag.txt" temp = fso.GetSpecialFolder(2).Path WshShell.run "cmd.exe /C DEFRAG.EXE D: -a > " & temp & "\" & FileName, 0, true Set file = fso.OpenTextFile(temp & "\" & FileName) strergebnisd = file.readAll ddefrag = strErgebnisd file.Close Set file = Nothing Set fso = Nothing 'Defrag Analyse von E: Laufwerk Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") strergebnise = "" FileName = "edefrag.txt" temp = fso.GetSpecialFolder(2).Path WshShell.run "cmd.exe /C DEFRAG.EXE E: -a > " & temp & "\" & FileName, 0, true Set file = fso.OpenTextFile(temp & "\" & FileName) strergebnise = file.readAll edefrag = strErgebnise file.Close Set file = Nothing Set fso = Nothing '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;" set rs = 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 – ...puah bin ich ein depp! hab vergessen das er am defrag macht und schon lange fertig ist und mir den report zeigen wollte. dabei immer versucht das script laufen zu lassen !!! ;-) 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.