none
Создание запроса RRS feed

  • Вопрос

  • Всем привет!

    Помогите кто чем может - необходимо разработать отчёт в SCCM 2012 R2 SP1 где были бы компы под управлением Windows 7 и на которых не стоит EndpointProtection.

    Заранее спасибо!

    12 февраля 2016 г. 7:27

Ответы

  • добавил 7-ки, проверяйте

    select 
       v_R_System.ResourceID,
        v_R_System.ResourceType,
        v_R_System.Name0,
        v_R_System.SMS_Unique_Identifier0,
        v_R_System.Resource_Domain_OR_Workgr0,
        v_R_System.Client0
     from v_R_System
        inner join v_GS_COMPUTER_SYSTEM
           on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
       
        where v_R_System.operatingSystem0 like 'Windows 7%' and v_GS_COMPUTER_SYSTEM.Name0 not in
           
    	   (select distinct
            v_GS_COMPUTER_SYSTEM.Name0
        from  v_R_System
            inner join v_GS_COMPUTER_SYSTEM
        on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
            inner join v_GS_INSTALLED_SOFTWARE
        on v_GS_INSTALLED_SOFTWARE.ResourceID = v_R_System.ResourceId
            where v_GS_INSTALLED_SOFTWARE.ARPDisplayName0 = 'System Center 2012 Endpoint Protection' ) 

    • Помечено в качестве ответа Igor3000 25 февраля 2016 г. 6:20
    16 февраля 2016 г. 15:18
    Модератор
  • так, ну я понял почему у вас installedsoftware пустой. Вам надо поставить Asset Intelligence synchronization point, в нем есть эта таблица. С ней просто удобней работать.

    как то так:

    select 
       v_R_System.ResourceID,
        v_R_System.ResourceType,
        v_R_System.Name0,
        v_R_System.SMS_Unique_Identifier0,
        v_R_System.Resource_Domain_OR_Workgr0,
        v_R_System.Client0
     from v_R_System
        inner join v_GS_COMPUTER_SYSTEM
           on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
       
        where v_R_System.Operating_System_Name_and0 = 'Microsoft Windows NT Workstation 6.1' and v_GS_COMPUTER_SYSTEM.Name0 not in
           
    	   (select distinct
            v_GS_COMPUTER_SYSTEM.Name0
        from  v_R_System
            inner join v_GS_COMPUTER_SYSTEM
        on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
            inner join v_GS_ADD_REMOVE_PROGRAMS
        on v_GS_ADD_REMOVE_PROGRAMS.ResourceID = v_R_System.ResourceId
            where v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 = 'System Center 2012 Endpoint Protection' ) 

    можно в конце поиграть с v_GS_ADD_REMOVE_PROGRAMS.DisplayName0. У меня просто нет SCEP, я не уверен, что он так называется. 

    • Помечено в качестве ответа Igor3000 25 февраля 2016 г. 6:20
    19 февраля 2016 г. 9:18
    Модератор
  • v_R_System.operatingSystem0 like 'Windows 7%'
    v_R_System.Operating_System_Name_and0 = 'Microsoft Windows NT Workstation 6.1' 
    • Помечено в качестве ответа Igor3000 25 февраля 2016 г. 6:20
    18 февраля 2016 г. 12:17
    Модератор

