easybernd
Goto Top

Automatische Mailinfo wenn Disk oder Cdrom Fehler in Eventlog?

Hallo an alle face-smile

Wollte fragen, ob es eine Möglichkeit bzw ein Script oder Freewaretool gibt,
dass mir folgende Info mailt, falls vorhanden.

Eventlog - System
Error für disk & cdrom
Warning für disk & cdrom

am liebsten wäre es mir wenn das Tool einmal am Tag, bei anmelden checkt und bei vorkommenden Error oder Warning mir eine Mail an eine fest Mail-Adresse sendet.

Gibt es hierzu was?
Sollte hier diese Fragen schon mal aufgetaucht sein, wäre ich mit dem Link in das passende Thema schon zufrieden face-smile

LG

Content-Key: 161249

Url: https://administrator.de/contentid/161249

Printed on: April 19, 2024 at 07:04 o'clock

Member: Friemler
Friemler Feb 21, 2011 at 17:13:01 (UTC)
Goto Top
Hallo easybernd,

da Du zu Deinem Betriebssystem nichts verraten hast: In Windows 7 (evtl. auch Vista?) kann man über die Aufgabenplanung (Nachfolger des Taskplaners) eine Aufgabe starten (und damit ein Programm), wenn ein bestimmter Event auftritt. Als zu startendes Programm würde sich für Dich BLAT anbieten, ein EMail-Client für die Kommandozeile, erhältlich hier. Zum erstellen von eventgetriggerten Aufgaben mal googeln.

Gruß
Friemler
Member: easybernd
easybernd Feb 21, 2011 at 18:41:57 (UTC)
Goto Top
Hy,

mein Fehler

möchte das für folgende Clients realisieren

Windows XP Prof
Windows 7 Prof

wenn möglich mit einer Software oder Script.
Member: DerWoWusste
DerWoWusste Feb 21, 2011, updated at Oct 18, 2012 at 16:45:55 (UTC)
Goto Top
Bernd, Friemler hat doch etwas genannt. Geh darauf ein - reicht die Lösung zumindest für win7 oder muss es eine sein, die für beide OS' funktioniert?
Für xp gibt es die onboard-Lösung eventtriggers.exe.

Siehe auch Möglichkeiten der Eventlogüberwachung mit Vista und 2008
Member: Friemler
Friemler Feb 21, 2011 at 22:30:27 (UTC)
Goto Top
Hallo easybernd,

schau mal hier:

evt-Watch, für die Kommandozeile (mit XML-Steuerdatei), Freeware, .NET 2.0 erforderlich

EventSentry, GUI, 30-Tage-Trial
EventSentry, GUI, Light-Version, Freeware, Registrierung erforderlich

Gruß
Friemler
Member: easybernd
easybernd Feb 21, 2011 at 23:38:56 (UTC)
Goto Top
hy,

wow danke für die top tipps

evt-Watch schaut nachdem aus was ich suche
muss mich mal da einarbeiten, könnte immens helfen

hatte bei einen standort 23 festplatten die in 4 wochen bad sectors hatten und so könnte ich vorab also präventiv arbeiten.

danke für die tipps face-smile
Member: Friemler
Friemler Feb 22, 2011 at 00:16:25 (UTC)
Goto Top
Hi,

weitere Möglichkeit per VBS:

Auf dieser Seite wird erklärt, wie man per VBS unter Benutzung von WMI einen Permanent Event Consumer schreibt, der bei Auftreten eines WMI-Events eine Aktion ausführen kann (für Dich interessant: der CommandLineEventConsumer, mit dem Du CSCRIPT.EXE mit einem VBScript als Parameter und weiteren Parametern für das Script starten kannst). Hier auch noch die MSDN-Seite zum Thema.

Hier findest Du die passende WQL-Query für den Eventfilter, durch die ein wählbares Windows-Log auf Events überwacht wird, was dann einen WMI-Event erzeugt, der von einem Commandline Event Consumer bearbeitet werden kann. Hier die MSDN-Seite zur Win32_NTLogEvent-Klasse, wo Du die Eigenschaften eines Windows-Log-Events findest um Informationen über den aufgetretenen Windows-Event zu bekommen.

