WMI-Tasks für Ereignisprotokolle beziehen Ereignisdaten aus Ereignisprotokolldateien und führen Vorgänge wie das Sichern oder Löschen von Protokolldateien aus. Weitere Beispiele finden Sie im TechNet ScriptCenter unter https://www.microsoft.com/technet .
Die in diesem Thema gezeigten Skriptbeispiele beziehen nur Daten vom lokalen Computer. Weitere Informationen zur Verwendung des Skripts zum Abrufen von Daten von Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.
Im folgenden Verfahren wird das Ausführen eines Skripts beschrieben.
So führen Sie ein Skript aus
Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit der Erweiterung .vbs, z. B.filename.vbs. Stellen Sie sicher, dass Ihr Text-Editor der .txt datei keine Erweiterung hinzufüge.
Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
Geben Sie cscript filename.vbs eingabeaufforderung ein.
Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie über eine Eingabeaufforderung mit erhöhten Rechten ausführen. Einige Ereignisprotokollen, z. B. das Sicherheitsereignisprotokoll, können durch Benutzerzugriffssteuerungen (User Access Controls, UAC) geschützt werden.
Hinweis
Standardmäßig zeigt cscript die Ausgabe eines Skripts im Eingabeaufforderungsfenster an. Da WMI-Skripts große Mengen an Ausgabe erzeugen können, sollten Sie die Ausgabe an eine Datei umleiten. Geben Sie cscript filename.vbs > outfile.txt eingabeaufforderung ein, um die Ausgabe des skriptsfilename.vbsan outfile.txt.
In der folgenden Tabelle sind Skriptbeispiele aufgeführt, die zum Abrufen verschiedener Datentypen vom lokalen Computer verwendet werden können.
Vorgehensweisen
WMI-Klassen oder -Methoden
... Informationen zum Sicherheitsereignisprotokoll abrufen?
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Backup)}!\\" & strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile " & "Where LogFileName='Application'")
For Each objLogfile in colLogFiles
errBackupLog = objLogFile.BackupEventLog("c:\scripts\application.evt")
WScript.Echo "File saved as c:\scripts\applications.evt"
Next
foreach ($objLogFile in $colLogFiles)
{
[void]$objLogFile.BackupEventlog("c:\scripts\applications.evt")
"File saved as c:\scripts\applications.evt"
}
... ein Ereignisprotokoll mehr als einmal sichern?
Stellen Sie sicher, dass die Sicherungsdatei einen eindeutigen Namen hat, bevor Sie die Win32_NTEventlogFile und die BackupEventLog-Methode verwenden. Das Betriebssystem lässt nicht zu, dass Sie eine vorhandene Sicherungsdatei überschreiben. Sie müssen die Sicherungsdatei verschieben oder umbenennen, bevor Sie das Skript erneut ausführen können. Möglicherweise müssen Sie beim Herstellen einer Verbindung mit WMI die Sicherungsberechtigung verwenden. Weitere Informationen finden Sie unter Ausführen privilegierter Vorgänge mit VBScript.
VB
dtmThisDay = Day(Date)
dtmThisMonth = Month(Date)
dtmThisYear = Year(Date)
strBackupName = dtmThisYear & "_" & dtmThisMonth & "_" & dtmThisDay
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Backup)}!\\" & strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile " & "Where LogFileName='Application'")
For Each objLogfile in colLogFiles
objLogFile.BackupEventLog("c:\scripts\" & strBackupName & "_application.evt")
objLogFile.ClearEventLog()
WScript.Echo "File saved: " & strBackupName & "_application.evt"
Next
... bestimmen Sie die Anzahl der Datensätze in einem Ereignisprotokoll?
Verwenden Sie Win32_NTEventlogFile Klasse , und überprüfen Sie den Wert der NumberOfRecords-Eigenschaft.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile " & "Where LogFileName='System'")
For Each objLogFile in colLogFiles
Wscript.Echo objLogFile.NumberOfRecords
Next