viernes, 23 de noviembre de 2012

Buscar equipos según el Service Pack Versión 2012

Anteriormente, publiqué una entrada en donde mostraba como buscaba equipos en un dominio para verificar el Service Pack del sistema operativo.

Claro que eso fue en Noviembre de 2009! Un largo tiempo en términos informáticos. Aunque ese procedimiento aún es válido, en el 2012 hacemos todo con PoweShell.

El cmdlet que utilizaremos es Get-AdComputer, el cual está incluido en el módulo de PowerShell para Active Directory. Si la consola de PowerShell que estamos utilizando no tiene los cmdlets de AD, podemos importar el modulo (Figura 1) con otro cmdlet:

Import-Module ActiveDirectory
Figura 1

Primero realizamos la consulta para ver todos los equipos (-Filter *), todas las propiedades (-Properties *), y en un formato de tabla (ft) buscamos nombre, sistema operativo, service pack, IP y fecha de la última vez que el equipo inició sesión (Figura 2).

Get-ADComputer -Filter * -Properties * | ft Name, OperatingSystem, OperatingSystemServicePack , *IPv4* ,LastLogonDate* -AutoSize

Figura 2

En esta tabla rápidamente podes ver varios datos:
1-BPSARGTestPC no tiene ningún valor en Operating System, lo que indica que nunca se unió al dominio pero existe en AD una cuenta de equipo.
2-Algunos equipos no se validan hace casi dos años, por lo que seguramente son cuentas de equipo que deberíamos depurar o deshabilitar.
3-Podemos obtener la IP de los equipos en forma remota.

Seguramente, en un entorno mediano o grande, es impráctico ver todos los equipos por pantalla, por lo que tenemos dos opciones.

A) Acotar nuestra búsqueda, por ejemplo a equipos con Windows XP con Service Pack 2 (Figura 3)

Get-ADComputer -Filter 'OperatingSystem -like "*XP*" -and OperatingSystemServicePack -like "*2*"' -Properties * | ft Name, OperatingSystem, OperatingSystemServicePack, *IPv4*, LastLogonDate* -AutoSize
 
Figura 3

B) Enviar el resultado de la búsqueda a un archivo .CSV (Figura 4)

Get-ADComputer -Filter 'OperatingSystem -like "*XP*" -and OperatingSystemServicePack -like "*2*"' -Properties * | Select Name, OperatingSystem, OperatingSystemServicePack, *IPv4*, LastLogonDate* | Export-Csv C:\Temp\ADComputerInfo.csv


Figura 4

Cambiando los valores que fueron ingresados en el cmdlet anterior, podemos buscar equipos con diferente sistema operativo o service pack según la necesidad que exista.

En estos ejemplos solo trabajamos con algunas propiedades, pero podemos hacer consulta de muchas otras. Para ver la lista completa de propiedades podemos utilizar el cmdlet Get-ADComputer

Get-ADComputer -Properties *

Para aprender más...

miércoles, 14 de noviembre de 2012

Mailbox Database Resynchronizing Forever

Recientemente en Distus necesitábamos crear unas Mailbox Databases de Exchange Server 2010. Estas bases debían contar con alta disponibilidad, por lo que se las agregó a un DAG. La copia activa en el servidor DISARWEX203 y la copia pasiva en el servidor DISARWEX202.

Cuando utilizamos el cmdlet get-MailboxDatabaseCopyStatus, vimos que la base pasiva quedaba en un estado de Resynchronizing eterno (Figura 1).

Figura 1  



Hacer un update a la copia pasiva o incluso borrarla y volver a crearla no solucionaba el problema.

El inconveniente se presentó porque cada miembro del DAG que contenía una copia de la MailboxDatabase utiliza un Domain Controler diferente al ser un DAG geodistribuido. El cmdlet add-MailboxDatabaseCopy realiza configuraciones en cada miembro interviniente en la operación, efectuando una escritura en diferentes Domain Controlers que no replican entre ellos en forma instantánea, pues pertenecen a diferentes sites AD.

La solución fue suspender la replicación, quitar la copia pasiva, borrar manualmente los archivos que estaban en el server que tenía la copia pasiva, y volver a agregarla, seleccionando en cada operación cual Domain Controler utilizar (Figura 2).

Figura 2


También es posible suspender la replicación, forzar un update, optar por la opción que permite borrar los archivos que están en el servidor que contiene la copia pasiva e indicar qué Domain Controler utilizar (Figura 3).

Figura 3