Hier einen Artikel über die WQL (WMI Query Language), in dem auch auf das in Windows integrierte Programm WBEMTEST.EXE eingegangen wird, das zum debuggen von Event Consumern sehr nützlich ist (wenn was schief läuft, kann man damit den installierten Event Consumer, den Eventfilter und das Filter->Consumer-Binding wieder löschen).

Und hier VBS-Code zum versenden einer EMail.

Im folgenden noch ein Beispiel-Skript für einen Commandline Event Consumer, dass ich letztens verbrochen habe, um die Erstellung von Dateien in einem bestimmten Verzeichnis zu überwachen. Das ganze ist quasi ein Gerüst für alle möglichen Commandline Event Consumer. Es muss lediglich der Abschnitt am Anfang des Scripts (der mit Sternchen eingefasst ist) auf die jeweiligen Bedürfnisse angepasst werden, im wesentlichen die WQL-Query und die Parameter, die an das aufzurufende Eventhandler-Script übergeben werden sollen, den Abschnitt "Prepare Monitor Filespec for WMI Event Filter query" kannst Du für Deine Zwecke entfernen. Zum Verständnis ist auf jeden Fall die Lektüre dieser schon genannten Seite zu empfehlen, obwohl dort mit MOF-Dateien gearbeitet wird (ist mir zu umständlich und geht, wie man im Script sieht, auch direkt aus VBS).

Wenn das Script an die jeweilige Aufgabe angepasst ist, muss es nur einmalig gestartet werden, um den Event Consumer zu installieren. Er bleibt auch nach einem Reboot erhalten. Du musst natürlich noch ein VBScript schreiben, das als Eventhandler fungiert und von dem Consumer aufgerufen wird. Hier kannst Du dann die EMail verschicken. Dieses Script muss unter einem bestimmten Namen im selben Verzeichnis wie das folgende Script gespeichert werden und auch dort bleiben. Der Name ergibt sich aus dem String in Zeile 13 ohne Leerzeichen strEventDescription+EventHandler.vbs, für das Beispiel-Skript also NewTextfileCreationEventHandler.vbs.

' ===========================================  
' Run this script with administrative rights!  
' ===========================================  



'/////////////////////////////// Configure script's job ///////////////////////////////  

'******************** Customize according to your specific needs **********************  

'------------------ Set event description and job related variables -------------------  

strEventDescription  = "New Textfile Creation"  
strMonitorFileSpec   = "E:\Test\*.txt"  
strPollingIntervall  = "1"  



'---------------- Prepare Monitor Filespec for WMI Event Filter query -----------------  

Set FSO              = CreateObject("Scripting.FileSystemObject")  

strDrive             = FSO.GetDriveName(strMonitorFileSpec)

