Finally the help of IT is here

Blog de soluciones informaticas.

Detectar errores visor de sucesos desde Powershell

Posteado por Xavier Xaus Nadal on 13th Mayo 2012

Buenas.

Hoy vamos poner algo de powershell.

Este artículo explica como recoger remotamente un evento del visor de sucesos de windows de un equipo o grupo de equipos desde una línea de comandos Powershell y además en Onliner, jeje como me gusta a mí..

Recordáis el artículo http://www.megacrack.es/2008/11/16/como-resolver-problema-con-jrnl_wrap_error-frs-event-id-13568-o-13561/ donde demostrábamos como solventar un error con la replicación de Active Directory del sysvol?, pues con este script podremos detectar remotamente este tipo de errores sin tener que esperar a que un usuario nos diga que su script no funciona por que no lo detecta, o que una política de dominio no se está aplicando por que no existe en algún site, etc..

Lo que vamos a hacer con este script es comprobar los últimos 2 días de logs del visor de eventos del “File Replication Service” como source “NtFrs” y como tipo de error “Error” y también forzaremos a que únicamente nos muestre los errores de tipo “13568” y que únicamente nos muestre el más nuevo para ajustarnos a las preferencias de detectar el error de replicación de active directory (Vosotros podréis poner lo que queráis como por ejemplo detectar si las bases de datos de Exchange se han apagado por culpa de que el log de transacciones se haya llenado) con los siguientes valores:

Type: Error

Event ID: 9518

Source: MSExchangeIS

Pero de momento lo que vamos a buscar nosotros son los problemas con el FRS y lo que buscamos es lo siguiente:

Type: Error

Event ID: 13568

Source: NtFrs

Lo haremos de esta forma:

get-eventlog -newest 1 -after (get-date).AddDays(-2) –computername <NombreEquipo> -logname "File Replication Service" -source "NtFrs" -entrytype "Error" | where{$_.EventId -eq ‘13568’} | select machinename,source | ftautosize

El resultado si detectara que ha habido un error en los últimos 2 días en el apartado File Replication Service con source NtFrs, de tipo Error y con el código de evento 13568 sería el siguiente:

MachineName Source

———–         ——

MegaDC1        NtFrs

A partir de ahí ya podremos solventar el problema  con el siguiente artículo por ejemplo: http://www.megacrack.es/2008/11/16/como-resolver-problema-con-jrnl_wrap_error-frs-event-id-13568-o-13561/

Pero si lo que queréis es detectar esto mismo en todos los domain controllers del dominio deberéis modificar –computername <NombreEquipo> por:

-computername (get-qadcomputer -searchroot "<dominio>Domain Controllers" –dudip | Select-Object -ExpandProperty Name)

Cuidado que esta última modificación que lo hará sobre todos los domain controllers que tengáis y tardará muchísimo, (Deberéis tener instaladas las herramientas de Quest Active Roles Management) pensad que lo hacemos remotamente y que no usamos hebras de procesos (Esto ya os lo mostrará otro de los miembros del blog que es más que experto en Powershell) A ver si se anima.. Albert!!!!!, te queremos leer en MegaCracks…

También podéis ejecutar el comando en cada servidor diariamente y que envíe un email con los resultados a una dirección de correo o lo envíe hacia un fichero que será recogido por un IIS y mostrado en una web como si de un monitor de eventos centralizado se tratara, o lo que vuestra imaginación os ofrezca… El mundo del powershell es impresionante, pero más lo es cuando lo unes con automatizaciones, monitores, webs, etc..

Si tenéis cualquier pregunta al respecto estaremos encantados de daros soporte desde los comentarios del bog.

Hasta la próxima.

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Posteado por Error, Exchange, PowerShell, powershell | No Comments »

Listar usuarios que han añadido equipos al dominio.

Posteado por Xavier Xaus Nadal on 12th Mayo 2012

Buenos días.

Hoy os explicaremos un script desarrollado en Powershell que lo único que hace es sacar un listado de el equipo agregado al dominio y el usuario que lo ha introducido.

Y quizá os preguntaréis para que nos sirve esto?

Pues bien, si tenéis una estructura de Active Directory “sin retoques” es decir las nuevas máquinas que introducís en el dominio son almacenadas en el contenedor computers en lugar de en una unidad organizativa (OU) dentro de una estructura de país, ciudad, departamento, etc…, y en algún momento necesitáis detectar quien ha agregado este equipo en el dominio para preguntarle a esa persona para que empresa iba o que tipo de equipo es, para posteriormente ordenarlo en AD, simplemente ejecutando este script podréis detectar que máquina y que persona es la responsable de la inclusión al dominio.

Para ello necesitaréis disponer de powershell y de Active Roles Managment instalado o añadir la siguiente línea de texto al principio del script.

add-PSSnapin quest.activeroles.admanagement

El script es el siguiente y ha sido desarrollado (por uno de nuestros colaboradores del blog al que le gusta vivir en el anonimato) y mejorado por uno de los mejores Powershell scripters del mundo el cual en los últimos Scripting Games 2012 quedó 4º en la LeaderBoard (Albert Fortes).

$Result=@(Get-QADComputer -Searchr "<dominio>/computers" | Select @{Expression={$_.Name};Name="Computer"},@{Expression={((Get-QADPermission -Identity ($_.CanonicalName) -WarningAction:SilentlyContinue | Select Account -Unique).Account | Select Samaccountname).Samaccountname };Name="Username"})

 

$Result | ft –AutoSize

El script está comprobado (No tengáis miedo al ejecutarlo, únicamente es una query hacia active directory un poco complicada de explicar..) El que esté intrigado lo puede postear en los comentarios..

Espero que os haya sido útil.

Tags: , , , ,
Posteado por Active Directory, equipos, PowerShell, powershell | No Comments »