Posts tagged ‘инвентаризация’

список администраторов на компьютерах домена

В файл \Microsoft Configuration Manager\inboxes\clifiles.src\hinv\sms_def.mof добавляем следующее:

// Local Admins
 

#pragma namespace («\\\\.\\root\\cimv2\\sms»)

[SMS_Report (TRUE),
SMS_Group_Name («LocalAdmins»),
SMS_Class_ID («MICROSOFT|LocalAdmins|1.0»)]

class Win32_LocalAdmins : SMS_Class_Template
{
[SMS_Report(TRUE), key]
string AccountName;
[SMS_Report(TRUE), key]
string GroupName;
};

Ждём, когда клиент SCCM получит новые политики (по умолчанию — каждые 60 минут), либо вручную запускаем Machine Policy Retrieval and Evaluation Cycle.
После того, как мы создали класс, нужно заставить клиента его заполнять.
«Доставить информацию» на удалённый компьютер можно разными способами. Я решил, что наиболее удобно будет распостранить пакет.

Содержимое admin.mof:

#pragma namespace («\\\\.\\root\\cimv2»)







[union, ViewSources{«Select * from Win32_GroupUser where GroupComponent=\»Win32_Group.Domain=’BUILTIN’,Name=’Администраторы’\»»},


ViewSpaces{«\\\\.\\root\\CIMV2»}, Dynamic : ToInstance, provider(«MS_VIEW_INSTANCE_PROVIDER»)]






class Win32_LocalAdmins


{


[PropertySources(«PartComponent»), key] Win32_Account ref AccountName;


[PropertySources(«GroupComponent»), key] Win32_Group ref GroupName;


}; 
 
Содержимое admin.cmd:
mofcomp.exe admin.mof

Содержимое admin.vbs:

On Error Resume Next



‘1 Create temporary .mof file in Temp folder


‘2 mofcomp the created .mof file


‘Kudos to Mike Seely—>http://www.myitforum.com/forums/Local_Admins_MOF/m_179546/tm.htm


‘and of course Ward Lange, and report structure from Gavin Ross & Claudio Dhondt—>


‘http://www.myitforum.com/forums/m_149305/tm.htm#149662


‘6/8/08 Sherry Kissinger


Set fso = CreateObject(«Scripting.FileSystemObject»)


Set nwo = CreateObject(«Wscript.Network»)


Set sho = CreateObject(«Wscript.Shell»)


TempFolder = sho.ExpandEnvironmentStrings(«%temp%»)


strWindir = sho.ExpandEnvironmentStrings(«%windir%»)


Set f1 = fso.CreateTextFile(TempFolder & «\SMSLocalAdmin.mof»,True)


