共用方式為


根據事件傳送Email

藉由使用 SMTPEventConsumer 類別,您可以在發生指定的事件時傳送電子郵件給指定的使用者。 這個類別是 WMI 提供 的標準事件取用者

SMTPEventConsumer類別需要下列條件,才能傳送電子郵件訊息以回應事件:

使用標準取用者的基本程式一律相同,且位於 使用標準取用者的監視和回應事件中。 下列程式會新增至基本程式;專屬於 SMTPEventConsumer 類別;和 描述如何建立傳送電子郵件的事件取用者。

下列程式說明如何建立傳送電子郵件的事件取用者。

建立傳送電子郵件的事件取用者

  1. 視需要安裝並註冊 SMTPEventConsumer 類別。

    SMTPEventConsumer類別是由 WMI 安裝程式編譯成 root\subscription 命名空間。

  2. 識別您想要監視的事件,並建立事件查詢。

    可能有一個用來監視事件的現有內建事件。 大部分的內部事件都會與 「root\cimv2」 命名空間中的類別實例變更相關聯。 藉由分析 WMI 類別 參考中的類別,您可能會找到可識別您想要監視之事件的類別。 例如,使用 Win32_LogicalDisk 類別來監視硬碟的變更。

    如果沒有使用的現有內建事件,可能會有一個可以運作的 extrinsic 事件提供者。 例如,使用登錄提供者的 RegistryTreeChangeEvent 類別來監視系統登錄的變更。

    如果類別不存在可識別您想要監視的事件,您必須建立自己的事件提供者,並定義新的 extrinsic 事件類別。 如需詳細資訊,請參閱 撰寫事件提供者

  3. 在 Managed 物件格式 (MOF) 檔案中,建立 SMTPEventConsumer 的實例以接收事件。

    使用 實例的屬性來定義事件發生時要傳送的電子郵件訊息。 例如, ToLine 屬性會定義電子郵件地址, 而 Message 屬性則定義電子郵件訊息的文字。 您必須定義郵件的電子郵件地址、主旨和文字,但電子郵件訊息不能有附件。 如需詳細資訊,請參閱 設計 Managed 物件格式 (MOF) 類別

  4. 建立事件查詢,指定您想要監視的事件。

    如需詳細資訊,請參閱 使用 WQL 查詢

  5. 建立 __EventFilter 的實例,並將查詢儲存在 Query 屬性中。

    如需詳細資訊,請參閱 使用 WQL 查詢

  6. 建立 __FilterToConsumerBinding 的實例,以關聯篩選準則和取用者。

  7. 使用 Mofcomp.exe編譯 MOF 檔案。

範例

本節中的範例位於 MOF 程式碼中,但您可以使用 適用于 WMI 的腳本 APIWMI 的 COM API,以程式設計方式建立實例。

下列程式描述如何使用 範例。

若要使用範例

  1. 將下列 MOF 複製到文字檔,並以 .mof 副檔名儲存。

  2. 在命令提示字元視窗中,使用下列命令編譯 MOF 檔案:

    Mofcompfilename**.mof**

注意

當 MOF 程式碼編譯成 root\subscription 命名空間時, SMTPEventConsumer 會編譯成相同的命名空間。

 

#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 ;
};

使用標準取用者監視和回應事件