none
Нужен некий универсальный отчёт (или с чего начать) RRS feed

  • Вопрос

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

    Есть необходимость в неком универсальном отчёте, в котором бы отображались поля примерно такие: имя ПК, ОС, Память, Процессор, Диск, Установленное ПО. Надо, чтобы инфа по каждому ПК шла одной строкой (т.е. объединение по имени. Весь перечисленный софт вмещался в одну ячейку). Думал об объединение уже имеющегося отчёта по железу (тот же Hardware 01A - Summary of computers in a specific collection) и какого-то запроса по перечню установленного ПО. Есть, например, такой запрос по софту:

    Declare @CollID char(8)  
          Set @CollID = 'ID коллекции'  
     SELECT   
          COMP.Name0 AS 'Machine Name',  
          COMP.UserName0 AS 'Username',  
          COMP.Manufacturer0 AS 'Make',  
          COMP.Model0 AS 'Model',  
          COMP.SystemType0 AS 'Architecture',  
          COMP.TotalPhysicalMemory0/1024 AS 'RAM',  
          ARP.Publisher0 AS 'Publisher',  
          ARP.DisplayName0 AS 'Program',  
          ARP.Version0 AS 'Version',  
          ARP.InstallDate0 AS 'Install Date',  
          ARP.ProdID0 AS 'Product ID'  
     FROM v_Add_Remove_Programs ARP  
          JOIN v_FullCollectionMembership FCM  
               on ARP.ResourceID = FCM.ResourceID   
          JOIN v_GS_COMPUTER_SYSTEM COMP  
               on ARP.ResourceID = COMP.ResourceID  
    WHERE FCM.CollectionID = @CollID  
               AND ARP.DisplayName0 IS NOT NULL  
               AND ARP.ProdId0 NOT LIKE '%KB%'  
               AND ARP.DisplayName0 NOT LIKE '%Update%' 
    Group by COMP.Name0, COMP.UserName0, COMP.Manufacturer0, COMP.Model0, COMP.SystemType0, COMP.TotalPhysicalMemory0/1024, ARP.Publisher0, ARP.DisplayName0, ARP.Version0, ARP.InstallDate0, ARP.ProdID0
    Однако с группировкой по имени машины там как-то тухло. И вот пока не могу придумать, с какой стороны зайти к проблеме. Может кто-то посоветует?

    Есть ещё вариант заюзать v_Add_Remove_Programs, но пока не пробовал

    9 августа 2016 г. 9:54