strFileName          = FSO.GetFileName(strMonitorFileSpec)
intPathBegin         = Len(strDrive) + 1
intPathLen           = Len(strMonitorFileSpec) - Len(StrDrive) - Len(strFileName)
strPath              = Replace(Mid(strMonitorFileSpec, intPathBegin, intPathLen), "\", "\\")  

strExtension         = FSO.GetExtensionName(strMonitorFileSpec)

Set FSO              = Nothing



'----------------------------- Set WMI Event Filter query -----------------------------  

strEventFilterQuery  = "SELECT * FROM __InstanceCreationEvent" _  
                     & " WITHIN " & strPollingIntervall _  
                     & " WHERE TargetInstance ISA 'CIM_DataFile'" _  
                     & " AND TargetInstance.Drive='" & strDrive & "'" _  
                     & " AND TargetInstance.Path='" & strPath & "'" _  
                     & " AND TargetInstance.Extension='" & strExtension & "'"  



'-------------- Set WMI Namespace where the monitored event will occure ---------------  

strEventNamespace    = "root\Cimv2"  



'----------- Set parameters which should be passed to Event Handler script ------------  

strEventHandlerParam = """" _  
                     & "%TargetInstance.Drive%" _  
                     & "%TargetInstance.Path%" _  
                     & "%TargetInstance.FileName%" _  
                     & "." _  
                     & "%TargetInstance.Extension%" _  
                     & """"  

'**************************************************************************************  





'//////////////////////////////// Set script variables ////////////////////////////////  

'- Set Event Handler path, quote it and prepare it and its working directory for WMI --  

Set FSO           = CreateObject("Scripting.FileSystemObject")  

strEventHandlerWD = Replace(FSO.GetParentFolderName(WScript.ScriptFullName), "\", "\\")  

strEventHandler   = Replace(strEventDescription, " ", "") & "EventHandler.vbs"  
strEventHandler   = """" & strEventHandlerWD & "\\" & strEventHandler & """"  

Set FSO           = Nothing



'----------------------- Test for existing Event Handler script -----------------------  

Set FSO = CreateObject("Scripting.FileSystemObject")  

If Not FSO.FileExists(Replace(Replace(strEventHandler, "\\", "\"), """", "")) Then  
  MsgBox "The Event Handler script " & vbCRLF _  
          & Replace(strEventHandler, "\\", "\") & vbCRLF _  
          & "does not exist. Please create it.", _  
         vbExclamation, _
         "Missing Event Handler script"  
End If

Set FSO = Nothing



'-------------------------- Build parameters for CScript.exe --------------------------  

strCScriptParam = strEventHandler & " " & strEventHandlerParam  



'---------------- Get path of Windows Directory and prepare it for WMI ----------------  

Set WshShell    = WScript.CreateObject("WScript.Shell")  

strWinDir       = Replace(WshShell.ExpandEnvironmentStrings("%SystemRoot%"), "\", "\\")  

Set WshShell    = Nothing
 


'---------------------- Set path of CScript.exe prepared for WMI ----------------------  

setCScriptPath  = strWinDir & "\\System32\\cscript.exe"  





'////////////////////////// Install permanent Event Consumer //////////////////////////  

'------- Get WMI Scripting API object (SWbemServices), Namespace: Subscription --------  

strComputer                          = "."  
Set objWMIService                    = GetObject("winmgmts:" _  
                                                 & "{impersonationLevel=impersonate}!" _  
                                                 & "\\" & strComputer & "\root\Subscription")  



'------------------------------ Create the Event Filter -------------------------------  

Set objFilterClass                   = objWMIService.Get("__EventFilter")  
Set objFilter                        = objFilterClass.SpawnInstance_()

objFilter.Name                       = strEventDescription & " Event Filter"  
objFilter.EventNamespace             = strEventNamespace
objFilter.QueryLanguage              = "WQL"  
objFilter.Query                      = strEventFilterQuery

Set EventFilterPath                  = objFilter.Put_()



'----------------------- Create the Commandline Event Consumer ------------------------  

Set objEventConsumerClass            = objWMIService.Get("CommandLineEventConsumer")  
Set objEventConsumer                 = objEventConsumerClass.SpawnInstance_()

objEventConsumer.Name                = strEventDescription & " Commandline Event Consumer"  
objEventConsumer.CommandLineTemplate = setCScriptPath & " " & strCScriptParam  
objEventConsumer.ExecutablePath      = setCScriptPath
objEventConsumer.WorkingDirectory    = strEventHandlerWD
objEventConsumer.ShowWindowCommand   = 0

Set CommandlineEventConsumerPath     = objEventConsumer.Put_()



'------------------ Bind Event Filter to Commandline Event Consumer -------------------  

Set objBindingClass                  = objWMIService.Get("__FilterToConsumerBinding")  
Set objBinding                       = objBindingClass.SpawnInstance_()

objBinding.Filter                    = EventFilterPath
objBinding.Consumer                  = CommandlineEventConsumerPath

objBinding.Put_()

Gruß
Friemler