Últimamente en nuestro equipo de soporte hemos estado recibiendo muchas consultas y problemas relacionados con WMI. Dado que este componente está siendo utilizado últimamente por varias aplicaciones y cada vez lo será más, creo que va a ser de mucha utilidad para todos la siguiente serie de posts que les presento.
Estarán divididos dado que es mucho material para un solo post.
Cubriremos:
Arquitectura Básica de WMI
Accediendo al repositorio WMI
Pasos Básicos de Troubleshoot de WMI
Troubleshoot de Problemas de Performance de WMI
Hoy comenzaremos con los aspectos básicos de la arquitectura de WMI
Que es el WMI? WMI es un sistema basado en el standard Web-based Enterprise Management (WBEM). Con el podemos acceder a gran cantidad de información almacenada en nuestro sistema operativo Windows. Este acceso a esta información puede ser realizado mediante scripts, .Net (clase system.management) o por líneas de comando.
Podemos dividir la arquitectura de WMI de la siguiente forma:
Como vemos en el punto 2, la estructura de WMI está dividida en 2, el servicio de WMI (winmgmt) y el Repositorio.
El repositorio usa namespace que contienen a su vez sub-namespaces y estos están ordenados en una jerarquía de objetos. Las aplicaciones se conectan primero a un namespace y luego a través de ese namespace puede acceder a los objetos.
El comienzo de estos namespace esta dado desde ROOT/ Luego al iniciar el servicio de WMI se crean namespaces como ROOT/DEFAULT ROOT/CIMV2 . Como vemos en el grafico, el servicio de WMI es el intermediario entre los Providers, las aplicaciones y el repositorio.
Este repositorio aloja información estática de objetos como las clases definidas por los objetos y toda esta información obtenida de los providers cuando el cliente lo requiere.
Un Provider es un objeto COM que controla los objetos de WMI. Este objeto es un componente que puede ser un disco rigido, una tarjeta de red o un servicio. El Provider entrega al WMI la información sobre el objeto y controla los mensajes de los mismos.
Los Providers son una DLL y un fichero Managed Object Format (MOF) que define las clases para el Provider. Los Providers son clasificados por el WMI de acuerdo a lo que realiza el provider.
Clasificaciones
Descripción
Clase
Puede entregar, modificar, eliminar y listar una clase especifica. También soporta las queries realizadas. Por ejemplo el Directorio Activo es un ejemplo de un servicio que también entrega clases.
Instancia
Puede entregar, modificar, eliminar y listar una instancia especifica. Una instancia representa a un objeto. También soporta que se le realicen queries.
Propiedad
Puede entregar y modificar los valores de las propiedades de los objetos.
Metodo
Métodos específicos para clases de un provider.
Evento
Genera eventos de notificaciones.
“Event Consumer”
Crea una relación entre el objeto físico y el objeto lógico para poder crear la notificaciones de eventos.
Por último, debemos hablar de Common Information Model (CIM) y de los ficheros Managed Object Format (MOF).
CIM es un modelo para lenguajes orientados a objetos como C++ y Java. Los desarrolladores de WMI escriben sus clases en lenguaje MOF, una vez que estas clases están estructuradas en MOF, los desarrolladores pueden dar definiciones a las clases.
Esto se hace compilando un fichero MOF en un binario (BMF) e introduciéndola dentro del Windows Driver Model (WDM).
Los Providers se pueden compilar también en MOF y utilizar las APIs de WMI COM para crear la estructura de WMI con sus definiciones.
Finalmente, los Providers pueden usar un compilador MOF (mofcomp.exe) para agregar las clases al repositorio WMI.
Nos vemos en el próximo post
Saludos
Gastón Gardonio
TAGs: WMI arquitectura, basico, providers
Hola a todos.
En ocasiones, es posible que necesitemos inventariar los usuarios y/o grupos que tenemos en nuestro Directorio Activo.
En función del método que empleemos para extraer información, puede ser que los resultados obtenidos no sean los correctos o estén incompletos.
Sea, por ejemplo, el grupo big_group (un grupo Global de Seguridad en el dominio) que tiene unos 2000 miembros aproximadamente.
Si intentamos listar los miembros que tiene, obtenemos los siguientes resultados:
dsget group
En este caso, como podemos ver en la captura, la salida de la herramienta no nos devuelve resultados:
ldp.exe
La herramienta ldp.exe trunca los resultados obtenidos, no mostrando la totalidad de miembros del grupo:
Expanding base 'CN=big_group,CN=Users,DC=testdom,DC=local'...
Result <0>: (null)
Matched DNs:
Getting 1 entries:
>> Dn: CN=big_group,CN=Users,DC=testdom,DC=local
2> objectClass: top; group;
1> cn: big_group;
0> member:
1500> member;range=0-1499: CN=user1,CN=Users,DC=testdom,DC=local; CN=user2,CN=Users,DC=testdom,DC=local; CN=user3,CN=Users,DC=testdom,DC=local; CN=user4,CN=Users,DC=testdom,DC=local; CN=user5,CN=Users,DC=testdom,DC=local;...
A través de la herramienta ntdsutil, podemos controlar una serie de parámetros para las políticas LDAP de los DCs del dominio.
Entre otros, tenemos la posibilidad de alterar el valor del parámetro MaxValRange el cual controla el número de valores que se devuelve en una query para cualquier atributo de un objeto en el AD.
Sin embargo, hemos de tener en cuenta diversas consideraciones antes de realizar cualquier cambio en estas políticas:
· Las políticas de LDAP son comunes a todos los DCs del forest. No es posible tener distintos DCs con valores distintos para cada parámetro.
· El hecho de incrementar el número máximo de valores por atributo que nos devuelve un DC (MaxValRange), puede provocar un impacto en el rendimiento de los Controladores de Dominio.
Este valor tomará efecto para todos los atributos de todos los objetos del Directorio Activo, y no sólo para miembros de un grupo o para otro atributo concreto que nos interese.
Tenéis disponible más información sobre el tema aquí:
315071 - How to view and set LDAP policy in Active Directory by using Ntdsutil.exe
http://support.microsoft.com/kb/315071
[…]
• MaxValRange - This value controls the number of values that are returned for an attribute of an object, independent of how many attributes that object has, or of how many objects were in the search result. In Windows 2000, this control is "hard" coded at 1,000. If an attribute has more than the number of values that are specified by the MaxValRange value, you must use value range controls in LDAP to retrieve values that exceed the MaxValRange value. MaxValueRange controls the number of values that are returned on a single attribute on a single object.
Default value:
o Windows 2000 - 1,024
o Windows Server 2003 - 1,500
Como alternativa, y en caso de necesitar un listado de todos los miembros de un grupo (p.ej. de más de 1500 usuarios en Windows Server 2003), os proponemos el uso de scripts para realizar la tarea.
En el siguiente enlace podéis encontrar un ejemplo de implementación de esto:
Scripting Guy: List members of a group
http://www.microsoft.com/technet/scriptcenter/resources/qanda/apr05/hey0419.mspx
[…] It’s easy enough to list all the members of a group; for example, here’s a script that reports back all the members of the Finance Managers group:
Set objGroup = GetObject _ ("LDAP://cn=Finance Managers, ou=Finance, dc=fabrikam, dc=com") For Each strUser on objGroup.Member Wscript.Echo strUser Next
Un saludo a todos,
Javier Rama
Mañana 14 de abril de 2009 dejará de tener soporte la versiones de Windows 2003 con Service Pack 1.
Mañana hará 24 meses en el que el Service Pack 2 de Windows 2003 está disponible para ser descargado. Las políticas del ciclo de vida de los service packs detallan cada cuanto tiempo los productos quedan fuera del soporte.
Lifecycle Supported Service Packs
http://support.microsoft.com/default.aspx?scid=fh;%5bln%5d;lifesupsps
Producto:
Disponible desde:
Service Pack queda sin Soporte:
Windows Server 2003 Service Pack 0 (RTM)
28-May-2003
10-Apr-2007
Windows Server 2003 Service Pack 1
30-Mar-2005
14-Apr-2009
Windows Server 2003 Service Pack 2
13-Mar-2007
24 meses luego del próximo SP*
*Son 24 meses luego del próximo service pack o del fin del ciclo de vida del producto. Puedes obtener más información en el siguiente enlace:
http://support.microsoft.com/lifecycle/default.aspx#service%20pack%20support
Últimamente hemos recibido varios casos donde los equipos todavía seguían el Windows 2003 con Service Pack 1. A todos ellos le hemos comentado que dichos equipos iban a quedar fuera de soporte y de todos ellos han surgido diferentes dudas.
Que sucede si tengo un problema con el equipo y este posee el Service Pack 1?
Lamentablemente el equipo de soporte de Microsoft no va a poder prestar soporte a dicho equipo hasta que el mismo este dentro de soporte.
Microsoft tiene a disposición de todos la descarga del Windows 2003 Service Pack 2 desde el siguiente link:
http://technet.microsoft.com/en-us/windowsserver/bb229701.aspx
Cuál es la mejor alternativa para instalar o distribuir el Service Pack 2?
Existen diferentes alternativas para instalar el Service Pack 2. Dependiendo de su entorno puede optar por las siguientes:
Directamente desde Windows Update http://windowsupdate.microsoft.com/
Utilizando WSUS
Utilizando SMS http://support.microsoft.com/kb/926030
Que precauciones tengo que tener a la hora de instalar el Service Pack 2?
En la siguiente pagina podrán obtener las recomendaciones que deben tener para instalar el Service Pack 2.
http://technet.microsoft.com/en-us/library/cc755981.aspx
Que problemas puedo llegar a tener luego de instalar el Service Pack 2?
No podemos decir a ciencia cierta que problemas puede llegar a tener si actualiza su equipo a Service Pack 2. Microsoft recomienda que luego de actualizar su equipo a Service Pack 2, actualice el mismo también con todos los parches de seguridad y de actualizaciones disponibles.
También tenga en cuenta que sus controladores de terceros pueden no ser compatibles con Windows 2003 Service Pack 2, por lo cual le recomendamos estar en contacto con su proveedor y actualizar los controladores a la versión que el mismo le indique.