Ответы

  • SELECT DISTINCT 
                          TOP (100) PERCENT dbo.v_R_System_Valid.Netbios_Name0 AS [Computer Name], 
                          dbo.v_R_System_Valid.Resource_Domain_OR_Workgr0 AS [Domain/Workgroup], dbo.v_Site.SiteName AS [SMS Site Name], 
                          CASE WHEN (v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 IS NULL OR 
                          v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 = '-1') 
                          THEN 'Unknown' ELSE v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 END AS [Top Console User], 
                          dbo.v_GS_OPERATING_SYSTEM.Caption0 AS [Operating System], dbo.v_GS_OPERATING_SYSTEM.CSDVersion0 AS [Service Pack Level], 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SerialNumber0 AS [Serial Number], 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SMBIOSAssetTag0 AS [Asset Tag], dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0 AS Manufacturer, 
                          dbo.v_GS_COMPUTER_SYSTEM.Model0 AS Model, dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0/1024 AS [Memory (KBytes)],
    dbo.v_GS_Processor.Name0 AS [Processor Model], 
                          dbo.v_GS_PROCESSOR.NormSpeed0 AS [Processor (GHz)], 
                              (SELECT     SUM(dbo.v_GS_LOGICAL_DISK.Size0/1024) AS Expr1 
                                FROM          dbo.v_GS_LOGICAL_DISK INNER JOIN 
                                                       dbo.v_FullCollectionMembership ON dbo.v_FullCollectionMembership.ResourceID = dbo.v_GS_LOGICAL_DISK.ResourceID 
                                WHERE      (dbo.v_GS_LOGICAL_DISK.ResourceID = dbo.v_R_System_Valid.ResourceID) AND 
                                                       (dbo.v_FullCollectionMembership.CollectionID = @CollectionID)) AS [Disk Space (MB)], 
                              (SELECT     SUM(v_GS_LOGICAL_DISK_2.FreeSpace0) AS Expr1 
                                FROM          dbo.v_GS_LOGICAL_DISK AS v_GS_LOGICAL_DISK_2 INNER JOIN 
                                                       dbo.v_FullCollectionMembership AS v_FullCollectionMembership_2 ON 
                                                       v_FullCollectionMembership_2.ResourceID = v_GS_LOGICAL_DISK_2.ResourceID 
                                WHERE      (v_GS_LOGICAL_DISK_2.ResourceID = dbo.v_R_System_Valid.ResourceID) AND 
                                                       (v_FullCollectionMembership_2.CollectionID = @CollectionID)) AS [Free Disk Space (MB)], 
                          dbo.v_RA_System_IPAddresses.IP_Addresses0, dbo.v_RA_System_IPSubnets.IP_Subnets0, 
    					  dbo.v_GS_PHYSICAL_MEMORY.Manufacturer0 as [Memory Manufacturer]
    FROM         dbo.v_R_System_Valid INNER JOIN 
                          dbo.v_GS_OPERATING_SYSTEM ON dbo.v_GS_OPERATING_SYSTEM.ResourceID = dbo.v_R_System_Valid.ResourceID LEFT OUTER JOIN 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE ON 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_GS_COMPUTER_SYSTEM ON dbo.v_GS_COMPUTER_SYSTEM.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_GS_X86_PC_MEMORY ON dbo.v_GS_X86_PC_MEMORY.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
    		      dbo.v_GS_PROCESSOR ON dbo.v_GS_PROCESSOR.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_FullCollectionMembership AS v_FullCollectionMembership_1 ON 
                          v_FullCollectionMembership_1.ResourceID = dbo.v_R_System_Valid.ResourceID LEFT OUTER JOIN 
                          dbo.v_Site ON v_FullCollectionMembership_1.SiteCode = dbo.v_Site.SiteCode INNER JOIN 
                          dbo.v_GS_LOGICAL_DISK AS v_GS_LOGICAL_DISK_1 ON v_GS_LOGICAL_DISK_1.ResourceID = dbo.v_R_System_Valid.ResourceID AND 
                          v_GS_LOGICAL_DISK_1.DeviceID0 = SUBSTRING(dbo.v_GS_OPERATING_SYSTEM.WindowsDirectory0, 1, 2) INNER JOIN 
                          dbo.v_RA_System_IPSubnets ON dbo.v_R_System_Valid.ResourceID = dbo.v_RA_System_IPSubnets.ResourceID INNER JOIN 
                          dbo.v_RA_System_IPAddresses ON dbo.v_R_System_Valid.ResourceID = dbo.v_RA_System_IPAddresses.ResourceID INNER JOIN 
    					  dbo.v_GS_PHYSICAL_MEMORY ON dbo.v_R_System_Valid.ResourceID = dbo.v_GS_PHYSICAL_MEMORY.ResourceID LEFT OUTER JOIN
    					  dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP ON 
                          dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.ResourceID = dbo.v_R_System_Valid.ResourceID 
    WHERE     (v_FullCollectionMembership_1.CollectionID = @CollectionID)
    Group by dbo.v_R_System_Valid.Netbios_Name0, dbo.v_R_System_Valid.Resource_Domain_OR_Workgr0, dbo.v_Site.SiteName, dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0, dbo.v_GS_OPERATING_SYSTEM.Caption0, dbo.v_GS_OPERATING_SYSTEM.CSDVersion0, dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SerialNumber0, dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SMBIOSAssetTag0, dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0, dbo.v_GS_COMPUTER_SYSTEM.Model0, dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0, dbo.v_GS_PROCESSOR.NormSpeed0, dbo.v_R_System_Valid.ResourceID, dbo.v_RA_System_IPAddresses.IP_Addresses0, dbo.v_RA_System_IPSubnets.IP_Subnets0,
    dbo.v_GS_Processor.Name0, dbo.v_GS_PHYSICAL_MEMORY.Manufacturer0
    
    ORDER BY [Computer Name]
    Добавил memory manufacturer

    • Изменено Vorobyev Alexey 12 августа 2016 г. 7:27
    • Помечено в качестве ответа Alexey Putyatin 12 августа 2016 г. 8:47
    12 августа 2016 г. 7:27

