sexta-feira, 4 de dezembro de 2009

Inventário de Memória

Como primeiro post do blog irei falar um pouco sobre um problema que obtive logo que comecei a fazer relatórios no SCCM. Para realizar um estudo de upgrade do parque tecnológico necessitamos saber quais as configurações atuais do parque, mas mais especificamente quanto possuem de memória as estações e se é possivel realizar upgrade. Pra isso precisamos saber também quantos slots fisicos a placa-mãe possui e quantos encontran-se em uso.

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

Um comentário:

  1. Ótimo post Schenardie, com certeza irá ajudar muita gente!

    Abraços e parabéns pelo Blog, já está nos meus favoritos ;-)

    ResponderExcluir