Jump to content

bergesel

Members
  • Gesamte Inhalte

    372
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von bergesel

  1. 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?

  2. ...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 :)

  3. 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

  4. 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

  5. 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!

  6. ...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 !!! ;-)

  7. ..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)

  8. 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

  9. 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!

  10. ...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

  11. 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

  12. 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

  13. 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
    

  14. 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!

×
×
  • Neu erstellen...