Все ответы

  • С группировкой столбцов, это к Reporting service и к инструменту Report Builder 3.0

    Creating a Custom Report for System Center 2012 R2 Configuration Manager – Part 1

    9 августа 2016 г. 10:27
  • У вас список ПО приклеен, соотвественно будет каждая строка, вы можете этот запрос перенести в Excel и сделать группировку, или импортировать туда.

    Если необходимо чтобы отчет был такой на репорт сервере то Report Builder https://msdn.microsoft.com/ru-ru/library/dd220532(v=sql.120).aspx

    9 августа 2016 г. 10:58
  • Всем спасибо, буду пробовать и если что - ещё спрашивать.
    9 августа 2016 г. 11:09
  • Есть ещё вопрос. Тут подумали, подумали и решили, что ну его в одном отчёте иметь всё. Пусть будет по харду и софту разные. Теперь переиграли отчёт для харда: нужно в него добавить более подробную инфу про железо. Например название и скорость оперативки, подключенную периферию. Касаемо памяти, я нашёл в базе представление v_GS_Physical_MEMORY. Однако при попытке его добавить в запрос вываливается ошибка, что такое не найдено. Пытался, например, v_GS_Physical_MEMORY.Manufacturer0. Я так понимаю, что не все представления можно использовать одновременно в одном отчёте?

    По поводу периферии: тут видимо надо искать представления для получения инфы про мониторы и другие девайсы. Может там есть какой-то универсальный параметр?

    12 августа 2016 г. 6:09
  • покажите свой запрос и проверьте что v_GS_Physical_MEMORY.Manufacturer0 вообще что-то есть. может она пустая.

    пример: 

    SELECT        dbo.v_R_System.Name0, dbo.v_GS_PHYSICAL_MEMORY.Manufacturer0
    FROM            dbo.v_R_System INNER JOIN
                             dbo.v_GS_PHYSICAL_MEMORY ON dbo.v_R_System.ResourceID = dbo.v_GS_PHYSICAL_MEMORY.ResourceID



    12 августа 2016 г. 6:31
  • На данный момент запрос выглядит так:

    SELECT DISTINCT 
                          TOP (100) PERCENT dbo.v_R_System_Valid.Netbios_Name0 AS [Computer Name], 
                          dbo.v_R_System_Valid.Resource_Domain_OR_Workgr0 AS [Domain/Workgroup], dbo.v_Site.SiteName AS [SMS Site Name], 
                          CASE WHEN (v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 IS NULL OR 
                          v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 = '-1') 
                          THEN 'Unknown' ELSE v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 END AS [Top Console User], 
                          dbo.v_GS_OPERATING_SYSTEM.Caption0 AS [Operating System], dbo.v_GS_OPERATING_SYSTEM.CSDVersion0 AS [Service Pack Level], 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SerialNumber0 AS [Serial Number], 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SMBIOSAssetTag0 AS [Asset Tag], dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0 AS Manufacturer, 
                          dbo.v_GS_COMPUTER_SYSTEM.Model0 AS Model, dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0/1024 AS [Memory (KBytes)],
    dbo.v_GS_Processor.Name0 AS [Processor Model], 
                          dbo.v_GS_PROCESSOR.NormSpeed0 AS [Processor (GHz)], 
                              (SELECT     SUM(dbo.v_GS_LOGICAL_DISK.Size0/1024) AS Expr1 
                                FROM          dbo.v_GS_LOGICAL_DISK INNER JOIN 
                                                       dbo.v_FullCollectionMembership ON dbo.v_FullCollectionMembership.ResourceID = dbo.v_GS_LOGICAL_DISK.ResourceID 
                                WHERE      (dbo.v_GS_LOGICAL_DISK.ResourceID = dbo.v_R_System_Valid.ResourceID) AND 
                                                       (dbo.v_FullCollectionMembership.CollectionID = @CollectionID)) AS [Disk Space (MB)], 
                              (SELECT     SUM(v_GS_LOGICAL_DISK_2.FreeSpace0) AS Expr1 
                                FROM          dbo.v_GS_LOGICAL_DISK AS v_GS_LOGICAL_DISK_2 INNER JOIN 
                                                       dbo.v_FullCollectionMembership AS v_FullCollectionMembership_2 ON 
                                                       v_FullCollectionMembership_2.ResourceID = v_GS_LOGICAL_DISK_2.ResourceID 
                                WHERE      (v_GS_LOGICAL_DISK_2.ResourceID = dbo.v_R_System_Valid.ResourceID) AND 
                                                       (v_FullCollectionMembership_2.CollectionID = @CollectionID)) AS [Free Disk Space (MB)], 
                          dbo.v_RA_System_IPAddresses.IP_Addresses0, dbo.v_RA_System_IPSubnets.IP_Subnets0 
    FROM         dbo.v_R_System_Valid INNER JOIN 
                          dbo.v_GS_OPERATING_SYSTEM ON dbo.v_GS_OPERATING_SYSTEM.ResourceID = dbo.v_R_System_Valid.ResourceID LEFT OUTER JOIN 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE ON 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_GS_COMPUTER_SYSTEM ON dbo.v_GS_COMPUTER_SYSTEM.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_GS_X86_PC_MEMORY ON dbo.v_GS_X86_PC_MEMORY.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
    		      dbo.v_GS_PROCESSOR ON dbo.v_GS_PROCESSOR.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_FullCollectionMembership AS v_FullCollectionMembership_1 ON 
                          v_FullCollectionMembership_1.ResourceID = dbo.v_R_System_Valid.ResourceID LEFT OUTER JOIN 
                          dbo.v_Site ON v_FullCollectionMembership_1.SiteCode = dbo.v_Site.SiteCode INNER JOIN 
                          dbo.v_GS_LOGICAL_DISK AS v_GS_LOGICAL_DISK_1 ON v_GS_LOGICAL_DISK_1.ResourceID = dbo.v_R_System_Valid.ResourceID AND 
                          v_GS_LOGICAL_DISK_1.DeviceID0 = SUBSTRING(dbo.v_GS_OPERATING_SYSTEM.WindowsDirectory0, 1, 2) INNER JOIN 
                          dbo.v_RA_System_IPSubnets ON dbo.v_R_System_Valid.ResourceID = dbo.v_RA_System_IPSubnets.ResourceID INNER JOIN 
                          dbo.v_RA_System_IPAddresses ON dbo.v_R_System_Valid.ResourceID = dbo.v_RA_System_IPAddresses.ResourceID LEFT OUTER JOIN 
                          dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP ON 
                          dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.ResourceID = dbo.v_R_System_Valid.ResourceID 
    WHERE     (v_FullCollectionMembership_1.CollectionID = @CollectionID)
    Group by dbo.v_R_System_Valid.Netbios_Name0, dbo.v_R_System_Valid.Resource_Domain_OR_Workgr0, dbo.v_Site.SiteName, dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0, dbo.v_GS_OPERATING_SYSTEM.Caption0, dbo.v_GS_OPERATING_SYSTEM.CSDVersion0, dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SerialNumber0, dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SMBIOSAssetTag0, dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0, dbo.v_GS_COMPUTER_SYSTEM.Model0, dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0, dbo.v_GS_PROCESSOR.NormSpeed0, dbo.v_R_System_Valid.ResourceID, dbo.v_RA_System_IPAddresses.IP_Addresses0, dbo.v_RA_System_IPSubnets.IP_Subnets0,
    dbo.v_GS_Processor.Name0
    ORDER BY [Computer Name]
    В Мануфактуре данные есть, пока искал, смотрел что где есть


    12 августа 2016 г. 6:39
  • покажите свой запрос и проверьте что v_GS_Physical_MEMORY.Manufacturer0 вообще что-то есть. может она пустая.

    пример: 

    SELECT        dbo.v_R_System.Name0, dbo.v_GS_PHYSICAL_MEMORY.Manufacturer0
    FROM            dbo.v_R_System INNER JOIN
                             dbo.v_GS_PHYSICAL_MEMORY ON dbo.v_R_System.ResourceID = dbo.v_GS_PHYSICAL_MEMORY.ResourceID




    Спасибо! Попробую и отпишу
    12 августа 2016 г. 7:09
  • SELECT DISTINCT 
                          TOP (100) PERCENT dbo.v_R_System_Valid.Netbios_Name0 AS [Computer Name], 
                          dbo.v_R_System_Valid.Resource_Domain_OR_Workgr0 AS [Domain/Workgroup], dbo.v_Site.SiteName AS [SMS Site Name], 
                          CASE WHEN (v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 IS NULL OR 
                          v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 = '-1') 
                          THEN 'Unknown' ELSE v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 END AS [Top Console User], 
                          dbo.v_GS_OPERATING_SYSTEM.Caption0 AS [Operating System], dbo.v_GS_OPERATING_SYSTEM.CSDVersion0 AS [Service Pack Level], 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SerialNumber0 AS [Serial Number], 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SMBIOSAssetTag0 AS [Asset Tag], dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0 AS Manufacturer, 
                          dbo.v_GS_COMPUTER_SYSTEM.Model0 AS Model, dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0/1024 AS [Memory (KBytes)],
    dbo.v_GS_Processor.Name0 AS [Processor Model], 
                          dbo.v_GS_PROCESSOR.NormSpeed0 AS [Processor (GHz)], 
                              (SELECT     SUM(dbo.v_GS_LOGICAL_DISK.Size0/1024) AS Expr1 
                                FROM          dbo.v_GS_LOGICAL_DISK INNER JOIN 
                                                       dbo.v_FullCollectionMembership ON dbo.v_FullCollectionMembership.ResourceID = dbo.v_GS_LOGICAL_DISK.ResourceID 
                                WHERE      (dbo.v_GS_LOGICAL_DISK.ResourceID = dbo.v_R_System_Valid.ResourceID) AND 
                                                       (dbo.v_FullCollectionMembership.CollectionID = @CollectionID)) AS [Disk Space (MB)], 
                              (SELECT     SUM(v_GS_LOGICAL_DISK_2.FreeSpace0) AS Expr1 
                                FROM          dbo.v_GS_LOGICAL_DISK AS v_GS_LOGICAL_DISK_2 INNER JOIN 
                                                       dbo.v_FullCollectionMembership AS v_FullCollectionMembership_2 ON 
                                                       v_FullCollectionMembership_2.ResourceID = v_GS_LOGICAL_DISK_2.ResourceID 
                                WHERE      (v_GS_LOGICAL_DISK_2.ResourceID = dbo.v_R_System_Valid.ResourceID) AND 
                                                       (v_FullCollectionMembership_2.CollectionID = @CollectionID)) AS [Free Disk Space (MB)], 
                          dbo.v_RA_System_IPAddresses.IP_Addresses0, dbo.v_RA_System_IPSubnets.IP_Subnets0, 
    					  dbo.v_GS_PHYSICAL_MEMORY.Manufacturer0 as [Memory Manufacturer]
    FROM         dbo.v_R_System_Valid INNER JOIN 
                          dbo.v_GS_OPERATING_SYSTEM ON dbo.v_GS_OPERATING_SYSTEM.ResourceID = dbo.v_R_System_Valid.ResourceID LEFT OUTER JOIN 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE ON 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_GS_COMPUTER_SYSTEM ON dbo.v_GS_COMPUTER_SYSTEM.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_GS_X86_PC_MEMORY ON dbo.v_GS_X86_PC_MEMORY.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
    		      dbo.v_GS_PROCESSOR ON dbo.v_GS_PROCESSOR.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_FullCollectionMembership AS v_FullCollectionMembership_1 ON 
                          v_FullCollectionMembership_1.ResourceID = dbo.v_R_System_Valid.ResourceID LEFT OUTER JOIN 
                          dbo.v_Site ON v_FullCollectionMembership_1.SiteCode = dbo.v_Site.SiteCode INNER JOIN 
                          dbo.v_GS_LOGICAL_DISK AS v_GS_LOGICAL_DISK_1 ON v_GS_LOGICAL_DISK_1.ResourceID = dbo.v_R_System_Valid.ResourceID AND 
                          v_GS_LOGICAL_DISK_1.DeviceID0 = SUBSTRING(dbo.v_GS_OPERATING_SYSTEM.WindowsDirectory0, 1, 2) INNER JOIN 
                          dbo.v_RA_System_IPSubnets ON dbo.v_R_System_Valid.ResourceID = dbo.v_RA_System_IPSubnets.ResourceID INNER JOIN 
                          dbo.v_RA_System_IPAddresses ON dbo.v_R_System_Valid.ResourceID = dbo.v_RA_System_IPAddresses.ResourceID INNER JOIN 
    					  dbo.v_GS_PHYSICAL_MEMORY ON dbo.v_R_System_Valid.ResourceID = dbo.v_GS_PHYSICAL_MEMORY.ResourceID LEFT OUTER JOIN
    					  dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP ON 
                          dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.ResourceID = dbo.v_R_System_Valid.ResourceID 
    WHERE     (v_FullCollectionMembership_1.CollectionID = @CollectionID)
    Group by dbo.v_R_System_Valid.Netbios_Name0, dbo.v_R_System_Valid.Resource_Domain_OR_Workgr0, dbo.v_Site.SiteName, dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0, dbo.v_GS_OPERATING_SYSTEM.Caption0, dbo.v_GS_OPERATING_SYSTEM.CSDVersion0, dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SerialNumber0, dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SMBIOSAssetTag0, dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0, dbo.v_GS_COMPUTER_SYSTEM.Model0, dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0, dbo.v_GS_PROCESSOR.NormSpeed0, dbo.v_R_System_Valid.ResourceID, dbo.v_RA_System_IPAddresses.IP_Addresses0, dbo.v_RA_System_IPSubnets.IP_Subnets0,
    dbo.v_GS_Processor.Name0, dbo.v_GS_PHYSICAL_MEMORY.Manufacturer0
    
    ORDER BY [Computer Name]
    Добавил memory manufacturer

    • Изменено Vorobyev Alexey 12 августа 2016 г. 7:27
    • Помечено в качестве ответа Alexey Putyatin 12 августа 2016 г. 8:47
    12 августа 2016 г. 7:27
  • SELECT DISTINCT 
                          TOP (100) PERCENT dbo.v_R_System_Valid.Netbios_Name0 AS [Computer Name], 
                          dbo.v_R_System_Valid.Resource_Domain_OR_Workgr0 AS [Domain/Workgroup], dbo.v_Site.SiteName AS [SMS Site Name], 
                          CASE WHEN (v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 IS NULL OR 
                          v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 = '-1') 
                          THEN 'Unknown' ELSE v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0 END AS [Top Console User], 
                          dbo.v_GS_OPERATING_SYSTEM.Caption0 AS [Operating System], dbo.v_GS_OPERATING_SYSTEM.CSDVersion0 AS [Service Pack Level], 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SerialNumber0 AS [Serial Number], 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SMBIOSAssetTag0 AS [Asset Tag], dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0 AS Manufacturer, 
                          dbo.v_GS_COMPUTER_SYSTEM.Model0 AS Model, dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0/1024 AS [Memory (KBytes)],
    dbo.v_GS_Processor.Name0 AS [Processor Model], 
                          dbo.v_GS_PROCESSOR.NormSpeed0 AS [Processor (GHz)], 
                              (SELECT     SUM(dbo.v_GS_LOGICAL_DISK.Size0/1024) AS Expr1 
                                FROM          dbo.v_GS_LOGICAL_DISK INNER JOIN 
                                                       dbo.v_FullCollectionMembership ON dbo.v_FullCollectionMembership.ResourceID = dbo.v_GS_LOGICAL_DISK.ResourceID 
                                WHERE      (dbo.v_GS_LOGICAL_DISK.ResourceID = dbo.v_R_System_Valid.ResourceID) AND 
                                                       (dbo.v_FullCollectionMembership.CollectionID = @CollectionID)) AS [Disk Space (MB)], 
                              (SELECT     SUM(v_GS_LOGICAL_DISK_2.FreeSpace0) AS Expr1 
                                FROM          dbo.v_GS_LOGICAL_DISK AS v_GS_LOGICAL_DISK_2 INNER JOIN 
                                                       dbo.v_FullCollectionMembership AS v_FullCollectionMembership_2 ON 
                                                       v_FullCollectionMembership_2.ResourceID = v_GS_LOGICAL_DISK_2.ResourceID 
                                WHERE      (v_GS_LOGICAL_DISK_2.ResourceID = dbo.v_R_System_Valid.ResourceID) AND 
                                                       (v_FullCollectionMembership_2.CollectionID = @CollectionID)) AS [Free Disk Space (MB)], 
                          dbo.v_RA_System_IPAddresses.IP_Addresses0, dbo.v_RA_System_IPSubnets.IP_Subnets0, 
    					  dbo.v_GS_PHYSICAL_MEMORY.Manufacturer0 as [Memory Manufacturer]
    FROM         dbo.v_R_System_Valid INNER JOIN 
                          dbo.v_GS_OPERATING_SYSTEM ON dbo.v_GS_OPERATING_SYSTEM.ResourceID = dbo.v_R_System_Valid.ResourceID LEFT OUTER JOIN 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE ON 
                          dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_GS_COMPUTER_SYSTEM ON dbo.v_GS_COMPUTER_SYSTEM.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_GS_X86_PC_MEMORY ON dbo.v_GS_X86_PC_MEMORY.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
    		      dbo.v_GS_PROCESSOR ON dbo.v_GS_PROCESSOR.ResourceID = dbo.v_R_System_Valid.ResourceID INNER JOIN 
                          dbo.v_FullCollectionMembership AS v_FullCollectionMembership_1 ON 
                          v_FullCollectionMembership_1.ResourceID = dbo.v_R_System_Valid.ResourceID LEFT OUTER JOIN 
                          dbo.v_Site ON v_FullCollectionMembership_1.SiteCode = dbo.v_Site.SiteCode INNER JOIN 
                          dbo.v_GS_LOGICAL_DISK AS v_GS_LOGICAL_DISK_1 ON v_GS_LOGICAL_DISK_1.ResourceID = dbo.v_R_System_Valid.ResourceID AND 
                          v_GS_LOGICAL_DISK_1.DeviceID0 = SUBSTRING(dbo.v_GS_OPERATING_SYSTEM.WindowsDirectory0, 1, 2) INNER JOIN 
                          dbo.v_RA_System_IPSubnets ON dbo.v_R_System_Valid.ResourceID = dbo.v_RA_System_IPSubnets.ResourceID INNER JOIN 
                          dbo.v_RA_System_IPAddresses ON dbo.v_R_System_Valid.ResourceID = dbo.v_RA_System_IPAddresses.ResourceID INNER JOIN 
    					  dbo.v_GS_PHYSICAL_MEMORY ON dbo.v_R_System_Valid.ResourceID = dbo.v_GS_PHYSICAL_MEMORY.ResourceID LEFT OUTER JOIN
    					  dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP ON 
                          dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.ResourceID = dbo.v_R_System_Valid.ResourceID 
    WHERE     (v_FullCollectionMembership_1.CollectionID = @CollectionID)
    Group by dbo.v_R_System_Valid.Netbios_Name0, dbo.v_R_System_Valid.Resource_Domain_OR_Workgr0, dbo.v_Site.SiteName, dbo.v_GS_SYSTEM_CONSOLE_USAGE_MAXGROUP.TopConsoleUser0, dbo.v_GS_OPERATING_SYSTEM.Caption0, dbo.v_GS_OPERATING_SYSTEM.CSDVersion0, dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SerialNumber0, dbo.v_GS_SYSTEM_ENCLOSURE_UNIQUE.SMBIOSAssetTag0, dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0, dbo.v_GS_COMPUTER_SYSTEM.Model0, dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0, dbo.v_GS_PROCESSOR.NormSpeed0, dbo.v_R_System_Valid.ResourceID, dbo.v_RA_System_IPAddresses.IP_Addresses0, dbo.v_RA_System_IPSubnets.IP_Subnets0,
    dbo.v_GS_Processor.Name0, dbo.v_GS_PHYSICAL_MEMORY.Manufacturer0
    
    ORDER BY [Computer Name]
    Добавил memory manufacturer

    Примного благодарен. А то у меня где-то не ехало, ругалось на параметр dbo. Видимо и со dbo.v_GS_PHYSICAL_MEMORY.Speed0 можно поступить аналогично.
    12 августа 2016 г. 8:47
  • И снова здравствуйте!
    Столкнулся с необходимостью добавить в инвентаризацию железа информацию о серийном номере жесткого диска. Из WMI это можно получить таким запросом:

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_DiskDrive",,48) 
    For Each objItem in colItems 
        Wscript.Echo "-----------------------------------"
        Wscript.Echo "Win32_DiskDrive instance"
        Wscript.Echo "-----------------------------------"
        Wscript.Echo "SerialNumber: " & objItem.SerialNumber
    Next
    По умолчанию этого SerialNumber в имеющимся списке классов нет. Как я понимаю, это можно добавить с помощью mof. Но я никак не могу найти структуру этого файла и вообще пока не могу понять, как добавлять его (ну т.е. добавляется я так понял через add). А вот как сделать его?

    22 сентября 2016 г. 14:41
  • или таким в powershell:

    Get-WmiObject win32_diskdrive | select serialnumber

    Добавить класс который есть на каком либо компьютере в домене:

    To add a new inventory class

    22 сентября 2016 г. 17:55
  • или таким в powershell:

    Get-WmiObject win32_diskdrive | select serialnumber

    Добавить класс который есть на каком либо компьютере в домене:

    To add a new inventory class

    Спасибо. Однако у меня по этой инстре где-то не едет (или я не еду). Я открываю дефолтовые настройки клиентов (ибо кнопка add доступна только там), тыкаю в add, нахожу данный класс. А вот править я его не могу, т.к. кнопка edit не доступна. Что я делаю не так?
    23 сентября 2016 г. 8:18
  • А зачем править класс? добавь его выделив галочкой

    а потом выбери свойства которые нужно


    • Изменено Rif Iarullin 26 сентября 2016 г. 6:06
    26 сентября 2016 г. 6:04
  • Да вот проблема в том, что я не могу его выбрать (чекбокс не активен). Соответственно и не могу выбрать нужные мне свойства
    28 сентября 2016 г. 9:43
  • потому что расширяется все в дефолтной политике, а не в кастомной

    SCCM Blog: http://masyan.ru SCCM User Group Russia: https://www.facebook.com/groups/sccm.russia/ Telegram: https://telegram.me/configmgr

    28 сентября 2016 г. 14:14
    Модератор
  • потому что расширяется все в дефолтной политике, а не в кастомной

    SCCM Blog: http://masyan.ru SCCM User Group Russia: https://www.facebook.com/groups/sccm.russia/ Telegram: https://telegram.me/configmgr

    Если это не дефолтные, то где они?

    28 сентября 2016 г. 14:55
  • Кстати, вопрос на засыпку. Вроде как эти же серийные номера хранятся в таблице dbo.PHYSICAL_MEDIA_DATA в том же представлении SerialNumber00. Я включил сбор этой информации и собранные "серийники" похожи на серийники хардов. А можно добавить этот параметр в отчёт? У меня ругается на синтаксис. Решил сделать самый элементарный для начала (имя ПК + серийный номер)

    SELECT Distinct SMS_R_System.ResourceID, SMS_R_System.Netbios_Name0, SMS_PHYSICAL_MEDIA_DATA.SerialNumber00
    FROM SMS_R_System(@UserSIDs)
    INNER JOIN SMS_PHYSICAL_MEDIA_DATA(@UserSIDs) SMS_R_System.ResourceID = SMS_PHYSICAL_MEDIA_DATA.ResourceID
    WHERE SMS_R_System.Netbios_Name0 LIKE @variable
    ORDER BY SMS_R_System.Netbios_Name0

    Ругается на Incorrect syntax near '.'.

    Вообще мне бы потом туда добавить инфу о модели харда и имени пользователя.

    29 сентября 2016 г. 7:46
  • Разобрался с запросом. Сделал нужный мне отчёт. Серийный номер вытащил из physical_media_data. Однако теперь и его не могу редактировать (кнопка стала неактивной)
    30 сентября 2016 г. 13:12