Após algum estudo encontrei as Classes do WMI que realizam este levamentamento.
São elas
Physical_Memory_Array
Que nos indica quantos Slots Fisicos cada Placa-mãe possui através da instancia
MemoryDevices
Physical_Memory_Location
Que nos indica qual a velocidade real da memória (os indicados em alguns relatórios do System Center nos mostram a memória em uso, por exemplo se 8 MBs estão compartilhados para placa de vídeo ele mostra em uma memória de 512 como 504, as vezes isso prejudica um levantamento oficial caso haja algum caso de memória compartilhada de 128 ou mesmo 256 para vídeo. Esta fica representada pela instancia
Capacity nesta mesma classe.
Bom entendido o que faremos mãos a obra.
Antes de tudo devemos realizar um backup do arquivo sms_def.mof que encontra-se no seguinte caminho
\\servidor\sms_seusite\inboxes\clifiles.src\hinv\
após ter realizado o backup devemos edita-lo, inserindo os parametros abaixo no final do arquivo
=========================================================================================
//*******************************************************************************
// Adicionar Clasesse de Report Physical Memory Location e Physical Memory Array
// para realizar reports de quantidade de bancos por estação
//
//*******************************************************************************
#pragma namespace("\\\\.\\ROOT\\CIMV2\\SMS")
#pragma deleteclass("win32_PhysicalMemory",NOFAIL)
[ SMS_Report (TRUE),
SMS_Group_Name ("Physical Memory Array"),
SMS_Class_ID ("MICROSOFT|Physical_Memory_Array|1.0")]
class Win32_PhysicalMemoryArray : SMS_Class_Template
{
[SMS_Report(TRUE)] uint16 MemoryDevices;
};
// <:[-<>>>>>>>>>>>>>>>>>>>>>>>>>>>Start>>-Physical Memory Location-<
[SMS_Report (TRUE),
SMS_Group_Name ("Physical Memory Location"),
SMS_Class_ID ("Microsoft|Physical_Memory_Location|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)] uint32 PositionInRow;
[SMS_Report (TRUE)] uint32 Speed;
[SMS_Report (TRUE),Key] string Tag;
[SMS_Report (TRUE),Key] string CreationClassName;
};
// <:[-<>>>>>>>>>>>>>>>>>>>>>>>>>>>END>>-Physical Memory Location-<
=========================================================================================
Fica a critério de cada um se vão tornar as demais instancias da classe true ou false para gerar junto ou não nos relatórios, eu ja coloquei por padrão pois quando necessitar de mais alguma info referente a memória sei que as mesmas estãrão disponíveis.
Feito isso basta aguardar o sccm publicar estas informações e os proximos inventários de hardware ja estarão salvando informações referentes aos bancos de memória.
Para testar experimente abrir o resource explorer de um computador e verificar se apareceram as duas classes adicionais no inventário de hardware.
Serão criadas tambem duas views no banco de dados do sccm, então quando for criar os relatórios pode usá-las, são elas:
v_GS_PHYSICAL_MEMORY_LOCATION
v_GS_PHYSICAL_MEMORY_ARRAY
Ficamos por aqui com o assunto memória por hoje, espero que todos tenham gostado.
Obrigado
Ótimo post Schenardie, com certeza irá ajudar muita gente!
ResponderExcluirAbraços e parabéns pelo Blog, já está nos meus favoritos ;-)