Skip to content

Пример отчетов SMS 2003 для сбора статистики по ключам Windows XP, Office 2003

На этой странице даются примеры отчетов, которые будут работать только после того, как вы выполните действия, описанные тут.

Не забываем, что отчеты можно и нужно (для удобства) линковать один к другому, чтобы можно было получать более подробную информацию нажимая как можно меньше кнопочек.

Отчет перечисляет ключи и показывает сколько инсталляций каждого ключа WinXP мы имеем. Линкуется к отчету "Компьютеры с определенным ключем Windows XP"

// ***** Class : SMS_Report *****
[SecurityVerbs(140551)]
instance of SMS_Report
{
 Category = "_Keys - Лицензии";
 Comment = "Отчет показывает общую статистику: сколько и каких ключей MS Windows XP всего установлено";
 DrillThroughColumns = {};
 
 
 GraphXCol = 1;
 GraphYCol = 2;
 MachineDetail = FALSE;
 MachineSource = FALSE;
 Name = "Статистика по ключам Windows XP";
 NumPrompts = 0;
 RefreshInterval = 0;
 
 SecurityKey = "";
 SQLQuery = "SELECT WinProdKey0 as C054, COUNT(*) AS 'Count' 
FROM v_GS_PC0 PC
GROUP BY WinProdKey0
ORDER BY WinProdKey0";
 StatusMessageDetailSource = FALSE;
};
// ***** End *****


Отчет перечисляет ключи и показывает сколько инсталляций каждого ключа Office 2003 мы имеем. Линкуется к отчету "Компьютеры с определенным ключем Office 2003"

// ***** Class : SMS_Report *****
[SecurityVerbs(140551)]
instance of SMS_Report
{
 Category = "_Keys - Лицензии";
 Comment = "Отчет показывает общую статистику: сколько и каких ключей MS Office 2003 всего установлено.";
 DrillThroughColumns = {};
 
 
 GraphXCol = 1;
 GraphYCol = 2;
 MachineDetail = FALSE;
 MachineSource = FALSE;
 Name = "Статистика по ключам Office 2003";
 NumPrompts = 0;
 RefreshInterval = 0;
 
 SecurityKey = "";
 SQLQuery = "SELECT OfficeProdKey0 as C054, COUNT(*) AS 'Count' 
FROM v_GS_PC0 PC
GROUP BY OfficeProdKey0
ORDER BY OfficeProdKey0";
 StatusMessageDetailSource = FALSE;
};
// ***** End *****


Самый удобный и часто используемый. Показывает: "Имя ПК" - "Ключ Win" - "КлючOffice2003". Линковать можно к чему удобнее, мне удобнее к аналогу Resource Explorer в отчетах.

// ***** Class : SMS_Report *****
[SecurityVerbs(140551)]
instance of SMS_Report
{
 Category = "_Keys - Лицензии";
 Comment = "Отчет показывает сводную таблицу по productkey MS Windows XP и MS Office 2003";
 GraphXCol = 1;
 GraphYCol = 2;
 MachineDetail = FALSE;
 MachineSource = FALSE;
 Name = "Сводный отчет по ключам Windows XP и Office 2003";
 NumPrompts = 0;
 RefreshInterval = 0;
 
 SecurityKey = "";
 SQLQuery = "SELECT DISTINCT SYS.Netbios_Name0, SYS.User_Name0, PC.WinProdKey0,PC.OfficeProdKey0
FROM v_R_System SYS
JOIN   v_GS_PC0 PC on SYS.ResourceID = PC.ResourceID
ORDER BY SYS.Netbios_Name0";
 StatusMessageDetailSource = FALSE;
};
// ***** End *****


Если везде должен использоваться один ключ для Win XP и один ключ для Office 2003, то отчет показывает все компы с невалидными ключами. Не забываем прописывать ваши ключи.

// ***** Class : SMS_Report *****
[SecurityVerbs(140551)]
instance of SMS_Report
{
 Category = "_Keys - Лицензии";
 Comment = "Если хоть один из ключей левый, то показывает ПК в отчете";
 GraphXCol = 1;
 GraphYCol = 2;
 MachineDetail = FALSE;
 MachineSource = FALSE;
 Name = "Компьютеры на которых ключ XP или Office 2003 не наш";
 NumPrompts = 0;
 RefreshInterval = 0;
 
 SecurityKey = "";
 SQLQuery = "Select SYS.Netbios_Name0,OPSYS.WinProdKey0 as C054, OPSYS.OfficeProdKey0, SYS.User_Name0
from v_R_System SYS
join v_GS_PC0 OPSYS on SYS.ResourceID=OPSYS.ResourceID
where OPSYS.WinProdKey0 not like \"{Наш Ключ XP}\"  
or OPSYS.OfficeProdKey0 not like \"{Наш Ключ Office 2003}\"
order by SYS.Netbios_Name0";
 StatusMessageDetailSource = FALSE;
};
// ***** End *****


Показывает машины, на которых все ключи "правильные" (в случае использования одного ключа для всех машин на Windows XP и одного на Office 2003)

