【问题标题】:Why does WQL LIKE operator not work on drive c, but works fine on drive d?为什么 WQL LIKE 运算符不能在驱动器 c 上工作,但在驱动器 d 上工作正常?
【发布时间】:2012-10-23 23:26:19
【问题描述】:

我正在学习文件系统监控,以加快我的邮件服务器的第 3 次和第 4 次备份。我有一个很好的 VB 脚本,可以在驱动器 D 上完美运行,但是当我查询对驱动器 C 的更改时,如果我使用通配符,则不会返回任何内容。

这是我的疑问:

这适用于 c:\sc,但不会返回子文件夹更改:

 Select * From __InstanceOperationEvent Within 10 Where TargetInstance Isa 'CIM_DataFile' And ((TargetInstance.Drive='c:' And TargetInstance.Path = '\\sc\\'))

这适用于 d:\sc,并且会返回子文件夹更改:

 Select * From __InstanceOperationEvent Within 10 Where TargetInstance Isa 'CIM_DataFile' And ((TargetInstance.Drive='d:' And TargetInstance.Path LIKE '\\sc\\%'))

这个完全没有返回任何变化。没有返回错误消息,脚本继续运行:

 Select * From __InstanceOperationEvent Within 10 Where TargetInstance Isa 'CIM_DataFile' And ((TargetInstance.Drive='c:' And TargetInstance.Path LIKE '\\sc\\%'))

双括号是为了让我可以添加与“OR”相关的类似查询。

我的系统驱动器是驱动器 C。
驱动器 D 是可移动 USB 驱动器。

我是否更改了系统驱动器上的某些设置,导致该设置无法正常工作?
或者查询返回的结果过多?

我已经为此搜索了几个小时。任何见解将不胜感激。

【问题讨论】:

    标签: file wmi monitoring wildcard wql


    【解决方案1】:

    这是因为当您在带有 CIM_DataFile 类的 WQL 语句中使用 LIKE 运算符时,WMI 会扫描整个驱动器以找到匹配项,现在因为您的 USB 驱动器更小(更简单)树形文件夹结构 WMI 可以更快地返回结果。但是当您使用 C 驱动器时,WMI 仍在运行查询,直到找到所有匹配项。所以建议不要将 LIKE 运算符与 CIM_DataFile 一起使用,而应像这样使用 = 运算符:

    Select * From __InstanceOperationEvent Within 1 Where TargetInstance ISA 'CIM_DataFile' And ((TargetInstance.Drive='c:' And TargetInstance.Path = '\\sc\\'))
    

    【讨论】:

    • 好的,听起来可行,但如果我错了,请纠正我 - 不是在查询驱动器,而是在查询事件日志。我在上面给出的第二个示例完美地适用于驱动器 D: 上的文件夹和子文件夹,顺便说一下,它上面有 4 个不同服务器的备份,使其既不小也不简单,因此显然可以使用 LIKE 来检索子文件夹更改,对?每个文件的创建、删除和更改都被记录到事件日志中,那么如何在事件日志中查询发生在文件夹及其子文件夹上的事件 c:?
    • C盘是典型的Windows安装,D盘是3个典型的Windows安装和一个Linux。
    • 你所说的对我来说没有意义,我有很多使用 WMI 的经验,你描述的行为不符合我在这个主题上的个人经验。无论如何,您为什么要使用 LIKE 运算符?
    • 我上面的第二个示例返回文件夹中所有文件和驱动器 D 的所有子文件夹的事件。请在您的辅助驱动器上尝试它,也许您会得出与我相同的结论 - 它在某些情况下有效。我已经在 WMI 测试器中运行了上面第三个示例中的查询,有趣的是,查询开始了,而 GUI 再也没有回来。显然,查询运行,但没有完成,没有超时,也没有引发诸如配额限制或其他错误。
    • 不知道为什么它发生在 C 而不是 D,但它似乎是监视驱动器 C 的不可行的解决方案。我可以映射所有文件夹并订阅它们的事件,但大约有要观看 8000 个文件夹,这似乎太多了。
    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    相关资源
    最近更新 更多