Это должно быть серьезно тривиальной проблемой экранирования, но я не могу запросить WMI для такой группы:
SELECT * FROM WIN32_GroupUser WHERE GroupComponent="Win32_Group.Domain='TESTWIN7DEVEL-P',Name='Alaenna's Smile'"
Это возвращает ошибку WMI, как показано здесь, используя wbemtest
:
Я попытался экранировать с помощью обратной косой черты, как описано в другом запись stackoverflow:
SELECT * FROM WIN32_GroupUser WHERE GroupComponent="Win32_Group.Domain='TESTWIN7DEVEL-P',Name='Alaenna\'s Smile'"
Это тоже не работает. Из другой статьи я прочитал следующее:
\ следует интерпретировать как одинарную обратную косую черту, а \" следует интерпретировать как одинарную кавычку.
Этот запрос выполнен успешно, но возвращает нулевые результаты. Поскольку двойные кавычки не разрешены в именах групп Windows, я не могу создать тестовую группу, чтобы увидеть, извлекает ли запрос несуществующую группу под названием «Улыбка Аленны» или что-то еще:
SELECT * FROM WIN32_GroupUser WHERE GroupComponent="Win32_Group.Domain='TESTWIN7DEVEL-P',Name='Alaenna\"s Smile'"
Я точно знаю, что этот запрос работает по назначению с группами без кавычек. Ниже приведен пример запроса без кавычек и ожидаемых результатов:
SELECT * FROM WIN32_GroupUser WHERE GroupComponent="Win32_Group.Domain='TESTWIN7DEVEL-P',Name='Administrators'"
Как избежать имени группы в одинарных кавычках с помощью приведенного выше запроса WMI?
Это используется в коде для запроса членов группы (например, «Улыбка Аленны») в C#. Я был бы счастлив с другим решением, которое может обеспечить получение членов всех системных групп или аналогичных. Я просто подумал, что это лучший, самый прямой маршрут.