bergesel 10 Geschrieben 9. Juli 2008 Melden Teilen Geschrieben 9. Juli 2008 halli hallo dieses script erstellt mir im SQL Tabellen von CLients. Und in diese Tabellen sollten dann die entsprechenden eventlogs abgelegt werden. trComputer = "[%computername%]" Set WshNetwork = WScript.CreateObject("WScript.Network") 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) db.close somit habe ich von allen PC Systemen in der DB Wartung eine Tabelle mit entsprechenden clients vorhanden. soweit so gut...nun möchte ich die eventlogs entsprechend in SQL Tabellen der Systeme speichern und danach das event leeren. für das event zu schreiben habe ich folgendes script. bitte verschohnt mich damit, dass man die events im log bleiben sollen. ich will es so ;-) strComputer = "[%ComputerName%]" 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 strcomputer(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 'db.close nur bei insert into strcomputer versteht er das nicht ganz :) wo ist mein problem? vielen dank für hilfe! Zitieren Link zu diesem Kommentar
Christoph35 10 Geschrieben 9. Juli 2008 Melden Teilen Geschrieben 9. Juli 2008 Ich denke das sollte dann so formuliert werden: sql = "INSERT INTO " + strcomputer + "(Category...)" Sonst wird strcomputer nicht ausgewertet. Christoph Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 9. Juli 2008 Autor Melden Teilen Geschrieben 9. Juli 2008 ok danke werd ich mal testen danke – bekomme immer noch die selbe meldung: Script: c:\document and settings\meinprofil\localsettings\temp\2\meinclientsc.vbs Line:3 char:1 error: the remote server machine does not exist or is unavailable: 'GetObject' code:800A01CE Source: Microsoft VBScript runtime error – ...ist es möglich das ich mit den tabellen ein durcheinander habe in den scripts? ich mein jetzt nicht, dass die spalten nicht übereinstimmen sondern ob die anweisung in die spezifischen tabellen nicht korrekt sind. das er vielleicht mit der variable strcomputer trotzdem nicht "weis" zu welcher tabelle er es einfügen soll? Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 9. Juli 2008 Melden Teilen Geschrieben 9. Juli 2008 Moin, bekomme immer noch die selbe meldung: nein, es ist offensichtlich eine andere. Line:3char:1 error: the remote server machine does not exist or is unavailable: 'GetObject' In Zeile 3 versuchst du ein WMI-Objekt zu erzeugen für den Computer, dessen Name in trComputer hinterlegt ist. Der String, der dort drinsteht, lautet: "[%computername%]" - und so heißt ganz gewiss kein Windows-Computer. Kann es sein, dass Scripting nicht deine Domäne ist? Dann würde ich an deiner Stelle nicht unbedingt die Eventlogs durch ein Skript löschen lassen ... Gruß, Nils Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 9. Juli 2008 Autor Melden Teilen Geschrieben 9. Juli 2008 betreff trcomputer ist copy/paste fehler. danke trotzdem. ist aber richtig im script! was "[%computername%]" betrifft hast du leider keine ahnung! dies ist ein eine variable aus einer software. ist wie "." alles klar? behaupte nur sachen was du auch wirklich weist! deine dumme bemerkungen kannst du dir sparen. Zitieren Link zu diesem Kommentar
Christoph35 10 Geschrieben 9. Juli 2008 Melden Teilen Geschrieben 9. Juli 2008 Off-Topic:Ich glaube kaum, dass man Nils als Betreiber von FAQ-O-MATIC.NET Ahnungslosigkeit unterstellen könnte... :suspect: faq-o-matic.net Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 9. Juli 2008 Melden Teilen Geschrieben 9. Juli 2008 was "[%computername%]" betrifft hast du leider keine ahnung! dies ist ein eine variable aus einer software. ist wie "." alles klar?behaupte nur sachen was du auch wirklich weist! Dass das eine Variable aus einer Software ist, glaub ich gerne. Dass man auf Umgebungsvariablen aus einem VB-Script genauso zugreift, wie mittels DOS-Batch... glaub ich jedoch nicht! Mach doch vorsichtshalber mal unter die Zeile mit der strComputer-Zuweisung eine MsgBox strComputer Steht da dann wirklich der korrekte Computername? Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 9. Juli 2008 Autor Melden Teilen Geschrieben 9. Juli 2008 es steht bei beiden den falschen computername(keiner) :) drin wen ich die MsgBox strComputer benutze. 1x bekomme ich nur den punkt 1x bekomme ich [%computername%] aber danke für eure ansätze :) Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 9. Juli 2008 Melden Teilen Geschrieben 9. Juli 2008 Moin, behaupte nur sachen was du auch wirklich weist!deine dumme bemerkungen kannst du dir sparen. okay, dann weiß ich ja jetzt, dass ich dich künftig besser ignoriere. Kopfschüttelnd, Nils Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 9. Juli 2008 Autor Melden Teilen Geschrieben 9. Juli 2008 @cybquest du hast doch mal mein script auch schon angepasst mit zeit und defrag usw. so falls du dich noch erinnerst. dort ist als strcomputer auch "[%computername%]" und dies funktioniert :) richtiger pc name habe erstmals den fehler gefunden wieso der nicht den pc namen richtig anzeigt. dies muss richtig geschrieben werden so:"[%ComputerName%]" und nicht so "[%computername%]" :) Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 9. Juli 2008 Melden Teilen Geschrieben 9. Juli 2008 Der Punkt ist übrigens keine Variable, sondern ein Punkt! Und der funktioniert nur für "GetObjekt" um auf den lokalen Computer zuzugreifen! Für deine SQL-Statements solltest du dir auf jeden Fall eine korrekte Variable hernehmen. EDIT: Schau Dir die Scripte von "damals" nochmal genau durch. Irgendwo wird die Variable Computername gesetzt! Und den Teil hast du vermutlich bei diesen Scripten vergessen. EDIT2: Nur mal so als "Anregung" aus einem alten Post strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_ComputerSystem",,48)For Each objItem in colItems strComputer = objItem.DNSHostNameNext[/Code] Zitieren Link zu diesem Kommentar
Dr.Melzer 191 Geschrieben 9. Juli 2008 Melden Teilen Geschrieben 9. Juli 2008 @ Bergesel: bitte mässige dich in deinem Ton. Wenn du den Leuten ans Bein pinkelst die dir helfen sollen wird das im Zweifelsfall nach hinten los gehen. Ich sehe schon einen der dir mit an Sicherheit grenzender Wahrscheinlichkeit nicht mehr supporten wird, auch wenn er die Lösung für dein Problem kennt... Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 10. Juli 2008 Autor Melden Teilen Geschrieben 10. Juli 2008 @cybquest die variable computerName funktioniert und schreibt auch in die entsprechende computertabelle. bricht aber danach mit dem fehler error: incorrect syntax near 's' code 80040e14 wieder ab mit schreiben in die tabelle. @Dr.Melzer Zitat von Nils: Kann es sein, dass Scripting nicht deine Domäne ist? Dann würde ich an deiner Stelle nicht unbedingt die Eventlogs durch ein Skript löschen lassen ... hier wird mir nicht ans bein gepinkelt Dr. Melzer? wen ich doch hier meine frage stelle für dies ist doch dieses forum da oder? wen ich es ja wüsste würd ich hier ja nicht rein schreiben oder? also was soll dan dieser komentar von nils. ich bin hier nicht seit 1 monat dabei und hatte noch nie probleme mit user von hier! neben bei erwähnt gruss bergesel Zitieren Link zu diesem Kommentar
Christoph35 10 Geschrieben 10. Juli 2008 Melden Teilen Geschrieben 10. Juli 2008 Off-Topic:Nur mal so zum nachdenken ;)Fabulous Adventures In Coding : How to not get a question answered Christoph Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. Juli 2008 Melden Teilen Geschrieben 10. Juli 2008 @bergesel Zum Anpinkel-Thema: Ich bin durchaus auch der Meinung, dass Du Nils gegenüber extrem überreagiert hast! Zum Script: Wie man ein einfaches Debugging mittels "Msgbox" durchführt, hab ich jetzt hinreichend erwähnt. Wenn du Fehlermeldungen bekommst, bau halt einfach mal welche ein und lass dir die entspr. zusamengebastelten Strings ausgeben. Poste diese dann gleich mit, dann können wir nach "incorrect syntax" fahnden. 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.