¿Que buzones puedo borrar?

Pues sencillo a la par que efectivo.

Para Exchange Server 2010 / 2007

To TXT:

Get-Mailbox -Org “domain.local/Users/Finance” | Get-MailboxStatistics | sort lastlogontime -descending| ft Displayname,last* > C:\somefile.txt

TO CSV:

Get-Mailbox -Org “domain.local/Users/Finance” | Get-MailboxStatistics | sort lastlogontime -descending| select Displayname,last* | Export-Csv C:\somefile.csv -NoTypeInformation

——————————————————————————–

To TXT:

Get-Mailbox -Org “domain.local/Users/Finance” | Get-MailboxStatistics | sort lastlogontime -descending| ft Displayname,last* > C:\somefile.txt

TO CSV:

Get-Mailbox -Org “domain.local/Users/Finance” | Get-MailboxStatistics | sort lastlogontime -descending| select Displayname,last* | Export-Csv C:\somefile.csv -NoTypeInformation

——————————————————————————–

Este es un poco más completo ya que te indica en que servidor esta cada Mailbox

To TXT:

$Days = 60

$TimeLimit = (Get-Date).AddDays(-$Days)

get-mailboxdatabase | get-mailboxstatistics | where-object {(get-mailboxstatistics $_.LegacyDN).LastLogonTime -eq $NULL -or (get-mailboxstatistics $_.LegacyDN).LastLogonTime -lt $TimeLimit} | ft DisplayName, TotalItemSize, ItemCount, LastLogonTime > C:\somefile.txt

TO CSV:

$Days = 60

$TimeLimit = (Get-Date).AddDays(-$Days)

get-mailboxdatabase | get-mailboxstatistics | where-object {(get-mailboxstatistics $_.LegacyDN).LastLogonTime -eq $NULL -or (get-mailboxstatistics $_.LegacyDN).LastLogonTime -lt $TimeLimit} | ft DisplayName, TotalItemSize, ItemCount, LastLogonTime | Export-Csv C:\somefile.csv -NoTypeInformation

——————————————————————————–

Firma Blog

Manage Replication Status

La joya de la corona, unos de los primeros y de los que, a pesar de poder ser mejorado, nunca he querido modificarlo, mas por cariño y añoranza de saber que al ser de los primero es tal y como es él.

Comprobamos el status de la replicación de los controladores de dominio, de múltiples dominios, parseando las líneas y detectando si hay o no errores en la replicación. En función a estos podemos definir el texto del mensaje de correo y a las cuentas a las cuales lo vamos a dirigir.

Simple, conciso y efectivo, en un solo bloque y creo que no es necesario explicarlo…

image

Y el resultado….. mejor que lo ejecutéis en vuestros dominios y evaluéis por vosotros mismo la calidad y cantidad de información de la que podéis disponer.

Mi recomendación, es que lo ejecutéis a través de una tarea programada cada 45 minutos.

Health Status AD

Una de mis últimas incorporaciones, ese maravillo listado que de vez en cuando nos piden y como entre uno y otro pasa tanto tiempo, apenas tenemos ganas de acordarnos como lo hicimos la ultima vez. Pues bien, aquí esta el Script que básicamente comprueba;

  1. Inactive User
  2. Inactive Computer
  3. User Created in Week
  4. Pass Never Expire

El script es multi funcional, permitiendo que añadáis cualquier tipo de informe extra que necesitéis en vuestro día a día.

Comencemos por las variables

image

Recopilemos la información de los controladores de dominio

image

Vamos preparando nuestro excel

image

Segunda “Hoja”

image

image

Tercera “Hoja”

image

image

Cuarta “Hoja”

image

Quinta “Hoja”

image

image

Encabezado, terminamos y cerramos nuestro excel.

image

Y como no, un clásico, lo enviamos por mail…

image

Y como muestra un botón…

image

En este si que acepto, comentarios, aportaciones, mejoras y sobre todo, la actualización a utilizar Excel 2013…

Health Check Status (RtP)

A quien no le ha ocurrido alguna vez que creyendo que ese servidor magnifico estaba listo para ser puesto en producción,  se ha llevado la decepción del siglo ya que al ponerlo en marcha el pobrecito del “server” disparaba alertas por todos lados.

Para evitar esto, lo señores del ITIL ( que son un conclave de viejos raquíticos y tristes) decidieron declinar la importancia de este proceso al “Release to Production” o vulgarmente puesta en producción.

Pues bien, yo he sufrido en mis carnes eso de “ponlo, ponlo en producción si nunca ha tenido ningún problema…”, para lo cual me he creado este script (un todo formado por partes de otros scripts) que es un vistazo inicial, nos da el “status” real de la maquina y genera un informe para que podamos aportar “pruebas” a la decisión de ponerlos en producción. Todavía en “fase de pruebas”, pero muy funcional en esta versión.

Claro, en HTML, multi-servidor, y muy, muy gráfico.

Como es costumbre comencemos por declarar las variables que vamos a utilizar.

image

Creamos el gráfico…

image

Comprobamos el Up Time de nuestro servidor

image

Comenzamos con la cabecera del informe y el CSS (estilo que no falte) (ojo que son varias partes)

image

image

Comprobemos el espacio del que dispone en los discos

image

Localizamos la información del Sistema

image

Comprobamos los servicios

image

Comprobamos el Event Log de la maquina

image

Creamos y guardamos el gráfico al mismo tiempo que Up Time

image

Y nos metemos en faena, cual Quijote tecnológico para detallar el informe

image

image

