Author Archive

компьютеры с определёнными планками памяти

Представим, что появилась потребность узнать, на каких клиентах SCCM 2007 у нас установлены планки памяти 1024 Мб и больше.
Для этого в файл sms_def.mof добавляем следующие строки:

// Physical Memory information

[SMS_Report (TRUE),


SMS_Group_Name («Physical Memory»),


SMS_Class_ID («Microsoft|Physical_Memory|1.0»)]

class Win32_PhysicalMemory : SMS_Class_Template


{


[SMS_Report (TRUE)] string BankLabel;


[SMS_Report (TRUE), SMS_Units(«Megabytes»)] uint64 Capacity;


[SMS_Report (TRUE)] string Caption;


[SMS_Report (TRUE)] string DeviceLocator[];


[SMS_Report (TRUE)] uint16 FormFactor;


[SMS_Report (TRUE)] string Manufacturer;


[SMS_Report (TRUE)] uint16 MemoryType;


[SMS_Report (TRUE)] string Model;


[SMS_Report (TRUE)] string Name;


[SMS_Report (TRUE)] uint32 PositionInRow;


[SMS_Report (TRUE)] uint32 Speed;


[SMS_Report (TRUE),Key] string Tag;


[SMS_Report (TRUE),Key] string CreationClassName;


};
 
После обновления политик на клиентах и прохождения цикла инвентаризации можно строить отчёт (в базе SCCM появится новая таблица v_GS_PHYSICAL_MEMORY):
 
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


WHERE (dbo.v_GS_PHYSICAL_MEMORY.Capacity0 >= ‘1024’)


ORDER BY Компьютер

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

В файл \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

установка программного обеспечения

Новый видеоурок от Димы Солопова.

шпаргалка по SQL с примерами

http://www.w3schools.com/sql/default.asp
Может быть полезна при создании отчётов в SCCM 2007. Описывается необходимый минимум от простого SELECT до суммирования.

отключение уведомлений об обновлении системы для конечного пользователя

Во избежание лишних звонков в отдел техподдежки можно отключить всплывающие окна, когда клиентский компьютер получает назначенные обновления и начинает установку. Делается это в свойствах созданного Deployment Management:

При этом в трее остаются значки, которые по клику отрывают окно с уведомлением и предложением перезагрузить компьютер. Чтобы полностью подавить уведомления для пользователя, нужно открыть Site Management — ваш сайт — Site Settings — Client Agents — Software Updates Client Agent и установить соответстующий чекбокс:

Software Metering

В журнале Windows IT Pro/RE вышла моя статья по контролю за использованием программ (Software Metering) при помощи SCCM 2007.
После согласования сроков с редакцией статья появится на itband.ru или в этом блоге.

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

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

ConfigMgr Client Troubleshooter

ConfigMgr Client Troubleshooter — ещё одна утилита, показывающая состояние клиента SCCM. Кроме информации о состоянии сервисов и просмотра логов, можно получить информацию об операционной системе, установить клиента, обновить политики, перезапустить назначенные объявления и т.д.
Скачать утилиту и получить полную информацию о ней можно в дневнике разработчика.

AppDeploy Training Videos

На сайте AppDeploy появились видеоуроки, объясняющие тонкости работы с msi-пакетами, AdminStudio, перепаковкой инсталляционных файлов, Windows PE, imageX и многим другим. Уроки будут интересны специалистам, занимающимся unattended-установкой операционных систем и программ.
Уроки общим объёмом около 650 Мб доступны для скачивания после регистрации.

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

Иногда при выполнении запроса нужно получить данные только по компьютерам определённой коллекции. Для этого в запрос нужно добавить значение 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 Компьютер