Exponha os segredos do sistema WMI API com o VBA
Autor: Sales Force Effectiveness | Publicado: 2017-02-14T16:47:00-02:00


Exponha os segredos do sistema WMI API com o VBA






A API WMI (&nbsp;Windows Management Instrumentation&nbsp;) expõe uma grande variedade de informações dos PCs, incluindo aqueles computadores e servidores que estão remotos.&nbsp;Expor tais técnicas pretende automatizar o WMI como um meio de automatizar as tarefas administrativas nos computadores remotos. Segue uma lista curta de coisas que o WMI pode fazer.

Inicia um processo em um computador remoto.
Agenda um processo para ser executado em horários específicos em dias específicos.
Reinicia um computador remotamente.
Consulta os logs de eventos do Windows em um computador local ou remoto.
Obtém uma lista de computadores locais ou remotos de:

Aplicações
Componentes de Hardware
Discos, Capacidades e Espaço Livre
Usuários locais e de domínio
Impressoras e Configurações de Impressora
Configurações de rede



Com o VBA, o Excel pode acessar o WMI e se tornar uma ferramenta poderosa para técnicos de PC, administradores de rede e auditores de sistema








Quer um vislumbre?

Segue uma pequena rotina que lista a configuração do adaptador de rede do seu PC.&nbsp;Carregue-o num módulo.&nbsp;Execute-o.&nbsp;Agora considere que olhar para o adaptador de rede&nbsp;WMI poderá fazer muito mais do que apenas isso (e isso sim, é assustador).





Sub WMI()&nbsp;


Dim oWMISrvEx As Object 'SWbemServicesEx&nbsp;

Dim oWMIObjSet As Object 'SWbemServicesObjectSet&nbsp;

Dim oWMIObjEx As Object 'SWbemObjectEx&nbsp;

Dim oWMIProp As Object 'SWbemProperty&nbsp;

Dim sWQL As String 'WQL Statement&nbsp;

Dim n As Long 'Generic Counter&nbsp;

sWQL = "Select * From Win32_NetworkAdapterConfiguration"&nbsp;

Set oWMISrvEx = GetObject("winmgmts:root/CIMV2")&nbsp;

Set oWMIObjSet = oWMISrvEx.ExecQuery(sWQL)&nbsp;

For Each oWMIObjEx In oWMIObjSet&nbsp;

'Put a STOP here then View &gt; Locals Window to see all properties&nbsp;

If Not IsNull(oWMIObjEx.IPAddress) Then&nbsp;

Debug.Print "IP:"; oWMIObjEx.IPAddress(0)&nbsp;

Debug.Print "Host name:"; oWMIObjEx.DNSHostName&nbsp;

For Each oWMIProp In oWMIObjEx.Properties_&nbsp;

If IsArray(oWMIProp.Value) Then&nbsp;

For n = LBound(oWMIProp.Value) To UBound(oWMIProp.Value)&nbsp;

Debug.Print oWMIProp.Name &amp; "(" &amp; n &amp; ")", oWMIProp.Value(n)&nbsp;

Next&nbsp;

Else&nbsp;

Debug.Print oWMIProp.Name, oWMIProp.Value&nbsp;

End If&nbsp;

Next&nbsp;

End If&nbsp;

Next&nbsp;

End Sub





Quer ver mais?



Aqui está uma planilha que facilita a exploração de várias centenas de classes contendo informações sobre a CPU, unidades de disco, memória, sistema operacional, aplicativos, usuários e muito, muito mais.&nbsp;E pode consultar PCs e&nbsp;também&nbsp;servidores remotos, supondo que tenha as credenciais:&nbsp;WMI Query.xlsm.







Usos do WMI Query.xlsm

Inventário de todos os PCs em uma rede incluindo todo o hardware e software usado:

Win32_SystemEnclosure&nbsp;-&nbsp;Fabricante do&nbsp;PC e número de série
Win32_LogicalDisk&nbsp;- Discos com capacidades e espaço livre.
Win32_Processor&nbsp;-&nbsp;Especificações do&nbsp;CPU
Win32_PhysicalMemoryArray&nbsp;- RAM / tamanho da memória instalada
Win32_VideoController&nbsp;-&nbsp;Adaptador&nbsp;gráfico e&nbsp;configurações
Win32_OnBoardDevice&nbsp;- Dispositivos da&nbsp;placa&nbsp;-mãe
Win32_OperatingSystem&nbsp;- Qual versão do Windows com Número de Série
WIn32_Printer&nbsp;- Impressoras instaladas
Win32_Product&nbsp;- Software instalado

WIn32_Account&nbsp;- Listar todas as contas de usuário em um PC ou domínio
Win32_ComputerSystem&nbsp;- Veja quem está usando um PC remoto (também&nbsp;Win32_LoggedOnUser&nbsp;)
Win32_BaseService&nbsp;- Listar os serviços em execução (ou&nbsp;interrompidos&nbsp;) em qualquer PC,&nbsp;juntamente&nbsp;com o caminho do serviço e o nome do arquivo.
E centenas de coisas mais!






Leia as referências abaixo para saber mais sobre o que esta API pode fazer.





Introduções:Introdução ao Scripting:&nbsp;http://technet.microsoft.com/en-us/scriptcenter/dd940112.aspxScript de Sesame:&nbsp;http://technet.microsoft.com/en-us/library/ee176991.aspxWMI Introdução:&nbsp;http://msdn.microsoft.com/en-us/library/aa394582(v=vs.85).aspxADSI Scripting Primer:&nbsp;http://technet.microsoft.com/library/ee156524.aspxScripting Guys:&nbsp;http://blogs.technet.com/b/heyscriptingguy/archive/2005/06/28/how-can-i-list-all-the-attributes-used-by-the-computer-class-in -active-directory.aspx

Referências:WMI Scripting Primer:&nbsp;http://technet.microsoft.com/library/ee156560.aspxWMI Introdução:&nbsp;http://msdn.microsoft.com/en-us/library/aa394582(v=vs.85).aspx

Referência WMI:&nbsp;http://msdn.microsoft.com/en-us/library/aa394572(v=vs.85).aspxWMI Win32 Classes:&nbsp;http://msdn.microsoft.com/en-us/library/aa394084(v=vs.85).aspxObjetos da API de script WMI:&nbsp;http://msdn.microsoft.com/en-us/library/aa393259(v=vs.85).aspxMétodo WMI ExecQuery:&nbsp;http://msdn.microsoft.com/en-us/library/aa393866(v=vs.85).aspx

Propriedades da classe WMI NetworkAdapterConfiguration&nbsp;http://msdn.microsoft.com/en-us/library/aa394217(v=vs.85).aspx

Exemplos de script:Exemplos de Dan Elgaard:&nbsp;http://www.excelgaard.dk/Lib/USERINFO/Exemplos de script WMI:&nbsp;http://msdn.microsoft.com/en-us/library/aa394585(v=vs.85).aspx

Consulta WMI por exemplo:&nbsp;http://www.codeproject.com/Articles/46390/WMI-Query-Language-by-ExampleGaleria Technet:&nbsp;http://gallery.technet.microsoft.com/scriptcenter/b03c3611-36eb-4979-baf1-432e53c43f93Active Directory:&nbsp;http://www.billrowell.com/2009/09/10/properties-in-a-active-directory-computer-object/





Envie seus comentários&nbsp;e sugestões&nbsp;e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;