Início > Microsoft Utilities, Windows Client/Server > Inventário de servidores/workstations Windows com GP Inventory

Inventário de servidores/workstations Windows com GP Inventory

julho 18, 2010

Olá caro leitor, 

Estou aqui hoje para falar sobre um assunto muito importante em grandes ambientes controlados. Em pequenos ambientes verificar um item de hardware em determinado equipamento pode ser uma tarefa simples e rápida. 

Mas como seria a mesma tarefa em um ambiente grande onde há centenas e/ou milhares de servidores? Trabalho atualmente em um ambiente onde há aproximadamente 600 servidores físicos. Já imaginou um inventário de hardware em 600 servidores de forma não automatizada? 

Pois bem, atualmente temos ferramentas gratuitas que permitem realizar um inventário não somente em plataforma Windows, mas também Linux, UNIX Mac OS

Posso citar aqui e recomendar dois nomes de aplicativos excelentes para esta finalidade. O OCS Inventory NG e o Spiceworks

Tais ferramentas exigem algum tempo de estudos e testes para implementação e configuração. Entretanto, com fóco somente em servidores executando plataforma Windows, podemos utilizar uma ferramentas simples e rápida da Microsoft, o Group Policy Inventory (GPInventory). 

O GPInventory é uma ferramenta que permite coletar informações sobre GPOs via RSoP de servidores e também obter informações sobre hardware/software via WMI (Windows Management Instrumentation). 

O GPinventory é um MSI de 300KB aproximadamente que pode ser obtido diretamente pelo Microsoft Download Center neste link: Group Policy Inventory (GPInventory.exe) 

Faça o download do GPInventory e execute o MSI. O processo de instalação é rápido e simples sem muitas informações a serem inseridas. 

Por default, na instalação do GPInventory assume o diretório C:\Program Files\Windows Resource Kits\Tools por ser a localização de ferramentas de Resource Kit Tools instaladas no Windows. Caso escolha outro local, altere o assistente de instalação. 

Após finalizar a instalação, navegue até o diretório de instalação e crie um atalho em seu Desktop por exemplo para o executável do GPInventory (gpinventory.exe) e execute a ferramenta. 

A interface inicial é simples e limpa como podemos visualizar na imagem abaixo: 

GPInventory

Explicando as opções disponíveis na barra de menus: 

  • File > New query file: permite criar uma nova query com computadores + WMI definidas a serem executadas.
  • File > Open: abre um arquivo XML com queries WMI definidas a serem executadas.
  • File > Save: salva as configurações atuais computadores + WMI queries em um arquivo XML.
  • File > Save as…: mesma função anterior.
  • File> Exit: sai do GPInventory.
  • Query > Select computers to target from a text file: permite usar um arquivo TXT como entrada para os nomes dos computadores que serão alvos das WMI queries.
  • Query > Select computers to target using Active Directory: permite que os computadores sejam escolhidos por meio de OUs no Active Directory caso houve um ambiente com o  mesmo.
  • Query > Select information to gather: permite escolhermos quais WMI queries desejamos executar nos computadores alvos (já existem WMI queries default definidas mas é possível criar mais).
  • Query > Run query: Executa as WMI queries selecionadas nos computadores alvos.
  • Results > Save to an XML file: exporta o resultado para um arquivo XML.
  • Results > Save to an TXT file: exporta o resultado para um arquivos TXT.

Como pode ver, são opções simples as existentes na interface do GPInventory. Agora vamos ver como obter informações de um computador com a finalidade de realizar um inventária de hardware

O primeiro passo é saber qual é ou são os computadores alvos e quais informações se deseja saber. Como um teste local, crie um arquivo TXT chamado computer em seu Desktop

Abra o arquivo e nele digite o nome de seu computador. Salve em seguida e feche o arquivo. Agora na interface do GPInventory, use a opção Query > Select computers to target from a text file para usar este arquivo. 

O resultado será este abaixo: 

Host inserido no GPInventory

Agora que já temos um host alvo, iremos selecionar quais informações desejamos obter deste host. Use agora a opção Query > Select information to gather e iremos visualiza as seguintes opções de WMI Queries

WMI Queries - Part 1

WMI Queries - Part 2

Como podemos visualizar, por default já possuimos diversas WMI Queries configuradas no GPInventory, todas elas bem simples de serem compreendidas para qual é a sua finalidade. 

Vamos assumir que neste momento fosse necessário saber a versão do Sistema Operacional instalado, o modelo de processador e quantia de memória RAM no host

Seria necessário marcar a caixa a esquerda das seguintes WMI Queries e clicar no botão Ok: 

  1. WMI: Operation System
  2. WMI: Processor Name
  3. WMI: Processor Speed
  4. WMI: Computer Memory

Na imagem abaixo vemos que algumas colunas (WMI que selecionados anteriormente) foram inseridas na interface do GPInventory

WMI Queries selecionadas

Estamos prontos agora para executar as WMI Queries que selecionamos para obter as informações que desejamos. Pressione F5 ou então escolha a opção Query > Run query e aguarde o término da execução. 

No final teremos um resultado como este na interface do GPInventory

Resultado das WMI Queries

Perfeito, temos aqui as informações (Sistema Operacional, Tipo do processador, Clock em MHz e a quatia de memória em Bytes) que solicitamos ao GPInventory de forma rápida e simples. 

