none
Как правильно создать коллекцию с несколькими сервисами? RRS feed

  • Вопрос

  • Добрый день.

    Чтобы создать коллекцию в которую попадают машинки где установлен один конкретный сервис у меня получается.
    А как сделать чтобы попадали машинки где установлено, например, сразу три конкретных сервиса?
    21 сентября 2009 г. 4:46

Ответы

  • пробуйте такой вот код запроса:
    select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_SYSTEM on SMS_G_System_SYSTEM.ResourceId = SMS_R_System.ResourceId inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceId = SMS_R_System.ResourceId where SMS_G_System_SYSTEM.ResourceID in (select SMS_R_SYSTEM.ResourceID from SMS_R_System inner join SMS_G_System_SYSTEM on SMS_G_System_SYSTEM.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId where SMS_G_System_SYSTEM.ResourceID in (select SMS_R_SYSTEM.ResourceID from SMS_R_System inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId where SMS_G_System_SERVICE.Name = "MSIServer") and SMS_G_System_SERVICE.Name = "SharedAccess") and SMS_G_System_SERVICE.Name = "CcmExec"

    MSIServer, SharedAccess, CcmExec - вместо этого подставить имена своих сервисов


    с уважением Андреев А.В. Если сообщение помогло решить проблему - отметьте ее как ответ, если было информативным - проголосуйте за сообщение. Не будем оставлять решенные посты без отметок, это затруднит поиск решения другим.
    • Помечено в качестве ответа marchcat 24 сентября 2009 г. 16:55
    21 сентября 2009 г. 17:22

