Delen via


E-mail verzenden op basis van een gebeurtenis

Met behulp van de SMTPEventConsumer klasse kunt u e-mail verzenden naar een aangewezen gebruiker wanneer een opgegeven gebeurtenis plaatsvindt. Deze klasse is een standaard gebeurtenisconsumer die WMI biedt.

Voor de SMTPEventConsumer klasse zijn de volgende voorwaarden vereist om een e-mailbericht te verzenden als reactie op een gebeurtenis:

De basisprocedure voor het gebruik van standaardgebruikers is altijd hetzelfde en bevindt zich in Bewaking en reageren op gebeurtenissen met standaardconsumenten. De volgende procedure voegt toe aan de basisprocedure; is specifiek voor de klasse SMTPEventConsumer; en beschrijft hoe u een gebeurtenisconsumer maakt die e-mail verzendt.

In de volgende procedure wordt beschreven hoe u een gebeurtenisconsumer maakt die e-mail verzendt.

Een gebeurtenisconsumer maken die e-mail verzendt

  1. Installeer en registreer indien nodig de klasse SMTPEventConsumer.

    De klasse SMTPEventConsumer wordt gecompileerd in de root\subscription-naamruimte door het WMI-installatieprogramma.

  2. Identificeer de gebeurtenis die u wilt bewaken en maak de gebeurtenisquery.

    Er kan een bestaande intrinsieke gebeurtenis zijn die wordt gebruikt om uw gebeurtenis te bewaken. De meeste intrinsieke gebeurtenissen zijn gekoppeld aan wijzigingen in klasse-exemplaren in de naamruimte root\cimv2. Door de klassen in de WMI-klassen te analyseren verwijzing, kunt u waarschijnlijk een klasse vinden die de gebeurtenis identificeert die u wilt bewaken. Gebruik bijvoorbeeld de klasse Win32_LogicalDisk om wijzigingen in een harde schijf te controleren.

    Als er geen bestaande intrinsieke gebeurtenissen zijn die worden gebruikt, is er mogelijk een extrinsische gebeurtenisprovider die kan werken. Gebruik bijvoorbeeld de RegistryTreeChangeEvent klasse van de registerprovider om wijzigingen in het systeemregister te controleren.

    Als er geen klasse bestaat die de gebeurtenis identificeert die u wilt bewaken, moet u uw eigen gebeurtenisprovider maken en nieuwe extrinsische gebeurtenisklassen definiëren. Zie Een gebeurtenisprovider schrijvenvoor meer informatie.

  3. Maak in het MOF-bestand (Managed Object Format) een exemplaar van de SMTPEventConsumer- om gebeurtenissen te ontvangen.

    Gebruik de eigenschappen van dit exemplaar om het e-mailbericht te definiëren dat moet worden verzonden wanneer er een gebeurtenis plaatsvindt. De eigenschap ToLine definieert bijvoorbeeld het e-mailadres en de eigenschap Message definieert de tekst van het e-mailbericht. U moet het e-mailadres, het onderwerp en de tekst van een bericht definiëren, maar een e-mailbericht kan geen bijlage hebben. Voor meer informatie, zie het ontwerpen van MOF-klassen (Managed Object Format).

  4. Maak een gebeurtenisquery waarmee de gebeurtenissen worden opgegeven die u wilt bewaken.

    Voor meer informatie, zie Queries uitvoeren met WQL.

  5. Maak een exemplaar van __EventFilter en sla uw query op in de eigenschap Query.

    Voor meer informatie, zie Query's uitvoeren met WQL.

  6. Maak een exemplaar van __FilterToConsumerBinding om het filter en de consument te koppelen.

  7. Compileer het MOF-bestand met behulp van Mofcomp.exe.

Voorbeeld

Het voorbeeld in deze sectie is in MOF-code, maar u kunt de exemplaren programmatisch maken met behulp van de Scripting-API voor WMI- of de COM-API voor WMI-.

In de volgende procedure wordt beschreven hoe u het voorbeeld gebruikt.

Het voorbeeld gebruiken

  1. Kopieer de volgende MOF naar een tekstbestand en sla het bestand op met de extensie .mof.

  2. Compileer het MOF-bestand in een opdrachtpromptvenster met behulp van de volgende opdracht:

    Mofcompbestandsnaam**.mof**

Notitie

Wanneer MOF-code wordt gecompileerd in de naamruimte root\subscription, wordt de SMTPEventConsumer- gecompileerd in dezelfde naamruimte.

 

#pragma namespace ("\\\\.\\root\\subscription")

instance of __EventFilter as $FILTER
{
    Name = "LowDiskspaceFilter";
    
    EventNamespace = "\\\\.\\root\\cimv2";  

    Query = "SELECT * FROM __InstanceModificationEvent WITHIN 10 "
            "WHERE TargetInstance ISA \"Win32_LogicalDisk\" "
            "AND TargetInstance.FreeSpace < 846000000 "
            "AND PreviousInstance.FreeSpace >= 846000000 "
            "AND (TargetInstance.DeviceID = \"C:\" "
            "OR TargetInstance.DeviceID = \"D:\")";
    QueryLanguage = "WQL";
};


instance of SMTPEventConsumer as $CONSUMER
{
    Name = "LowDisk";
    ToLine = "SysAd@MyCompany.com, MyAlias@MyCompany.com";
    CcLine = "MyHome@MyISP.com";
    ReplyToLine = "MyAlias@MyCompany.com";
    SMTPServer = "SmartHost";
    Subject = "WARNING: Low disk space";
    Message = "WARNING: Your %TargetInstance.DeviceID% is"
        " getting dangerously low.";
};

instance of __FilterToConsumerBinding
{
    Consumer = $CONSUMER ;
    Filter = $FILTER ;
};

Gebeurtenissen bewaken en erop reageren met de standaardconsumenten