Tendo em mãos as informações, exporte o resultado para XML e abra com o Excel para tratar da forma que precisa estas informações. 

Entendendo como funcionam as WMI Queries 

Vamos ver aqui como é que o GPInventory obtem as informações por WMI. Navegue até o diretório C:\Program Files\Windows Resource Kits\Tools e abra o arquivo XML wmiqueries com o Notepad

Esté é o repositório onde estão todas as WMI Queries default do GPInventory que vimos anteriormente 

Repositório de WMI Queries

 Vamos entender agora a estrutura declarada de uma WMI Query em um arquivo XML. Tomemos como exemplo a seguinte string referente a Processor Name

<ManagedObject Name=”WMI: Processor Name” Query=”select Name from Win32_Processor”/> 

ManagedObject Name é usado para a exibição do nome da query. Este atributo pode ser alterado de acordo com a vontade do usuário sendo necessário editar o que está entre as aspas duplas. 

Por exemplo, se eu precisasse alterar o nome desta query anteriormente mencionada, eu poderia chamá-la de “Nome do Processador” deixando-a da seguinte forma: 

<ManagedObject Name=”Nome do Processador” Query=”select Name from Win32_Processor”/> 

Query indica quais são os parâmetros selecionados e qual é a query WMI que será executada: 

Query=”select parametro1,paramentro2,etc. from wmiquery” 

A Microsoft implementa nativamente estas queries na plataforma Windows, sendo apenas necessário que o serviço Windows Management Instrumentation esteja em execução no host local e/ou remoto onde a query será executada. 

Cada WMI Query possui diversas informações que podem ser extraídas de um host. A seguir temos todos os parametros que podemos obter de um processador usando a classe WMI Query Win32_Processor e também o tipo e cada um destes parametros: 

class Win32_Processor : CIM_Processor
{
  uint16   AddressWidth;
  uint16   Architecture;
  uint16   Availability;
  string   Caption;
  uint32   ConfigManagerErrorCode;
  boolean  ConfigManagerUserConfig;
  uint16   CpuStatus;
  string   CreationClassName;
  uint32   CurrentClockSpeed;
  uint16   CurrentVoltage;
  uint16   DataWidth;
  string   Description;
  string   DeviceID;
  boolean  ErrorCleared;
  string   ErrorDescription;
  uint32   ExtClock;
  uint16   Family;
  datetime InstallDate;
  uint32   L2CacheSize;
  uint32   L2CacheSpeed;
  uint32   L3CacheSize;
  uint32   L3CacheSpeed;
  uint32   LastErrorCode;
  uint16   Level;
  uint16   LoadPercentage;
  string   Manufacturer;
  uint32   MaxClockSpeed;
  string   Name;
  uint32   NumberOfCores;
  uint32   NumberOfLogicalProcessors;
  string   OtherFamilyDescription;
  string   PNPDeviceID;
  uint16   PowerManagementCapabilities[];
  boolean  PowerManagementSupported;
  string   ProcessorId;
  uint16   ProcessorType;
  uint16   Revision;
  string   Role;
  string   SocketDesignation;
  string   Status;
  uint16   StatusInfo;
  string   Stepping;
  string   SystemCreationClassName;
  string   SystemName;
  string   UniqueId;
  uint16   UpgradeMethod;
  string   Version;
  uint32   VoltageCaps;
}; 

Cada atributos da classe Win32_Processor deve ser separada por uma virgula ( , ) quando inserida no arquivo XML. Você pode brincar com os parametros inserindo-os no arquivo wmiqueries.xml.

IMPORTANTE! Faça uma cópia de segurança do arquivos e depois brinque editando-o e executando as queries em seu host local.

Como descobrir quais as classes WMI queries que o Windows suporta e quais o atributos destas classes?

Há uma repositório da Microsoft onde podemos verificar todas as WMI Queries disponíveis que podem ser utilizadas. Este repositório pode ser acessado no link abaixo: 

Microsoft Library – Win32 Classes 

Neste repositório você encontrará não somente as classes para o sistema operacional como também outros tipos, para hardware por exemplo. 

É uma ótima base de conhecimento e uma excelente forma de verificar quais atributos podem ser utilizados para obter as informações das quais precisa em um ou vários hosts remotos. 

Dica: Para quem possui um ambiente Active Directory, é simples o processo. Exporte o conteúdo do container onde estão os nomes do servidores e/ou workstations para um arquivo txt e importe para o GPInventory como realizamos no inicio com o teste local. 

NOTA: Se houverem descrições para cada servidor/workstations, será necessário remover estas informações do arquivo TXT. O mesmo deve conter somente os nomes dos hosts, um em cada linha para que seja possível utilizar o GPInventory.

Informação EXTRA!

Está fora do escopo deste post, mas como o GPInvenroty também trabalha com WMI para obter informações sobre GPOs, aqui também está o repositório onde há todas as classes WMI que podem ser utilizadas: 

Microsoft Library – RSoP WMI Classes 

Muito bem meu caro leitor, este é o fim de mais uma dica de utilidade diária para profissionais em IT. 

Espero que aproveitem as informações e quem tornem mais produtivo seu dia a dia. 

Até o próximo post e muito obrigado!

%d blogueiros gostam disto: