У меня есть следующий запрос WMI, который опрашивает, был ли файл создан в C:\test
:
Select * From __InstanceCreationEvent Within 1
Where TargetInstance Isa "Cim_DirectoryContainsFile"and TargetInstance.GroupComponent="Win32_Directory.Name='C:\\test'"
Я могу запустить это в wbemtest.exe
без проблем — вот вывод из wbemtest:
Тем не менее, когда я пытаюсь запустить mofcomp myfile.mof
в CMD я получаю ошибку «непарсируемый запрос». В файле .mof мой запрос выглядит так:
"Select * From __InstanceCreationEvent Within 1 ""Where TargetInstance Isa \"Cim_DirectoryContainsFile\" ""and TargetInstance.GroupComponent=\"Win32_Directory.Name=\"C:\\\\test\"\"";
И я действительно не могу понять, что не так с моим персонажем, сбежавшим …
Я знаю, что в WQL мне не нужно объединять строки, поэтому я не думаю, что это проблема. Тем не менее, я понятия не имею, нужно ли мне использовать одинарные или двойные кавычки, или нужно ли избегать одинарных кавычек внутри набора двойных или использовать ли двойные кавычки в наборе кавычек …
Документация по этой детали практически отсутствует, поэтому буду очень признателен, если кто-нибудь, имеющий опыт, сможет мне помочь!
Спасибо
Этот фильтр можно записать так:
"Select * From __InstanceCreationEvent Within 1 ""Where TargetInstance Isa \"Cim_DirectoryContainsFile\" ""and TargetInstance.GroupComponent=\"Win32_Directory.Name=\'C:\\\\test\'\"";
и это работает без проблем. Увидеть этот ответ для более подробной информации о том, что здесь произошло. Похоже, что какая-то проблема с Notepad++
мешает этому форматированию.
Также обратите внимание на использование одинарных и двойных кавычек в строке фильтра.
Других решений пока нет …