Informe listo, pues démosle al email

image

Si lo ejecutamos, servidor a servidor, podemos añadir el grafico al mensaje de correo con un adjunto más, si ejecutamos un bloque de servidores no, ya que a fecha de hoy no he conseguido solventar el problema de que solo me deja que la cadena de caracteres del adjunto no supere los 260 (pero estamos trabajando en ello)

El ansiado resultado (todavía me sigue dejando con la boca abierta)

image

Prometo terminarlo y hacer que sea muy muy gestionable…

Printer Status / Queue Status

Este es un problema relativamente “joven”, hasta hace poco tiempo no tenia que preocuparme del estado de los servidores de impresión ni del estado de las “colas”, pero ahora tengo un servidor de impresión crítico para el negocio y he generado este script que me muestra el estado del servidor y los trabajos que están en curso. Tengo una tarea programada que lo ejecuta cada hora y envía el reporte por correo electrónico.

Iniciamos las variables que necesitamos en nuestro script.

image

Comprobamos y generamos el fichero del reporte, y limpiamos los antiguos. En esta versión del script y por necesidades del servicio, acumulamos estos reportes en la carpeta de Report.

image

Escribimos el encabezado del informe que vamos a generar.

image

image

Creamos la primera fila con los títulos de los campos

image

Ahora comenzamos a comprobar el estado de las “colas” de nuestro servidor de impresión.

image

Una vez que obtenemos los datos, comprobamos el estado de la “cola” y determinamos el color que debería de tener …

image

Escribimos la fila con la información obtenida

image

Colocamos el pie del informe o en su defecto la leyenda que queramos indicar en función a los colores …

image

Enviamos el correo electrónico con el contenido del informe (reporte)…

image

La estructura que nos queda al final es la siguiente:

image

Check Disk Space for Multiple Server

No me digáis que nos habéis sufrido el “ataque loco” de esa aplicación que por la noches es capaz de fagocitar todo el espacio libre de los discos de nuestros servidores. Pues bien, yo me he generado un script que de manera gráfica me envía un mensaje de correo con el espacio disponible en los discos de los servidores.

Sencillo a la vez que sutil.

La primera parte del script, es de rigor, cargamos las variables que vamos a necesitar para controlar todo el proceso.

image

Leemos el contenido de nuestro fichero de servidores y limpiamos los informes antiguos, aunque en el caso que os muestro, se almacenan en la carpeta report para mantener un histórico de los mismos.

image

Generamos el diseño de nuestro formato de informe, en HTML

image

image

Creamos el formato de la tabla y escribimos las primeras columnas

image

Comenzamos a evaluar los espacios en disco de la lista de servidores que hemos leído inicialmente.

image

Una vez que disponemos de la información, escribimos la columna con los datos

image

Añadimos el “pie de página” con la leyenda de los colores que hemos utilizado.

image

Una vez que tenemos “toda”la información de nuestros servidores, comenzamos la generación y envío del correo electrónico.

image

Y la verdad es que el resultado, es digno

image

image

Como siempre, agradezco vuestros comentarios y/o aportaciones para mejorar el funcionamiento y/o rendimiento del script y espero que os sirva de ayuda.

Network Protocol Time (windows OS)

Desde hace bastante tiempo, siempre he sufrido los problemas ocasionados por la des sincronización horaria de las maquinas con OS Windows. Pues bien, hace poco he generado un script en PowerShell que me permite tener un control sobre la sincronización de los controladores de dominio y sobre mis dos servidores que utilizo para que sincronicen la hora con las fuentes externas.

Mi infraestructura esta diseñada de la siguiente manera;

– Dos DataCenter y en cada uno de ellos 2 servidores de sincronización de tiempos (NTP01 y NTP02) con 8 fuentes externas; 3 de un proveedor (en tres continentes diferenciados) y 5 de otro (en 5 continentes diferenciados)

El resto de los controladores de dominio de la organización, sincronizan la hora con estos dos servidores, en orden inverso; primero el 02 y segundo el 01. Inicialmente el controlador de dominio con el ROL de PDC es el que marca la hora para el resto de maquinas de la infraestructura.

El script se divide en las siguientes partes;

Definimos las variables del mensaje de correo electrónico

image

Comprobamos que los ficheros que tenemos de control y si existe el fichero que utilizamos para almacenar el contenido de la comprobación lo borramos. Aprovechamos para crear el fichero correspondiente a la comprobación.

image

A continuación cargamos la variable para realizar las comprobaciones de tiempo sobre las maquinas indicadas.

image

Ejecutamos el comando de comprobación de tiempos para cada servidor, cargamos el ficheros de datos inicial y parseamos el contenido al fichero final de reporte.

image

Una vez que completamos el contenido de los ficheros con la comprobación, evaluamos si cualquiera de ellos tenga un  delay superior o inferior a  10s con un offset superior a 250.

image

Si esto valores se superan o son iguales a los valores de la comprobación, enviamos el mensaje de correo electrónico. En este punto, también podemos ampliar el script con la ejecución del comando de sincronización horaria en aquellos servidores que sufren este desfase. Inicialmente, en esta primera versión del script, el scope solo es la comprobación de la correcta sincronización de los mismos.

image

Este script, almacena un reporte cada vez que es ejecutado en la ruta indicada. El formato de mi estructura para este y otros script es:

image

Así controlamos la sincronización de nuestros servidores. Como siempre, estoy abierto a cualquier tipo de comentarios o mejoras que se puedan implementar en el script, para mejorar el control de la sincronización de tiempos en los servidores.