// ***** Class : SMS_Report *****
[SecurityVerbs(140551)]
instance of SMS_Report
{
 Category = "_Keys - Лицензии";
 Comment = "";
 GraphXCol = 1;
 GraphYCol = 2;
 MachineDetail = FALSE;
 MachineSource = FALSE;
 Name = "Компьютеры на которых ключ XP и Office 2003 наши";
 NumPrompts = 0;
 RefreshInterval = 0;
 
 SecurityKey = "";
 SQLQuery = "Select SYS.Netbios_Name0,OPSYS.WinProdKey0 as C054, OPSYS.OfficeProdKey0, SYS.User_Name0
from v_R_System SYS
join v_GS_PC0 OPSYS on SYS.ResourceID=OPSYS.ResourceID
where OPSYS.WinProdKey0 like \"{Наш Ключ XP}\"  
and OPSYS.OfficeProdKey0 like \"{Наш Ключ Office 2003}\"
order by SYS.Netbios_Name0";
 StatusMessageDetailSource = FALSE;
};
// ***** End *****


Дальше идут  "вспомогательные" отчеты, которые сами по себе не интересны, но используются для ликновки к другим.

Предлагает выбрать ключ Windows XP и показывает все машины, на которых он используется

// ***** Class : SMS_Report *****
[SecurityVerbs(140551)]
instance of SMS_Report
{
 Category = "_Keys - Лицензии";
 Comment = "";
 GraphXCol = 1;
 GraphYCol = 2;
 MachineDetail = FALSE;
 MachineSource = FALSE;
 Name = "Компьютеры с определенным ключем Windows XP";
 NumPrompts = 1;
 RefreshInterval = 0;
 
 ReportParams = {
instance of SMS_ReportParameter
{
 AllowEmpty = FALSE;
 DefaultValue = "";
 PromptText = "Выберите ключ Windows XP";
 SampleValueSQL = "Select Distinct OPSYS.WinProdKey0 as C054
from  v_GS_PC0 OPSYS 
order by OPSYS.WinProdKey0";
 VariableName = "os";
}};
 SecurityKey = "";
 SQLQuery = "Select SYS.Netbios_Name0,OPSYS.WinProdKey0 as C054, SYS.User_Name0
from v_R_System SYS
join v_GS_PC0 OPSYS on SYS.ResourceID=OPSYS.ResourceID
where OPSYS.WinProdKey0 like @os
order by SYS.Netbios_Name0";
 StatusMessageDetailSource = FALSE;
};
// ***** End *****


Предлагает выбрать ключ Microsoft Office 2003 и показывает все машины, на которых он используется

// ***** Class : SMS_Report *****
[SecurityVerbs(140551)]
instance of SMS_Report
{
 Category = "_Keys - Лицензии";
 Comment = "Внимание: показывает только информацию по ПК с XP!";
 GraphXCol = 1;
 GraphYCol = 2;
 MachineDetail = FALSE;
 MachineSource = FALSE;
 Name = "Компьютеры с определенным ключем Office 2003";
 NumPrompts = 1;
 RefreshInterval = 0;
 
 ReportParams = {
instance of SMS_ReportParameter
{
 AllowEmpty = FALSE;
 DefaultValue = "";
 PromptText = "Выберите ключ Office 2003";
 SampleValueSQL = "Select Distinct OPSYS.OfficeProdKey0 as C054
from  v_GS_PC0 OPSYS 
order by OPSYS.OfficeProdKey0";
 VariableName = "os";
}};
 SecurityKey = "";
 SQLQuery = "Select SYS.Netbios_Name0,OPSYS.OfficeProdKey0 as C054, SYS.User_Name0
from v_R_System SYS
join v_GS_PC0 OPSYS on SYS.ResourceID=OPSYS.ResourceID
where OPSYS.OfficeProdKey0 like @os
order by SYS.Netbios_Name0";
 StatusMessageDetailSource = FALSE;
};
// ***** End *****


И главный "вспомогательный" отчет.  Т.к.  "MachineDetail = TRUE;" понимаем, что отчет используется для появляения атрибута "PC" (с отображением ключей WinXP/Office2003) в Resource Explorer.


// ***** Class : SMS_Report *****
[SecurityVerbs(140551)]
instance of SMS_Report
{
 Category = "_Keys - Лицензии";
 Comment = "";
 GraphXCol = 1;
 GraphYCol = 2;
 MachineDetail = TRUE;
 MachineSource = FALSE;
 Name = "Информация о ключах для определенного компьютера";
 NumPrompts = 1;
 RefreshInterval = 0;
 
 ReportParams = {
instance of SMS_ReportParameter
{
 AllowEmpty = FALSE;
 DefaultValue = "";
 PromptText = "Введите имя компьютера";
 SampleValueSQL = "begin
 if (@__filterwildcard = '')
  SELECT DISTINCT SYS.Netbios_Name0 from v_R_System SYS ORDER By SYS.Netbios_Name0
 else
  SELECT DISTINCT SYS.Netbios_Name0 from v_R_System SYS 
  WHERE SYS.Netbios_Name0 like @__filterwildcard
  ORDER By SYS.Netbios_Name0
end";
 VariableName = "variable";
}};
 SecurityKey = "";
 SQLQuery = "SELECT DISTINCT SYS.Netbios_Name0,SYS.User_Name0, PC.WinProdKey0,PC.OfficeProdKey0
  FROM v_GS_PC0 PC
  JOIN v_R_System SYS ON SYS.ResourceID = PC.ResourceID
  WHERE   SYS.Netbios_Name0 LIKE @variable 
  ORDER BY SYS.Netbios_Name0";
 StatusMessageDetailSource = FALSE;
};
// ***** End *****