Jump to content

bergesel

Members
  • Gesamte Inhalte

    372
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von bergesel

  1. ...weis das keiner? :)
  2. ok werd mir das mal ansehen :) danke habe da noch eine frage, habe mir das mal durchgelesen betreff in sql speichern. "Ausgabe in eine SQL-Datenbank" o:SQL Ausgabe im SQL-Format Server: Datenbankserver Dsn: DSN-Name ich möchte aber keine ODBC schnittstelle konfig. kann ich das auch mit einem provider machen, sprich kein DSN? Also eine SQLOLEDB?
  3. ...ich habe ja alle event meldungen im sql vorhanden nach systemnamen abgelegt. dies machen wir 2mal jährlich. dies sind sehr spezielle systeme darum so! und ja ich will es so! :) ah und wen ich sie nicht leeren würde hätte ich die gleichen meldungen in sql wen ich dies wieder durchführe mit den neuen. was mir auch noch egal währe wen er sie leert und immer mit zeitstempel ablegt das währe mir auch recht :)
  4. ich würde di platte evtl. neu schreiben mit xfdisk oder so. denke der fehler liegt nun im MBR
  5. Hallo zusammen ich habe hier ein script was mir alle Eventlog einträge in sql schreibt, danach möchte ich das eventlog leeren. somit habe ich dann nur die eventlog in sql die neu sind. nun sehe ich, dass ich beim leeren des eventlogs application system usw. angeben muss. ich will aber gleich alle leeren ohne noch ein backup zu haben da ich die ja mit dem script in sql habe! wie kann ich nun das leeren aller events machen? strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colRetrievedEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent") For Each objEvent in colRetrievedEvents dim Category dim ComputerNameEV dim EventCode dim Message dim RecordNumber dim SourceName dim TimeWritten dim nType dim nUser Category = objEvent.Category ComputerNameEV = objEvent.ComputerName EventCode = objEvent.EventCode Message = objEvent.Message RecordNumber = objEvent.RecordNumber SourceName = objEvent.SourceName TimeWritten = objEvent.TimeWritten nType = objEvent.Type nUser = objEvent.User 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) 'set rs = sql = "INSERT INTO wartung (Category,ComputerNameEV,Eventcode,Message,RecordNumber,SourceName,TimeWritten,nType,nUser)" sql = sql & "values ('" & Category & "','" & ComputerNameEV & "','" & EventCode & "','" & Message & "','" & RecordNumber & "','" & SourceName & "','" & TimeWritten & "','" & nType & "','" & nUser & "');" db.Execute(sql) Next so schreibt er mal alle events in sql. soweit i.o! nun möchte ich die events auch gleich leeren. mit diesem script was aber bis jetzt nur application leert und nicht alle events. auch macht e noch mit dem eine sicherung was ich nicht möchte. und dies sieht wie folgt aus! strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") ' Obtain an instance of the the class ' using a key property value. Set objShare = objWMIService.Get("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\config\AppEvent.Evt'") ' Obtain an InParameters object specific ' to the method. Set objInParam = objShare.Methods_("ClearEventlog"). _ inParameters.SpawnInstance_() ' Add the input parameters. objInParam.Properties_.Item("ArchiveFileName") = "appeventlog" ' Execute the method and obtain the return status. ' The OutParameters object in objOutParams ' is created by the provider. Set objOutParams = objWMIService.ExecMethod("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\config\AppEvent.Evt'", "ClearEventlog", objInParam) ' List OutParams Wscript.Echo "Out Parameters: " Wscript.echo "ReturnValue: " & objOutParams.ReturnValue kann mir nun jemand sagen wie ich nun mit dem script alle events leeren kann und kein backup erstellt wird? gruss bergesel
  6. das ziel währe eigentlich, dass ich weis ob das LW i.O ist oder ob ich ich de chkdsk beim start ausführen soll
  7. hallo zusammen habe hier wieder mal ein sript was auch funktioniert, meine frage ist was der wert 0 als ausgabe sein soll? den versteh ich nicht. strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") ' Obtain an instance of the the class ' using a key property value. Set objShare = objWMIService.Get("Win32_LogicalDisk.DeviceID='C:'") ' Obtain an InParameters object specific ' to the method. Set objInParam = objShare.Methods_("Chkdsk"). _ inParameters.SpawnInstance_() ' Add the input parameters. ' Execute the method and obtain the return status. ' The OutParameters object in objOutParams ' is created by the provider. Set objOutParams = objWMIService.ExecMethod("Win32_LogicalDisk.DeviceID='C:'", "Chkdsk", objInParam) ' List OutParams Wscript.Echo "Out Parameters: " Wscript.echo "ReturnValue: " & objOutParams.ReturnValue was soll nun 0 sein? gruss bergesel
  8. ...oh wow vielen dank schon getestet und läuft auch ! ;-)
  9. 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!
  10. ...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 !!! ;-)
  11. ..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)
  12. 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
  13. ....habs gefunden! :) das problem war das, dass hochkomma das falsche war bei dem " N' bla bla"
  14. so habe dies glaube ich richtig gemacht! :) so sieht meine Fehlermeldung aus: http://wowthunderstorm.wo.funpic.de/userfiles/printscreen.pdf hat das was mit uncode oder so was zu tun, kein plan für diese meldung
  15. wen ich das mach so wie du sagst: Msgbox sql db.Execute (sql) bekomm ich die meldung expected end of statement
  16. vielen dank habe ich getestet und dann mit WMI abfrage auch versucht. bekomme aber eine komische meldung zurück. "incorrect syntax near "€" " ob ich es mit deiner computer abfrage oder mit meiner mache. mein script nun so aus. strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_ComputerSystem",,48) For Each objItem in colItems strComputer = objItem.DNSHostName 'Set WshNetwork = WScript.CreateObject("WScript.Network") 'strComputer = WshNetwork.ComputerName set db = CreateObject("ADODB.Connection") db.Open("Provider=SQLOLEDB.1;Data Source=server;UID=sa;PWD=xxxx") sql = "use wartung;" db.Execute(sql) sql= "IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N’" & strComputer & "‘) " sql=sql & "AND OBJECTPROPERTY(id, N’IsUserTable’) = 1) " sql=sql & "CREATE TABLE " & strComputer & " (Category int NOT NULL , ComputerNameEV varchar (30) NULL , Eventcode varchar (30) NULL , Message varchar (30) NULL ," sql=sql & "Recordnumber int NULL , Sourcename int NULL ," sql=sql & "timewritten int NULL , ntype int NULL , nuser int NULL );" db.Execute (sql) next ...übrigens kannst du mir ein gutes buch empfehlen was solche sachen anbelangt? hab eins windows scripting aber mit sehr wenig SQL dazu! gruss – vielen dank habe ich getestet und dann mit WMI abfrage auch versucht. bekomme aber eine komische meldung zurück. "incorrect syntax near "€" " ob ich es mit deiner computer abfrage oder mit meiner mache. mein script nun so aus. strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_ComputerSystem",,48) For Each objItem in colItems strComputer = objItem.DNSHostName 'Set WshNetwork = WScript.CreateObject("WScript.Network") 'strComputer = WshNetwork.ComputerName set db = CreateObject("ADODB.Connection") db.Open("Provider=SQLOLEDB.1;Data Source=Server;UID=sa;PWD=xxxxxx") sql = "use wartung;" db.Execute(sql) sql= "IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N’" & strComputer & "‘) " sql=sql & "AND OBJECTPROPERTY(id, N’IsUserTable’) = 1) " sql=sql & "CREATE TABLE " & strComputer & " (Category int NOT NULL , ComputerNameEV varchar (30) NULL , Eventcode varchar (30) NULL , Message varchar (30) NULL ," sql=sql & "Recordnumber int NULL , Sourcename int NULL ," sql=sql & "timewritten int NULL , ntype int NULL , nuser int NULL );" db.Execute (sql) "hier soll der syntax fehler sein!" next ...übrigens kannst du mir ein gutes buch empfehlen was solche sachen anbelangt? hab eins windows scripting aber mit sehr wenig SQL dazu! gruss sry für doppelpost....netz ist ein wenig lahm und ich ungeduldig!
  17. ...dachte ich doch das du mir eine antwort gibst! ;-) -danke aber die variable Computername versteht er so nicht *.* , dass er dies einfügen muss und als tabelle daraus erstellen soll? wie müsste ich sonst den computername als variable einfügen damit das script arbeiten kann? muss ich zuerst noch eine DNS Host abfrage machen und das resultat als variable weitergeben? danke
  18. Hallo zusammen ich wieder mal, ich möchte gerne eine tabelle erstellen wen sie nicht vorhanden ist. dass heisst er soll mit dem PC name die Tabelle erstellen und die spalten sind dann gegeben. jetzt hab ich hier mal was gefunden und zusammen gestellt. nur der syntax ist hier bei if not exist nicht ganz klar und falsch! strComputer = "." set db = CreateObject("ADODB.Connection") db.Open("Provider=SQLOLEDB.1;Data Source=Server;UID=sa;PWD=xxx") sql = "use MeineDB;" db.Execute(sql) dim computername computername = strComputer IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N’[dbo].[Computername]‘) AND OBJECTPROPERTY(id, N’IsUserTable’) = 1) CREATE TABLE [dbo].[Computername] ( columns specification ); sql="CREATE TABLE Computername (Category int NOT NULL , ComputerNameEV varchar (30) NULL , Eventcode varchar (30) NULL , Message varchar (30) NULL ," sql=sql & "Recordnumber int NULL , Sourcename int NULL ," sql=sql & "timewritten int NULL , ntype int NULL , nuser int NULL );" db.execute sql danke um hilfe gruss bergesel
  19. sind alle tabellen mit nvarcharMAX definiert wegen text. aber werde die mal noch genau definieren damit der zeitstempel nicht ein nvarchar ist :) das mit dem drop to ... hab ich noch keine ahnung, muss ich mir mal ansehen damit ich es verstehe. :)
  20. nein darum erstaunt mich das auch ein wenig mit dem HOST! was mir aber aufgefallen ist, dass wen ich das script ausführe und er in die tabellen schreibt, schreibt er anscheinend nicht alles rein. wen ich nähmlich nochmals in der tabelle rechte maus taste "sql execute" mache habe ich mehr einträge als vorher! das heisst ich habe zuerst 80'000 zeilen drin (dan diese Fehlermeldung) in der tabelle und wen ich sql execute mache 92'000. habe dann dies nochmals gemacht um zu sehen ob er noch mehr einträge macht bleibt aber bei 92'000 zeilen. noch was anders: da ich ja noch teste lösche ich die 92'000 zeilen wieder. der hat aber ewig zum löschen, woran kann das liegen? min. 1std bis die weg sind! natürlich hängt dan sql und kann dort nichts mehr machen
  21. Ich wieder mal, dass script läuft und schreibt das zeug auch schön in die tabellen bekomme dann aber eine fehlermeldung vom script die so heisst: incorrect syntax near 'HOST' Code: 80040E14 Line 39* was ist an dem syntax nicht i.O funktioniert ja! :) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colRetrievedEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent") For Each objEvent in colRetrievedEvents dim Category dim ComputerNameEV dim EventCode dim Message dim RecordNumber dim SourceName dim TimeWritten dim nType dim nUser Category = objEvent.Category ComputerNameEV = objEvent.ComputerName EventCode = objEvent.EventCode Message = objEvent.Message RecordNumber = objEvent.RecordNumber SourceName = objEvent.SourceName TimeWritten = objEvent.TimeWritten nType = objEvent.Type nUser = objEvent.User Set db = CreateObject("ADODB.Connection") db.Open("Provider=SQLOLEDB.1;Data Source=rblpqb760; Trusted_Connection=Yes;Initial Catalog=wartung;User ID=sa;Password=xxx;") sql = "use wartung;" db.Execute(sql) sql = "INSERT INTO wartung (Category,ComputerNameEV,Eventcode,Message,RecordNumber,SourceName,TimeWritten,nType,nUser)" sql = sql & "values ('" & Category & "','" & ComputerNameEV & "','" & EventCode & "','" & Message & "','" & RecordNumber & "','" & SourceName & "','" & TimeWritten & "','" & nType & "','" & nUser & "');" db.Execute(sql) " fehler soll in dieser zeile sein?!" Next
  22. ok ok aber vielen dank für deine hilfe ;-)
  23. danke wieder mal! :) – wie bekomm ich den die meldungs box in sql eingetragen? danke
  24. ok vielen dank teste das ntürlich selber gerne aus ;-) – hab das script auch noch ein wenig angepasst. aber hab bei dim type ein fehler, wieso das? hier mein script: strComputer = "." Set db = CreateObject("ADODB.Connection") db.Open("Provider=SQLOLEDB.1;Data Source=Mein server;UID=sa;Password=xxx;") sql = "use wartung;" db.Execute(sql) Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colRetrievedEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent") dim Category dim ComputerNameEV dim EventCode dim Message dim RecordNumber dim SourceName dim TimeWritten dim Type dim User Category = objEvent.Category ComputerNameEV = objEvent.ComputerName EventCode = objEvent.EventCode Message = objEvent.Message RecordNumber = objEvent.RecordNumber SourceName = objEvent.SourceName TimeWritten = objEvent.TimeWritten Type = objEvent.Type User = objEvent.User For Each objEvent in colRetrievedEvents sql = "INSERT INTO wartung (Category,ComputerNameEV,Eventcode,Message,RecordNumber,SourceName,TimeWritten,Type,User)" sql = sql & "values ('" & Category & "','" & ComputerNameEV & "','" & EventCode & "','" & Message & "','" & RecordNumber & "','" & SourceName & "','" & TimeWritten & "','" & Type & "','" & User & "');" db.Execute(sql) Next db.Close – hat geklappt, das problem war, das die spalte zu wenig zeichen aufnehmen konnte!
  25. 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.
×
×
  • Neu erstellen...