f1.WriteLine(«#pragma namespace («&Chr;(34)&»\\\\.\\root\\cimv2″&chr;(34)&»)»)


f1.WriteLine(«[union, ViewSources{«&chr;(34)&»Select * from Win32_GroupUser where » &_


«GroupComponent=\»&chr;(34)&»Win32_Group.Domain='»&nwo.ComputerName;&_


«‘,Name=’Администраторы’\»&Chr;(34)&Chr;(34)&_


«},ViewSpaces{«&Chr;(34)&»\\\\.\\root\\CIMV2″&Chr;(34)&»}, Dynamic : ToInstance, provider(«&_


Chr(34)&»MS_VIEW_INSTANCE_PROVIDER»&CHR;(34)&»)]»)


f1.WriteLine(«class Win32_LocalAdmins»)


f1.WriteLine(«{«)


f1.WriteLine(«[PropertySources(«&chr;(34)&»PartComponent»&chr;(34)&»), key] Win32_Account ref AccountName;»)


f1.WriteLine
(«[PropertySources(«&chr;(34)&»GroupComponent»&chr;(34)&»), key] Win32_Group ref GroupName;»)



f1.WriteLine(«};»)


f1.Close


sho.Run strWindir & «\system32\wbem\mofcomp » & TempFolder & «\SMSLocalAdmin.mof»,0,True


Set f1 = fso.getFile(TempFolder & «\smslocaladmin.mof»)


f1.Delete


wscript.quit

Пакет содержит две программы: для компьютеров с Windows XP и для Windows Server 2003/2008 соответственно.

После распостранения пакета и прохождения цикла инвентаризации данные заносятся в базу и можно строить отчёт:
SELECT DISTINCT




dbo.v_GS_SYSTEM.Name0 AS ‘Computer Name’, SUBSTRING(dbo.v_GS_LOCALADMINS.AccountName0, CHARINDEX(‘Domain=’,


dbo.v_GS_LOCALADMINS.AccountName0) + 8, CHARINDEX(‘Name=’, dbo.v_GS_LOCALADMINS.AccountName0) — CHARINDEX(‘Domain=’,


dbo.v_GS_LOCALADMINS.AccountName0) — 10) AS ‘Domain Name’, SUBSTRING(dbo.v_GS_LOCALADMINS.AccountName0,


LEN(dbo.v_GS_LOCALADMINS.AccountName0) — CHARINDEX(‘»‘, REVERSE(dbo.v_GS_LOCALADMINS.AccountName0), 2) + 2, CHARINDEX(‘»‘,


REVERSE(dbo.v_GS_LOCALADMINS.AccountName0), 2) — 2) AS ‘User Name’


FROM dbo.v_GS_SYSTEM INNER JOIN


dbo.v_GS_LOCALADMINS ON dbo.v_GS_SYSTEM.ResourceID = dbo.v_GS_LOCALADMINS.ResourceID

 Ссылки по теме: Report on Local Administrators Group Membership

видеоуроки по SCCM 2007

Мой хороший приятель и опытный МСТ Дима Солопов записал несколько веб-кастов на русском языке для новичков:
Установка SCCM 2007
Начальные настройки сайта и установка агента
Аппаратная и программная инвентаризация

ограничение поиска по коллекции

Иногда при выполнении запроса нужно получить данные только по компьютерам определённой коллекции. Для этого в запрос нужно добавить значение CollectionID таблицы v_FullCollectionMembershipи указать идентификатор коллекции. ID можно узнать, глянув в свойства коллекции:

После чего по ResourceID мы связываем v_R_System и v_FullCollectionMembership и создаём нужный запрос. Например, количество планок памяти по 1024 Мб на компьютерах центрального офиса:

SELECT TOP (100) PERCENT dbo.v_R_System.Netbios_Name0 AS Компьютер, dbo.v_GS_PHYSICAL_MEMORY.Capacity0 AS [Планка памяти]

FROM dbo.v_R_System INNER JOIN
dbo.v_GS_PHYSICAL_MEMORY ON dbo.v_R_System.ResourceID = dbo.v_GS_PHYSICAL_MEMORY.ResourceID INNER JOIN
dbo.v_FullCollectionMembership ON dbo.v_R_System.ResourceID = dbo.v_FullCollectionMembership.ResourceID
WHERE (dbo.v_GS_PHYSICAL_MEMORY.Capacity0 >= ‘1024’) AND (dbo.v_FullCollectionMembership.CollectionID = ‘00000034’)
ORDER BY Компьютер

инвентаризация общих папок

Чтобы получить отчёт по общим папкам на компьютерах домена, нужно просто найти в файле \Microsoft Configuration Manager\inboxes\clifiles.src\hinv\sms_def.mof найти строку SMS_Group_Name («Shares») и заменить FALSE на TRUE:

[ SMS_Report (TRUE),
SMS_Group_Name («Shares»),
SMS_Class_ID («MICROSOFT|SHARE|1.0») ]

class Win32_Share : SMS_Class_Template
{
[SMS_Report (TRUE), SMS_Units(«DecimalString»)]
uint32 AccessMask;
[SMS_Report (TRUE) ]
boolean AllowMaximum;
[SMS_Report (TRUE) ]
string Caption;
[SMS_Report (TRUE) ]
string Description;
[SMS_Report (TRUE) ]
datetime InstallDate;
[SMS_Report (TRUE) ]
uint32 MaximumAllowed;
[SMS_Report (TRUE), key]
string Name;
[SMS_Report (TRUE) ]
string Path;
[SMS_Report (TRUE) ]
string Status;
[SMS_Report (TRUE), SMS_Units(«DecimalString»)]
uint32 Type;
};

После перекомпилирования файла и прохождения цикла инвентаризации на клиентах, в базе SCCM появится таблица v_GS_SHARE.

Затем можно строить запрос:

SELECT TOP (100) PERCENT dbo.v_R_System.Netbios_Name0 AS Компьютер, dbo.v_GS_SHARE.Name0 AS [Имя папки], dbo.v_GS_SHARE.Path0 AS Путь
FROM dbo.v_R_System INNER JOIN
dbo.v_GS_SHARE ON dbo.v_R_System.ResourceID = dbo.v_GS_SHARE.ResourceID
WHERE (dbo.v_GS_SHARE.Name0
‘C$’) AND (dbo.v_GS_SHARE.Name0
‘D$’) AND (dbo.v_GS_SHARE.Name0
‘E$’) AND (dbo.v_GS_SHARE.Name0
‘F$’) AND
(dbo.v_GS_SHARE.Name0
‘G$’) AND (dbo.v_GS_SHARE.Name0
‘ADMIN$’) AND (dbo.v_GS_SHARE.Type0
‘1’) AND (dbo.v_GS_SHARE.Name0
‘IPC$’) AND
(dbo.v_GS_SHARE.Name0
‘print$’)
ORDER BY Компьютер

проблемы с WMI

Иногда на клиентских компьютерах возникают проблемы с WMI-репозиторием, вследствие чего агент SCCM 2007 не устанавливается или работает с ошибками (например, не отправляет отчёты по инвентаризации или не даёт установить программное обеспечение). Приходится делать repairing/rebuilding WMI. В одиночных случаях могут помочь утилиты для работы с клиентом SCCM, но в большой сети на несколько сот или тысяч компьютеров нужно как-то автоматизировать процесс.
Leandro Farom на форуме TechNet выложил отличный скрипт, который удаляет WBEM-репозиторий, создаёт новый, перерегистриует .dll’s, удаляет и устанавливает клиента SCCM 2007. Настройка скрипта под свои нужды занимает меньше часа и экономит кучу времени.

Ссылки по теме:
WMI Corruption
WMI Troubleshooting Tips

инвентаризация музыки и видео

Иногда возникает потребность выяснить, кто из пользователей нерационально использует выделенное дисковое пространство на клиентских компьютерах или файловых серверах. В этом нам поможет инвентаризация программного обеспечения.

Для начала нужно проверить, включён ли агент и настроить расписание инвентаризации: в консоли открываем Site databaseSite management — ваш сайт — Site SettingsClient Agents.

На вкладке Inventory Collection нажимаем на «солнышко», добавляя типы файлов, которые нужно инвентаризировать:


После того, как клиент получит обновлённые политики, проинвентаризирует файлы в соответствии с расписанием и отправит данные, мы можем построить отчёт по типу файлов. Например, отчёт по .mp3:
SELECT dbo.v_R_System.Name0 AS Компьютер, dbo.v_GS_SoftwareFile.FileName AS Файл, dbo.v_GS_SoftwareFile.FileSize AS Размер,
dbo.v_GS_SoftwareFile.FilePath AS Путь
FROM dbo.v_GS_SoftwareFile INNER JOIN
dbo.v_R_System ON dbo.v_GS_SoftwareFile.ResourceID = dbo.v_R_System.ResourceID
WHERE (dbo.v_GS_SoftwareFile.FileName LIKE ‘%.mp3’)

Или отчёт по .avi, объём которых превышает 100 Мб:
SELECT dbo.v_R_System.Name0 AS Компьютер, dbo.v_GS_SoftwareFile.FileName AS Файл, dbo.v_GS_SoftwareFile.FileSize AS Размер,
dbo.v_GS_SoftwareFile.FilePath AS Путь
FROM dbo.v_GS_SoftwareFile INNER JOIN
dbo.v_R_System ON dbo.v_GS_SoftwareFile.ResourceID = dbo.v_R_System.ResourceID
WHERE (dbo.v_GS_SoftwareFile.FileSize >= ‘100000000’) AND (dbo.v_GS_SoftwareFile.FileName LIKE ‘%.avi’)

Ссылки по теме:
Инвентаризация программного обеспечения
Software Inventory Views