WMI. Fuente inagotable de información

La definición de Microsoft de WMI es la que sigue. Instrumental de administración de Windows (WMI) es un componente del sistema operativo Windows que permite obtener acceso mediante programación a información de administración en un entorno empresarial. WMI en .NET Framework se basa en la tecnología WMI original y permite el mismo desarrollo de aplicaciones y proveedores, además de las ventajas que ofrece la programación en .NET Framework.
En mi opinión, WMI es espectacular. Cualquier información que queráis obtener de cualquier sistema windows, WMI la proporciona, desde el nombre del sistema operativo de una máquina, pasando por la memoria ram que tiene, las tarjetas de red, configuración de cualquier cosa del sistema, performance, servicios, tareas, services packs instalados, software instalado, etc. etc. etc….

La arquitectura de WMI consta de los niveles siguientes:

  • Los componentes de software cliente realizan operaciones mediante WMI, como leer detalles de administración, configurar sistemas y realizar suscripciones a eventos.
  • El administrador de objetos es un intermediario entre los proveedores y los clientes que proporciona ciertos servicios esenciales, como la publicación y suscripción estándar de eventos, el filtrado de eventos, motor de consultas y otros servicios.
  • Los componentes de software de proveedor capturan y devuelven datos activos a las aplicaciones cliente, procesan llamadas a métodos procedentes de los clientes y vinculan al cliente con la infraestructura que se está administrando.

A continuación muestro un pequeño ejemplo de cómo recuperar información con WMI y mostrarla en un treeview. Lo único extraño que pueden ver en el código es que no utilizo el TreeView que viene con Visual Studio sino uno de otro fabricante, simplemente lo he utilizado porque el de VS no permite retornos de carros, de resto todo normal. Simplemente recupero alguna información como nombre de máquina, microprocesador, video y discos. Pero ya digo, cualquier información del sistema se puede recuperar.

Código:

Public Class WMI

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
‘ RECOPILACION DE DATOS
Me.InformacionGeneral()
Me.Micro()
Me.Video()
Me.Discos()
Me.UltraTree1.ExpandAll()
End Sub
Private Sub InformacionGeneral()
‘ INFORMACION GENERAL

Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2”, _
“SELECT * FROM Win32_ComputerSystem”)

For Each queryObj As ManagementObject In searcher.Get()
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode
_Node.Text = “Nombre PC:” & queryObj(“Name”).ToString & ControlChars.CrLf & _
“Fabricante:” & queryObj(“Manufacturer”).ToString & ControlChars.CrLf & _
“Modelo: ” & queryObj(“Model”).ToString & ControlChars.CrLf & _
“Tipo: ” & queryObj(“SystemType”).ToString & ControlChars.CrLf & _
“Memoria: ” & queryObj(“TotalPhysicalMemory”).ToString

Me.UltraTree1.Nodes(0).Nodes.Add(_Node)
Next
Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
End Try
End Sub
Private Sub Micro()
‘ MICROPROCESADOR
Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2”, _
“SELECT * FROM Win32_Processor”)

Dim _Cantidad As Byte
Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode

For Each queryObj As ManagementObject In searcher.Get()

_Node.Text = “Modelo:” & queryObj(“Name”).ToString & ControlChars.CrLf & _
“Velocidad:” & queryObj(“CurrentClockSpeed”).ToString & ” Mhz.” & ControlChars.CrLf
_Cantidad = +1
Next

_Node.Text = _Node.Text & “Cantidad: ” & _Cantidad.ToString
Me.UltraTree1.Nodes(1).Nodes.Add(_Node)

Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
End Try
End Sub

Private Sub Video()
‘ VIDEO
Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2”, _
“SELECT * FROM Win32_DisplayConfiguration”)

Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode

For Each queryObj As ManagementObject In searcher.Get()

_Node.Text = “Modelo:” & queryObj(“Caption”).ToString & ControlChars.CrLf & _
“Frecuencia:” & queryObj(“DisplayFrequency”).ToString & ControlChars.CrLf

Next

Me.UltraTree1.Nodes(2).Nodes.Add(_Node)

Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
End Try
End Sub
Private Sub Discos()
‘ DISCOS
Try
Dim searcher As New ManagementObjectSearcher( _
“root\CIMV2”, _
“SELECT * FROM Win32_DiskDrive”)

Dim _Node As New Infragistics.Win.UltraWinTree.UltraTreeNode

For Each queryObj As ManagementObject In searcher.Get()

_Node.Text = _Node.Text & “Nombre: ” & queryObj(“Caption”).ToString & ControlChars.CrLf & _
“Tipo:” & queryObj(“InterfaceType”).ToString & ControlChars.CrLf & _
“Particiones:” & queryObj(“Partitions”).ToString & ControlChars.CrLf

Next

Me.UltraTree1.Nodes(3).Nodes.Add(_Node)

Catch err As ManagementException
MessageBox.Show(“Error recuperando información WMI: ” & err.Message)
Catch err As Exception
End Try
End Sub
End Class

Si se fijan, lo único que hay que hacer es una query sobre la clase WMI que se quiere consultar. Y ahora se preguntarán, ¿como sabré qué clase es la que debo consultar para lo que yo quiero hacer? No hay problema, aparte de la documentación de MSDN Microsoft nos proporciona una herramienta que pueden bajarse aquí y que incluye todas las clases y objetos de WMI. Y no sólo eso sino además genera código VBScript, VB.Net y C# listo para usar.

Realmente creo que WMI es fantástico, yo, para controlar el hardware y software instalado en mi empresa, he desarrollado un servicio que se instala en las máquinas y que alimenta una base de datos informando de todo aquello que me interesa saber de mi parque informático. Ahora no tengo que ir máquina a máquina para saber que memoria tiene o por ejemplo saber cuan viejo es mi parque partiendo de los micros instalados. Antes lo llevaba en papel y relamente era inoperante.

Espero que les sirva.

Anuncios

0 Responses to “WMI. Fuente inagotable de información”



  1. Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s




diciembre 2006
L M X J V S D
« Nov    
 123
45678910
11121314151617
18192021222324
25262728293031

Sindicación

NetMania y la Web

Internet Blog Serial Number 01-10-2006-02

Licencia

Creative Commons License
Esta obra está bajo una licencia de Creative Commons


Otros


Añadir a Favoritos de Technorati

Añadir a Netvibes

Añadir a Google

Unión de Bloggers Hispanos

nubes

Anuncios

A %d blogueros les gusta esto: