Как правильно экранировать кавычки в запросе WMI

У меня есть следующий запрос 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 мне не нужно объединять строки, поэтому я не думаю, что это проблема. Однако я понятия не имею, нужно ли мне использовать одинарные или двойные кавычки, или нужно ли экранировать одинарную кавычку внутри набора двойников, или можно ли использовать двойные кавычки в наборе кавычек...

Документации по этой детали практически не существует, поэтому был бы очень признателен, если бы кто-нибудь с опытом мог мне помочь!

Спасибо


person Bassie    schedule 26.04.2016    source источник


Ответы (1)


Этот фильтр можно записать так:

"Select * From __InstanceCreationEvent Within 1 "
"Where TargetInstance Isa \"Cim_DirectoryContainsFile\" "
"and TargetInstance.GroupComponent=\"Win32_Directory.Name=\'C:\\\\test\'\"";

и это работает без проблем. Подробнее о том, что здесь произошло, см. этот ответ. . Кажется, что какая-то проблема с Notepad++ мешает этому форматированию.

Также обратите внимание на использование одинарных и двойных кавычек в строке фильтра.

person Bassie    schedule 27.04.2016