none
Формирования запроса в SCCM2012 RRS feed

  • Вопрос

  • Добрый день. Имеется сервер SCCM2012. Создали простой запрос, который находит ПК с определенным программным продуктом, выводит его версию и имя последнего пользователя ПК.

    select SMS_R_System.Name, SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, SMS_G_System_ADD_REMOVE_PROGRAMS.Version, SMS_R_System.LastLogonUserName from  SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Project%"

    Подскажите какую инструкцию надо добавить в запрос, чтобы в отчете появился столбец с датой установки и датой последнего использования. Спасибо

    14 декабря 2015 г. 11:57

Ответы

  • Да, там другая таблица - v_GS_CCM_RECENTLY_USED_APPS

    Строчка в отчете - v_GS_CCM_RECENTLY_USED_APPS_Alias.LastUsedTime0 as [Time Last Used]

    declare @AN nvarchar(512)
              set @AN = ISNULL(@ApplicationName, N'')
    
              declare @FD nvarchar(512), @FN nvarchar(255)
              set @FD = ISNULL(@FileDescription, N'')
              set @FN = ISNULL(@ExplorerFileName, N'')
    
              Select
              distinct  IQ.[Computer Name], IQ.SiteName, IQ.[Serial Number], IQ.[Asset Tag], IQ.[Computer Manufacturer], IQ.[Application],  IQ.[File Description],   IQ.[File Name],
              IQ.[Associated with an Installer],
              MAX (IQ.[Time Last Used])as [Time Last Used(GMT)]
              from
              (
              Select  v_R_System_Valid_Alias.Netbios_Name0 as [Computer Name], v_Site_Alias.SiteName, v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias.SerialNumber0 as [Serial Number], v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias.SMBIOSAssetTag0 as [Asset Tag], v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias.Manufacturer0 as [Computer Manufacturer],
                    ISNULL(v_GS_CCM_RECENTLY_USED_APPS_Alias.ProductName0, N'') as [Application],  
                    ISNULL(v_GS_CCM_RECENTLY_USED_APPS_Alias.FileDescription0, N'') as [File Description],   
                    ISNULL(v_GS_CCM_RECENTLY_USED_APPS_Alias.ExplorerFileName0, N'') as [File Name],
              [Associated with an Installer] = Case when(ISNULL(ProductCode0, N'') = N'') then N'N' else N'Y' end,
              v_GS_CCM_RECENTLY_USED_APPS_Alias.LastUsedTime0 as [Time Last Used]
              from fn_rbac_GS_CCM_RECENTLY_USED_APPS(@UserSIDs) v_GS_CCM_RECENTLY_USED_APPS_Alias 
              left join fn_rbac_R_System_Valid(@UserSIDs) v_R_System_Valid_Alias on v_GS_CCM_RECENTLY_USED_APPS_Alias.ResourceID = v_R_System_Valid_Alias.ResourceID
              join fn_rbac_FullCollectionMembership(@UserSIDs) v_FullCollectionMembership_Alias on v_GS_CCM_RECENTLY_USED_APPS_Alias.ResourceID = v_FullCollectionMembership_Alias.ResourceID
              left join fn_rbac_Site(@UserSIDs) v_Site_Alias on v_FullCollectionMembership_Alias.SiteCode =v_Site_Alias.SiteCode
              left join fn_rbac_GS_SYSTEM_ENCLOSURE_UNIQUE(@UserSIDs) v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias on v_GS_CCM_RECENTLY_USED_APPS_Alias.ResourceID = v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias.ResourceID
              Where (@AN = N'' OR v_GS_CCM_RECENTLY_USED_APPS_Alias.ProductName0 like @AN)
              and (@FD = N'' OR v_GS_CCM_RECENTLY_USED_APPS_Alias.FileDescription0 like @FD)
              and (@FN = N'' OR v_GS_CCM_RECENTLY_USED_APPS_Alias.ExplorerFileName0 like @FN)
              and
              v_FullCollectionMembership_Alias.CollectionID =@CollectionID
              and (@ProductCodeOnly = N'ALL' OR (@ProductCodeOnly = N'Y' and ISNULL(ProductCode0, N'') != N'') OR (@ProductCodeOnly = N'N' and ISNULL(ProductCode0, N'') = N''))
              ) as IQ
              Group By IQ.[Computer Name], IQ.SiteName, IQ.[Serial Number], IQ.[Asset Tag], IQ.[Computer Manufacturer], IQ.[Application],  IQ.[File Description],   IQ.[File Name],
              IQ.[Associated with an Installer]
              Order by IQ.[Computer Name] asc

    15 декабря 2015 г. 8:22
    Модератор