Все ответы

  • Ни у кого не каких идей нет???
    15 февраля 2016 г. 11:25
  • Это не сложный запрос, попробуйте встроенным конструктором сделать это при создании коллекции и указании членства
    15 февраля 2016 г. 11:38
  • День добрый.

    Вам именно отчет (Report) нужен?

    Есть несколько гайдов с которых можно было бы начать:

    Гуглятся по ключевым словам "SCCM Report Builder"

    Но возможно вопрос можно решить проще?

    Например если вам самому надо просто оценить текущего положения дел - достаточно консоли и фильтра /группировки по "Operation System" / "Endpoint Protection Enabled"
    Если Query / Device Collection, то как то так:

    select *  from  SMS_R_System inner join SMS_G_System_OPERATING_SYSTEM on SMS_G_System_OPERATING_SYSTEM.ResourceId = SMS_R_System.ResourceId inner join SMS_G_System_EPDeploymentState on SMS_G_System_EPDeploymentState.ResourceId = SMS_R_System.ResourceId where SMS_G_System_OPERATING_SYSTEM.Caption like "%Windows 7%" and SMS_G_System_EPDeploymentState.DeploymentState != 3


    Грамотная постановка вопроса - уже 50% решения.

    15 февраля 2016 г. 11:48
    Модератор
  • Это не сложный запрос, попробуйте встроенным конструктором сделать это при создании коллекции и указании членства
    Мне необходим именно Report
    15 февраля 2016 г. 13:28
  • Что-то такое попалось на глаза в блогах https://blogs.technet.microsoft.com/configmgrteam/2012/03/28/building-custom-endpoint-protection-reports-in-system-center-2012-configuration-manager/
    15 февраля 2016 г. 19:47
  • Что-то такое попалось на глаза в блогах https://blogs.technet.microsoft.com/configmgrteam/2012/03/28/building-custom-endpoint-protection-reports-in-system-center-2012-configuration-manager/
    Это немножечко не то. Там отчёт о времени последней проверки. Мне же нужен просто SQL-запрос - остальное я сделаю сам.
    16 февраля 2016 г. 6:25
  • у меня нет SCEP'a

    но как то так

    SELECT        v_R_System.operatingSystem0, v_GS_INSTALLED_SOFTWARE.ProductName0,v_R_System.Netbios_Name0
    FROM            v_R_System INNER JOIN
                            v_GS_INSTALLED_SOFTWARE ON v_R_System.ResourceID = v_GS_INSTALLED_SOFTWARE.ResourceID
    WHERE        (v_R_System.operatingSystem0 LIKE N'Windows 7%') AND (v_GS_INSTALLED_SOFTWARE.ProductName0 LIKE N'%System Center Endpoint Protection%')

    16 февраля 2016 г. 13:40
    Модератор
  • а, только во вторых скобках not like

    (v_GS_INSTALLED_SOFTWARE.ProductName0 not LIKE N'%kaspersky%')
    зыж упс, я там немного накосячил с выводом, но суть примерно такая, нужны v_r_system и v_gs_installed_software там все есть. Вяжем по resourceID. Чуть позже переделаю.


    16 февраля 2016 г. 13:43
    Модератор
  • select 
       v_R_System.ResourceID,
        v_R_System.ResourceType,
        v_R_System.Name0,
        v_R_System.SMS_Unique_Identifier0,
        v_R_System.Resource_Domain_OR_Workgr0,
        v_R_System.Client0
     from v_R_System
        inner join v_GS_COMPUTER_SYSTEM
           on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
       
        where v_GS_COMPUTER_SYSTEM.Name0 not in
           
    	   (select distinct
            v_GS_COMPUTER_SYSTEM.Name0
        from  v_R_System
            inner join v_GS_COMPUTER_SYSTEM
        on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
            inner join v_GS_INSTALLED_SOFTWARE
        on v_GS_INSTALLED_SOFTWARE.ResourceID = v_R_System.ResourceId
            where v_GS_INSTALLED_SOFTWARE.ARPDisplayName0 = 'System Center 2012 Endpoint Protection' ) 


    16 февраля 2016 г. 14:49
    Модератор
  • добавил 7-ки, проверяйте

    select 
       v_R_System.ResourceID,
        v_R_System.ResourceType,
        v_R_System.Name0,
        v_R_System.SMS_Unique_Identifier0,
        v_R_System.Resource_Domain_OR_Workgr0,
        v_R_System.Client0
     from v_R_System
        inner join v_GS_COMPUTER_SYSTEM
           on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
       
        where v_R_System.operatingSystem0 like 'Windows 7%' and v_GS_COMPUTER_SYSTEM.Name0 not in
           
    	   (select distinct
            v_GS_COMPUTER_SYSTEM.Name0
        from  v_R_System
            inner join v_GS_COMPUTER_SYSTEM
        on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
            inner join v_GS_INSTALLED_SOFTWARE
        on v_GS_INSTALLED_SOFTWARE.ResourceID = v_R_System.ResourceId
            where v_GS_INSTALLED_SOFTWARE.ARPDisplayName0 = 'System Center 2012 Endpoint Protection' ) 

    • Помечено в качестве ответа Igor3000 25 февраля 2016 г. 6:20
    16 февраля 2016 г. 15:18
    Модератор
  • выдаёт ошибку:

    Msg 207, Level 16, State 1, Line 13
    Invalid column name 'operatingSystem0'.

    18 февраля 2016 г. 10:07
  • по ходу там должно быть v_R_System.Operating_System_Name_and0

    поменял - ошибок вроде не пишет но ничего и не выводит....

    18 февраля 2016 г. 10:10
  • ну так вы селекните, да посмотрите, там другие данные лежат в таблице.

    18 февраля 2016 г. 12:02
    Модератор
  • ну так вы селекните, да посмотрите, там другие данные лежат в таблице.

    Простите не понял - о чём Вы?
    18 февраля 2016 г. 12:07
  • v_R_System.operatingSystem0 like 'Windows 7%'
    v_R_System.Operating_System_Name_and0 = 'Microsoft Windows NT Workstation 6.1' 
    • Помечено в качестве ответа Igor3000 25 февраля 2016 г. 6:20
    18 февраля 2016 г. 12:17
    Модератор
  • В принципе тоже самое, что Антон написал, но покороче:

    select
    v_R_System.Netbios_Name0
    from v_R_System LEFT JOIN v_GS_INSTALLED_SOFTWARE on
    v_R_SYSTEM.ResourceID = v_GS_INSTALLED_SOFTWARE.ResourceID
    where v_R_System.Operating_System_Name_and0 like '%Workstation 6.1%' and
    v_GS_INSTALLED_SOFTWARE.ProductName0 not like '%System Center Endpoint Protection%'

    18 февраля 2016 г. 12:26
  • Вы знаете у меня нет такой колонки:


    18 февраля 2016 г. 12:31
  • значит класс инвентаризации не собираете. Смотрите в настройках агента - hardware inventory.
    18 февраля 2016 г. 13:30
    Модератор
  • А какой класс там надо выбрать?
    18 февраля 2016 г. 13:47
  • В принципе тоже самое, что Антон написал, но покороче:

    select
    v_R_System.Netbios_Name0
    from v_R_System LEFT JOIN v_GS_INSTALLED_SOFTWARE on
    v_R_SYSTEM.ResourceID = v_GS_INSTALLED_SOFTWARE.ResourceID
    where v_R_System.Operating_System_Name_and0 like '%Workstation 6.1%' and
    v_GS_INSTALLED_SOFTWARE.ProductName0 not like '%System Center Endpoint Protection%'

    Этот запрос к сожалению у меня ничего не выводит...
    18 февраля 2016 г. 14:06
  • Алексей Гулынин, а теперь выполните и посмотрите, что у вас получится. ;)) 


    18 февраля 2016 г. 14:20
    Модератор
  • ну возьмите Operating_System_Name_and0 разницы нет

    у вас что-нибудь выводит в запросе?

    select * 
    from v_GS_INSTALLED_SOFTWARE
    where ARPDisplayName0 = 'System Center Endpoint Protection'

    18 февраля 2016 г. 14:29
    Модератор
  • Нет. Только пустые поля
    19 февраля 2016 г. 5:52
  • У меня студия показывает что таблица

    dbo.INSTALLED_SOFTWARE_DATA 0 Мб весит....

     
    19 февраля 2016 г. 6:21
  • ну возьмите Operating_System_Name_and0 разницы нет

    у вас что-нибудь выводит в запросе?

    select * 
    from v_GS_INSTALLED_SOFTWARE
    where ARPDisplayName0 = 'System Center Endpoint Protection'

    У меня по ходу данные о софте собираются через хардваре инвентори:


    19 февраля 2016 г. 6:34
  • инвентаризация софта и происходит через hardware inventory. ;)

    смотрите логи, применяются ли политики, у вас в resource explorer на девайсах есть какая-нибудь инфа?

    19 февраля 2016 г. 7:50
    Модератор
  • Да. В ресурс эксплорере инфа о софте есть. Политики применяются. 
    19 февраля 2016 г. 7:57
  • а вы уверенны, что у вас достаточно прав для просмотра таблиц?

    что с компонентов в мониторинге SMS_INVENTORY_DATA_LOADER?

    19 февраля 2016 г. 8:05
    Модератор
  • за сегодняшнее число пишет ворнинг:

    Severity Type Site code Date / Time System Component Message ID Description Thread ID Process ID
    Warning Milestone ZST 2/19/2016 10:08:28 AM dom-sccm-01.dom.local SMS_INVENTORY_DATA_LOADER 2703 Inventory Data Loader failed to process the delta MIF file "XHLJBKHQC.MIF" and has moved it to "C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\BADMIFS\MajorMismatch\91ebe6xl.MIF."    Possible cause: The file attempted to update inventory information in the site database that does not already exist, or the file contains invalid syntax.  Solution: The client inventory needs to be resynchronized, which will be done automatically. Look for the status messages 2714 and 2715, which indicate the resynchronization has begun. 10964 15112 

    Что касается прав - их есть у меня. Делаю селект: 

    SELECT TOP 1000 [ResourceID]

          ,[GroupID]

          ,[RevisionID]

          ,[AgentID]

          ,[TimeStamp]

          ,[DisplayName0]

          ,[InstallDate0]

          ,[ProdID0]

          ,[Publisher0]

          ,[Version0]

      FROM [CM_ZST].[dbo].[v_GS_ADD_REMOVE_PROGRAMS]  

    Селект отрабатывает нормально и выводит инфу

    19 февраля 2016 г. 8:13
  • ну селектните из этой вьюхи

    select * 
    from v_GS_ADD_REMOVE_PROGRAMS
    where DisplayName0 like 'System Center%'

    там еще есть v_GS_ADD_REMOVE_PROGRAMS_X64
    19 февраля 2016 г. 8:39
    Модератор
  • Антон, я ошибся, набрал глядя на ваши запросы. Сейчас проверил - действительно не то, что планировалось.
    19 февраля 2016 г. 8:50
  • Так выбирается.

    А какой в этом случае окончательный вид селекта не подскажите?

    19 февраля 2016 г. 8:51
  • И у меня эта вьюха v_GS_ADD_REMOVE_PROGRAMS_64 называется...

    А у Вас v_GS_ADD_REMOVE_PROGRAMS_X64????

    19 февраля 2016 г. 8:54
  • так, ну я понял почему у вас installedsoftware пустой. Вам надо поставить Asset Intelligence synchronization point, в нем есть эта таблица. С ней просто удобней работать.

    как то так:

    select 
       v_R_System.ResourceID,
        v_R_System.ResourceType,
        v_R_System.Name0,
        v_R_System.SMS_Unique_Identifier0,
        v_R_System.Resource_Domain_OR_Workgr0,
        v_R_System.Client0
     from v_R_System
        inner join v_GS_COMPUTER_SYSTEM
           on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
       
        where v_R_System.Operating_System_Name_and0 = 'Microsoft Windows NT Workstation 6.1' and v_GS_COMPUTER_SYSTEM.Name0 not in
           
    	   (select distinct
            v_GS_COMPUTER_SYSTEM.Name0
        from  v_R_System
            inner join v_GS_COMPUTER_SYSTEM
        on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
            inner join v_GS_ADD_REMOVE_PROGRAMS
        on v_GS_ADD_REMOVE_PROGRAMS.ResourceID = v_R_System.ResourceId
            where v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 = 'System Center 2012 Endpoint Protection' ) 

    можно в конце поиграть с v_GS_ADD_REMOVE_PROGRAMS.DisplayName0. У меня просто нет SCEP, я не уверен, что он так называется. 

    • Помечено в качестве ответа Igor3000 25 февраля 2016 г. 6:20
    19 февраля 2016 г. 9:18
    Модератор
  • Так выводит инфу!!! Спасибо Вам!!!

    Но он выводит машины где установлен антивирус - ведь так?

    А мне надо там где его нет...

    19 февраля 2016 г. 10:22
  • запрос берет все машины Microsoft Windows NT Workstation 6.1 из v_R_System.Operating_System_Name_and0, а затем подключает v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 для ResourceID (это ID устройства в SCCM) и смотрит, есть ли в этой таблице упоминание про System Center 2012 Endpoint Protection.

    Если выводит все! машины, значит в этой таблице нет SCEP и он хранится в другом месте, если выводит не все машины, значит все правильно работает.

    Я к тому, что запрос универсален, у меня нет в инфраструктуре SCEP, зато со всем остальным софтом все правильно показывает. 

    19 февраля 2016 г. 11:08
    Модератор
  • Я наверное не правильно выразился.

    Селект выводит машины на которых Win 7 и установлен SCEP - тут проблем нет.

    А как мне вывести машины Win 7 на которых НЕТ SCEP????

    Я в селекте изменил - where v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 like 'System Center Endpoint%'


    • Изменено Igor3000 19 февраля 2016 г. 11:46
    19 февраля 2016 г. 11:43
  • Еще раз, запрос все правильно делает. Он показывает машины с 7ой и без того, что вы укажите в конце v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 = 'System Center 2012 Endpoint Protection' ) 

    Вот вам выборка из коллекции с 10 машинами, на одной из них стоит Parallels Mac Management, а на других нет, что и показывает вывод - 9 девайсов. What am I doing wrong? )



    19 февраля 2016 г. 12:43
    Модератор
  • У меня он выводит и те машины на которых ТОЧНО стоит SCEP 
    • Помечено в качестве ответа Igor3000 25 февраля 2016 г. 6:20
    • Снята пометка об ответе Igor3000 25 февраля 2016 г. 6:20
    19 февраля 2016 г. 12:46
  • Может быть на разных машинах продукт по разному называется: на одной - 'System Center 2012 Endpoint Protection', на другой - 'System Center Endpoint Protection'. Посмотрите на машинах, про которые вы написали "У меня он выводит и те машины на которых ТОЧНО стоит SCEP" как точно называется продукт (Панель управления - Программы и компоненты) и отредактируйте запрос. Что-то типа:

    where v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 = 'System Center 2012 Endpoint Protection'

    OR v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 = 'System Center Endpoint Protection'

    Для начала посмотрите, какие продукты содержатся в этом представлении v_GS_ADD_REMOVE_PROGRAMS и сразу всё поймёте.

    20 февраля 2016 г. 6:12
  • Алексей, просто надо было селектнуть из представления add_remove_programs и посмотреть какие там данные, но проще ведь написать "аааа, не выводит". ;) У меня чутка бомбит, так что я просто промолчу. ;))) 

    20 февраля 2016 г. 9:07
    Модератор
  • Алексей, просто надо было селектнуть из представления add_remove_programs и посмотреть какие там данные, но проще ведь написать "аааа, не выводит". ;) У меня чутка бомбит, так что я просто промолчу. ;))) 

    Здравствуйте.

    Извините что успел Вам надоесть. Я добавил роль Asset Intelligence synchronization point . SCCM за выходные начал собирать инфу. Запускаю Ваш селект:

              

    select 
       v_R_System.ResourceID,
        v_R_System.ResourceType,
        v_R_System.Name0,
        v_R_System.SMS_Unique_Identifier0,
        v_R_System.Resource_Domain_OR_Workgr0,
        v_R_System.Client0
     from v_R_System
        inner join v_GS_COMPUTER_SYSTEM
           on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId

        where v_R_System.Operating_System_Name_and0 = 'Microsoft Windows NT Workstation 6.1' and v_GS_COMPUTER_SYSTEM.Name0 not in

      (select distinct
            v_GS_COMPUTER_SYSTEM.Name0
        from  v_R_System
            inner join v_GS_COMPUTER_SYSTEM
        on v_GS_COMPUTER_SYSTEM.ResourceID = v_R_System.ResourceId
            inner join v_GS_INSTALLED_SOFTWARE
        on v_GS_INSTALLED_SOFTWARE.ResourceID = v_R_System.ResourceId
            where v_GS_INSTALLED_SOFTWARE.ARPDisplayName0 = 'System Center Endpoint%' ) 

    Он всё равно выводит и те машины где стоит SCEP. Если заменить на v_R_System.Operating_System_Name_and0 like 'Windows 7%'

    -то ничего не выводит. Может быть у меня с базой что то? А то у меня SCCM пишет что на некоторых машинах клиент SCCM не установлен хотя он там по факту есть.... Извините за нудность....

    22 февраля 2016 г. 9:06
  • вы пишите

    если заменить на v_R_System.Operating_System_Name_and0 like 'Windows 7%', то ничего не выводит

    Объяснить почему? Вы селектнули эту таблицу? Что вы видите в Operating_System_Name_and0?

    Я же выше писал вам в чем разница.

    v_R_System.operatingSystem0 like 'Windows 7%'
    v_R_System.Operating_System_Name_and0 = 'Microsoft Windows NT Workstation 6.1' 

    в Operating_System_Name_and0 нет записей Windows 7****, там данные по Workstation и версия.

    Как часто у вас проходит инвентаризация? Что в данных по машине? 

    Все же просто, сделайте запрос к v_GS_ADD_REMOVE_PROGRAMS и посмотрите, какой список софта есть в базе для ResourceID, который равен вашей машине. Как определить ResourceID? Посмотреть в свойствах устройства в консоли или сделать селект в v_r_system по имени netbios машины.

    26 февраля 2016 г. 7:36
    Модератор