【问题标题】:Creating a Win32_LocalTime _instancemodificationevent non repeating event创建 Win32_LocalTime _instancemodificationevent 非重复事件
【发布时间】:2012-07-12 07:47:22
【问题描述】:

我有一个问题,我似乎无法找到答案。我正在使用 WMI 创建一些定时事件,到目前为止它们运行良好。事件按预期在预定周期重复。我现在正在寻找一种方法来创建一个“一次性”事件,该事件不会重复并且似乎无法弄清楚或在任何地方找到答案。

以下是 MSDN 网站上创建重复事件的示例:

// Win32_LocalTime and Win32_UTCTime reside in root\cimv2 namespace. 
// Defining the EventNamespace allows the filter
// to be compiled in any namespace.
instance of __EventFilter as $FILT1
{
    Name  = "wake-up call";
    Query = "SELECT * FROM __InstanceModificationEvent WHERE "    
    "TargetInstance ISA \"Win32_LocalTime\" AND "
    "TargetInstance.Hour = 0 AND TargetInstance.Minute = 0 AND "
 "TargetInstance.Second = 0";
    QueryLanguage = "WQL";
    EventNamespace = "root\\cimv2";
};

我想让它不再重复。有什么想法吗?

干杯

青蛙

【问题讨论】:

  • 只是顺便想一下,以某种方式添加日期会对此有所帮助吗?

标签: events wmi wmi-query timed


【解决方案1】:

__InstanceModificationEvent 类是一个内在事件,它报告何时对 WMI 类的实例进行了更改,在这种情况下正在侦听返回当前时间的 Win32_LocalTime WMI 类。现在,如果您想创建一个非重复事件,您可以将年、月和日属性添加到 WQL 语句中。

instance of __EventFilter as $FILT1
{
    Name  = "wake-up call";
    Query = "SELECT * FROM __InstanceModificationEvent WHERE "    
    "TargetInstance ISA \"Win32_LocalTime\" AND "
    "TargetInstance.Hour = 0 AND TargetInstance.Minute = 0 AND TargetInstance.Second = 0 AND "
    "TargetInstance.Year=2012 AND TargetInstance.Month=7 AND TargetInstance.Day=12";
    QueryLanguage = "WQL";
    EventNamespace = "root\\cimv2";
};

【讨论】:

  • 感谢您为我澄清这一点。您知道这对于注册永久活动是否相同?即使在机器重启后也可以使用永久事件吗?如果在机器关机的情况下事件过去了,还会有通知吗?
  • 问:你知道这对于注册永久活动是否相同?答:是的
  • 问 : 注册永久活动也一样?即使在机器重启后也可以使用永久事件吗?答:是的,这是临时事件和永久事件之间的区别之一。
  • Q : 如果事件在机器断电的情况下过去了,还会有通知吗?答:我不这么认为,因为在这种情况下,事件正在监视一组特定的条件,而 WMI 不知道哪些条件与日期时间因素有关。因此,如果条件不匹配,则不会触发该事件。
  • 感谢您回答这些问题。我很欣赏指导。我现在可以继续我的项目了。非常感谢。
猜你喜欢
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 2014-06-01
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多