Все ответы

  • ну дату установки добавить просто

    select 
    SMS_R_System.Name, 
    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, 
    SMS_G_System_ADD_REMOVE_PROGRAMS.Version, 
    SMS_G_System_ADD_REMOVE_PROGRAMS.InstallDate, 
    SMS_R_System.LastLogonUserName,
    from  
    SMS_R_System 
    inner join SMS_G_System_ADD_REMOVE_PROGRAMS 
    on 
    SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId
    where 
    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Project%"

    а вот для даты последнего использования, есть вьюшка v_GS_SoftwareUsageData

    Так много всего, возможно, что ваши данные в EndTimeLocal.

    Описание вьюшек в sql тут - https://technet.microsoft.com/en-us/library/dn581952.aspx

    Для WMI, чтобы все это в WQL переложить есть тут - https://msdn.microsoft.com/en-us/library/cc145885.aspx

    Ваш класс SMS_G_System_SoftwareUsageData, это вьюшка v_GS_SoftwareUsageData

    Запрос будет такой:

    select 
    SMS_R_System.Name, 
    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName, 
    SMS_G_System_ADD_REMOVE_PROGRAMS.Version, 
    SMS_G_System_ADD_REMOVE_PROGRAMS.InstallDate, 
    SMS_R_System.LastLogonUserName,
    SMS_G_System_SoftwareUsageData.EndTimeLocal
    from  
    SMS_R_System 
    inner join SMS_G_System_ADD_REMOVE_PROGRAMS 
    on 
    SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId INNER JOIN
    SMS_G_System_SoftwareUsageData
    on
    SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = MS_G_System_SoftwareUsageData.ResourceID
    where 
    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Project%"

    Тут будет много мусора, надо фильтровать дату в SMS_G_System_SoftwareUsageData

    ну и sql, там реально проще развлеакаться

    SELECT        dbo.v_R_System.Name0, dbo.v_GS_ADD_REMOVE_PROGRAMS.DisplayName0, dbo.v_GS_ADD_REMOVE_PROGRAMS.Version0, 
                             dbo.v_GS_ADD_REMOVE_PROGRAMS.InstallDate0, dbo.v_GS_SoftwareUsageData.EndTimeLocal
    FROM            dbo.v_R_System INNER JOIN
                             dbo.v_GS_ADD_REMOVE_PROGRAMS ON dbo.v_R_System.ResourceID = dbo.v_GS_ADD_REMOVE_PROGRAMS.ResourceID INNER JOIN
                             dbo.v_GS_SoftwareUsageData ON dbo.v_GS_ADD_REMOVE_PROGRAMS.ResourceID = dbo.v_GS_SoftwareUsageData.ResourceID
    WHERE        (dbo.v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 LIKE N'%Microsoft Project Professional 2013%')
    Направление есть, осталось отфильтровать все. )

    14 декабря 2015 г. 13:55
    Модератор
  • Спасибо, очень помогли.

    Подскажите пожалуйста еще 1 вопрос - есть стандартный отчет "Программное обеспечение 07B - компьютеры с недавно использовавшейся заданной исполняемой программой " , там есть столбец тоже с датой последнего использования (TimeLastUsedGMT), но это параметр как я понял не из v_GS_SoftwareUsageData. Потому что значения они выводят разные. В каком наборе данных он находится?

    15 декабря 2015 г. 7:17
  • Да, там другая таблица - v_GS_CCM_RECENTLY_USED_APPS

    Строчка в отчете - v_GS_CCM_RECENTLY_USED_APPS_Alias.LastUsedTime0 as [Time Last Used]

    declare @AN nvarchar(512)
              set @AN = ISNULL(@ApplicationName, N'')
    
              declare @FD nvarchar(512), @FN nvarchar(255)
              set @FD = ISNULL(@FileDescription, N'')
              set @FN = ISNULL(@ExplorerFileName, N'')
    
              Select
              distinct  IQ.[Computer Name], IQ.SiteName, IQ.[Serial Number], IQ.[Asset Tag], IQ.[Computer Manufacturer], IQ.[Application],  IQ.[File Description],   IQ.[File Name],
              IQ.[Associated with an Installer],
              MAX (IQ.[Time Last Used])as [Time Last Used(GMT)]
              from
              (
              Select  v_R_System_Valid_Alias.Netbios_Name0 as [Computer Name], v_Site_Alias.SiteName, v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias.SerialNumber0 as [Serial Number], v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias.SMBIOSAssetTag0 as [Asset Tag], v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias.Manufacturer0 as [Computer Manufacturer],
                    ISNULL(v_GS_CCM_RECENTLY_USED_APPS_Alias.ProductName0, N'') as [Application],  
                    ISNULL(v_GS_CCM_RECENTLY_USED_APPS_Alias.FileDescription0, N'') as [File Description],   
                    ISNULL(v_GS_CCM_RECENTLY_USED_APPS_Alias.ExplorerFileName0, N'') as [File Name],
              [Associated with an Installer] = Case when(ISNULL(ProductCode0, N'') = N'') then N'N' else N'Y' end,
              v_GS_CCM_RECENTLY_USED_APPS_Alias.LastUsedTime0 as [Time Last Used]
              from fn_rbac_GS_CCM_RECENTLY_USED_APPS(@UserSIDs) v_GS_CCM_RECENTLY_USED_APPS_Alias 
              left join fn_rbac_R_System_Valid(@UserSIDs) v_R_System_Valid_Alias on v_GS_CCM_RECENTLY_USED_APPS_Alias.ResourceID = v_R_System_Valid_Alias.ResourceID
              join fn_rbac_FullCollectionMembership(@UserSIDs) v_FullCollectionMembership_Alias on v_GS_CCM_RECENTLY_USED_APPS_Alias.ResourceID = v_FullCollectionMembership_Alias.ResourceID
              left join fn_rbac_Site(@UserSIDs) v_Site_Alias on v_FullCollectionMembership_Alias.SiteCode =v_Site_Alias.SiteCode
              left join fn_rbac_GS_SYSTEM_ENCLOSURE_UNIQUE(@UserSIDs) v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias on v_GS_CCM_RECENTLY_USED_APPS_Alias.ResourceID = v_GS_SYSTEM_ENCLOSURE_UNIQUE_Alias.ResourceID
              Where (@AN = N'' OR v_GS_CCM_RECENTLY_USED_APPS_Alias.ProductName0 like @AN)
              and (@FD = N'' OR v_GS_CCM_RECENTLY_USED_APPS_Alias.FileDescription0 like @FD)
              and (@FN = N'' OR v_GS_CCM_RECENTLY_USED_APPS_Alias.ExplorerFileName0 like @FN)
              and
              v_FullCollectionMembership_Alias.CollectionID =@CollectionID
              and (@ProductCodeOnly = N'ALL' OR (@ProductCodeOnly = N'Y' and ISNULL(ProductCode0, N'') != N'') OR (@ProductCodeOnly = N'N' and ISNULL(ProductCode0, N'') = N''))
              ) as IQ
              Group By IQ.[Computer Name], IQ.SiteName, IQ.[Serial Number], IQ.[Asset Tag], IQ.[Computer Manufacturer], IQ.[Application],  IQ.[File Description],   IQ.[File Name],
              IQ.[Associated with an Installer]
              Order by IQ.[Computer Name] asc

    15 декабря 2015 г. 8:22
    Модератор