Все ответы

  • в окне конструктора запроса делайте подряд три критерия различающихся названием сервисов.


    с уважением Андреев А.В. Если сообщение помогло решить проблему - отметьте ее как ответ, если было информативным - проголосуйте за сообщение. Не будем оставлять решенные посты без отметок, это затруднит поиск решения другим.
    21 сентября 2009 г. 7:50
  • Если я так делаю и пишу AND то ничего не получаю. Если пишу OR то получаю не только где все три, а, например, и где один из трех. Что логично.
    Запрос выглядит вот так.

    select SMS_R_System.Name, SMS_R_System.ResourceId from  SMS_R_System
    inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId
    where SMS_G_System_SERVICE.Name = "Service1" and SMS_G_System_SERVICE.Name = "Service2" and SMS_G_System_SERVICE.Name = "Service3"

    Подскажите, пожалуйста, как правильно надо?
    21 сентября 2009 г. 7:57
  • Достаточно заменить "и" на "или". Сейчас запрос ищет компьютеры на которых есть все три указанные службы. Должно быть:

    select SMS_R_System.Name, SMS_R_System.ResourceId from  SMS_R_System
    inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId
    where SMS_G_System_SERVICE.Name = "Service1" or SMS_G_System_SERVICE.Name = "Service2" or SMS_G_System_SERVICE.Name = "Service3"

    MCSE: M+S, SMS/SCCM, CCNA
    • Предложено в качестве ответа Sergey Sypalo 21 сентября 2009 г. 8:24
    • Отменено предложение в качестве ответа Nikita PanovModerator 21 сентября 2009 г. 11:41
    21 сентября 2009 г. 8:24
  • согласно поставленной задаче должны присутствовать все три сервиса, потому использовать надо как раз AND

    если р.с. не отображаются, то либо нету таких, либо заданное имя сервиса не совпадает с оригинальным.
    имя сервиса должно четко совпадать с искомым, простой вариант - выбирать из списка Values при создании критерия сложный - открывать свойства каждого искомого сервиса и смотреть как он зовется на самом деле.
    (например брендмауер в Win2003 и брендмауер в Win2008 - разные службы)


    с уважением Андреев А.В. Если сообщение помогло решить проблему - отметьте ее как ответ, если было информативным - проголосуйте за сообщение. Не будем оставлять решенные посты без отметок, это затруднит поиск решения другим.
    • Помечено в качестве ответа Nikita PanovModerator 21 сентября 2009 г. 11:41
    • Снята пометка об ответе marchcat 24 сентября 2009 г. 16:59
    21 сентября 2009 г. 10:57
  • Сорри проглядел, таки да, для выборки по трем сервисам должно стоять "И". Как верно заметил Александр, самый простой способ выбирать службы из списка values. Если запрос не находит компьютеры, то либо таковых нет (на которых присутствуют все 3 сервиса) либо отключена/не работает инвентаризация


    MCSE: M+S, SMS/SCCM, CCNA
    21 сентября 2009 г. 11:05
  • Извините меня, но оно НЕ РАБОТАЕТ. Когда AND. Когда OR работает, но не так как мне надо.
    Каждая машинка три раза появляется. И некоторые по разу (там где есть только один сервис из трех).
    Имена сервисов указаны без ошибок, я уверен.
    21 сентября 2009 г. 12:21
  • Вручную проверяли наличии всех трех указанных сервисов на клиентской машине?


    MCSE: M+S, SMS/SCCM, CCNA
    21 сентября 2009 г. 14:09
  • пробуйте такой вот код запроса:
    select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_SYSTEM on SMS_G_System_SYSTEM.ResourceId = SMS_R_System.ResourceId inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceId = SMS_R_System.ResourceId where SMS_G_System_SYSTEM.ResourceID in (select SMS_R_SYSTEM.ResourceID from SMS_R_System inner join SMS_G_System_SYSTEM on SMS_G_System_SYSTEM.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId where SMS_G_System_SYSTEM.ResourceID in (select SMS_R_SYSTEM.ResourceID from SMS_R_System inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId where SMS_G_System_SERVICE.Name = "MSIServer") and SMS_G_System_SERVICE.Name = "SharedAccess") and SMS_G_System_SERVICE.Name = "CcmExec"

    MSIServer, SharedAccess, CcmExec - вместо этого подставить имена своих сервисов


    с уважением Андреев А.В. Если сообщение помогло решить проблему - отметьте ее как ответ, если было информативным - проголосуйте за сообщение. Не будем оставлять решенные посты без отметок, это затруднит поиск решения другим.
    • Помечено в качестве ответа marchcat 24 сентября 2009 г. 16:55
    21 сентября 2009 г. 17:22
  • Мне тоже стало любопытно.
    Вот такой запрос:

    select SMS_R_System.ResourceId, SMS_R_System.ResourceType, SMS_R_System.Name, SMS_R_System.SMSUniqueIdentifier, SMS_R_System.ResourceDomainORWorkgroup, SMS_R_System.Client from  SMS_R_System inner join SMS_G_System_SERVICE on SMS_G_System_SERVICE.ResourceID = SMS_R_System.ResourceId where SMS_G_System_SERVICE.Name = "Dnscache"

    работает.
    А при добавлении and SMS_G_System_SERVICE.Name = "Dhcp" уже не работает.
    Сервисы на клиентах присутствуют, конечно же.

    мой блог - http://ccmexec.blogspot.com/
    22 сентября 2009 г. 8:33
    Отвечающий
  • собственно да.
    при добавлении "по простому" второго сервиса работать не хочет, причину честно говоря не могу понять.
    я описал выше запрос, который выбирает все учетки с сервисом "1", потом из них - с сервисом "2", потом из оставшегося - с сервисом "3".
    конструкция получается несколько громоздкая, зато рабочая :)


    с уважением Андреев А.В. Если сообщение помогло решить проблему - отметьте ее как ответ, если было информативным - проголосуйте за сообщение. Не будем оставлять решенные посты без отметок, это затруднит поиск решения другим.
    22 сентября 2009 г. 17:51
  • Александр, большое спасибо! Именно это и было мне нужно, жаль что предметом владею слабо, сам не смог :(
    24 сентября 2009 г. 16:58