martes, 17 de diciembre de 2013

¿ De que color es tu server ? - Lab Tip Nro 3


¿Cómo saber si un server es una instalación full o un server core antes de iniciar sesión? ¡Muy simple! Podés ver el color de la pantalla.

Si es un Windows Server 2012/R2 con instalación Server Core, la pantalla es azul (Figura 1). Si es un Windows Server 2012/R2 con instalación GUI (o MSI), la pantalla es gris (Figura 2).

Figura 1

Figura 2

martes, 10 de diciembre de 2013

OU no se pueden mover en Active Directory

Como Administrador del dominio, existen acciones que no podemos ejecutar. Una de ellas es intentar mover una OU a otra ubicación dentro de nuestro AD, lo que provoca un error de "Access is Denied." (Figura 1).
 
Windows cannot move object "Name" because: Access is denied
Figura 1
 
Esto ocurre porque desde Windows Server 2008 en adelante, cada vez que se crea una OU, el objeto tiene protección contra borrado accidental. Esta protección evita también que se mueva una OU. Para ver si la OU está protegida o no, debemos seleccionar las opciones avanzadas (Advanced Features) en el ADUC (Figura 2).
 
Figura 2
 
 
Y luego ver las propiedades del objeto (Figura 3).
 
Figura3
 
Al quitar el tilde, es posible mover el objeto a su destino final sin problemas. Es recomendable volver a colocarlo una vez realizado el movimiento.

¿Qué es lo que impide que un Administrador del dominio no pueda borrar o mover un objeto? Simplemente que el grupo Everyone tiene negada la posibilidad de borrar el objeto (Figura 4).
 
Figura 4

viernes, 22 de noviembre de 2013

Mailbox Database sin copia en DAG de Exchange 2010. Evento 4113.

Exchange Server 2010 realiza una comprobación de cuántas copias hay disponibles de cada Mailbox Database. Cuando la cantidad de copias es solo una, podemos ver un evento 4113 registrado en el Event Log (Figura 1).

Figura 1
 
 
Adicionalmente, si tenemos SCOM para monitorear nuestros equipos, vemos la siguiente alarma (Figura 2).
 
KHI:This database has had only one healthy copy from over 20 minutos of the last hour.
Figura 2

Exchange realiza esta comprobación mediante un script llamado CheckDatabaseRedundancy.ps1 que se encuentra en la carpeta scripts de nuestro servidor de Exchange. Podemos ejecutarlo desde una consola de Power Shell EMS para ver su resultado (Figura 3).

Figura 3

En la figura 3 se ve que las bases que tienen solo una copia figuran en estado Rojo (Red), mientras que las que tienen al menos dos copias aparecen en estado verde (Green).
 
Sin embargo existe la posibilidad de que necesitemos que algunas bases sean ignoradas en este control, dado que tener alta disponibilidad en las bases es una opción, no es obligatorio.
 
Recientemente en la empresa Daris me solicitaron que ignorara las bases marcadas como "DARB", pues esas bases correspondían a usuarios "Básicos", según ellos habían definido en su nomenclatura. Para realizar eso, en el script de control, cambiamos una línea:
 
[string] $SkipDatabasesRegex = "DARB",

Si volvemos a ejecutar el script, vemos que esas bases no se controlan (Figura 4 ).


Figura 4
Luego me pidieron que se ignorararan además las bases que contenían "DARA", dado que éstas son bases de pruebas para aplicativos, por lo cual tampoco necesitaban tener alta disponibilidad.
 
Para ignorar qué Mailbox Databases se deben verificar, este script utiliza  una "Regular Expression" en Power Shell, entonces construimos una que incluya ambas cadenas.
 
[string] $SkipDatabasesRegex = "DARB|DARA",

Cuando ejecutamos el script podemos ver que ya no aparecen las bases que concuerdan con nuestra regular expression (Figura 5), tampoco aparecen más los eventos 4113 ni las alertas de scom.

Figura 5
 
Para construir estas regular expressions hay algunas opciones simples, pero muy interesantes:

"Texto" = Ignora las Mailbox Databases que incluyen "Texto" en cualquier parte.
Ej "EsteTexto"

"^Texto" = Ignora las Mailbox Databases que comienzan con "Texto".
Ej "TextoDeEjemlo"

"Texto$" = Ignora las Mailbox Databases que finalizan con "Texto".
Ej "EjemploDeTexto"

"|" = El separado "Pipe" funciona como un "or" y nos permite incluir varias expresiones.
Ej:"Texto1|Text2"

lunes, 7 de octubre de 2013

Removiendo Exchange Server 2010 Provisionados

Antes de instalar un Exchange Server 2010, un miembro del grupo Organization Management debe provisionar la cuenta de equipo en donde se realizará la instalación.
 
Setup.com /NewProvisionedServer:ServerName
 
De forma similar, cuando alguien que no es miembro de ese grupo desinstala un Exchange Server 2010 (por renovación de hardware, migración, etc.) hay que desaprovisionar la cuenta de equipo para evitar que Exchange Server 2010 se vuelva a instalar en ese server. Podemos utilizar un cmdlet para verificar si hay algún server en este estado dentro de la organización de Exchange  (Figura 1).

Get-ExchangeServer | ? {$_.ServerRole -like "*Provisioned*"} | ft Name, ServerRole,Edition -AutoSize






Figura 1

Con el "Setup.com" de Exchange Server 2010 es posible desaprovisionar el equipo.

Setup.com /RemoveProvisionedServer:ServerName

viernes, 13 de septiembre de 2013

Lab Tip Nro 2 - Imagen lista con Server Core

Para acelerar el armado de algún ambiente de laboratorio, siempre es bueno tener un archivo .vhd (o vhdx) listo y con sysprep para poder copiarlo en los equipos que queremos crear.
 
Desde Windows Server 2012, las ediciones Standard y Enterprise tienen las mismas características técnicas. También es posible pasar de Server Core a instalación con GUI sin necesidad de reinstalar el sistema operativo.

Con estas novedades, es posible utilizar un solo .vhd (o .vhdx) para armar máquinas con diferentes roles (DC, Cluster, File Server, etc), basadas en un server core (lo que reduce el espacio de almacenamiento) y con la opción de agregarle GUI en caso de ser necesario.

Cambiar de Server Core a un server con GUI es bastante simple, solo necesitamos un cmdlet de PowerShell ...
 
Install-WindowsFeature  Server-Gui-Shell
 
Pero cuando intenté realizar esto en mi lab con Windows Server 2012 R2, me encontré con un error (Figura 1).
 
Figura 1 
 
Install-WindowsFeature : The request to add or remove features on the specified server failed.
Installation of one or more roles, role services, or features failed.
The source files could not be downloaded.

 
Para ver qué estaba pasando, me ayudé con otro cmdlet (Figura 2).

Get-WindowsFeature Server-GUI-Shell | fl Name,InstallState,DependsOn
 
Figura 2
 
Con Windows Server 2012 R2, no todas las características son copiadas al disco rígido al momento de la instalación. En este caso el "InstallState: Removed" nos indica que no está disponible.

Ejecutamos nuevamente el primer cmdlet, pero agregando un parámetro extra para indicar donde está el archivo .wim de instalación para que lo use como fuente de los componentes faltantes (Figura 3).

-source:wim:D:\sources\install.wim:2

Figura 3

Así nuestro equipo originalmente creado con una instalación de Windows Server 2012 R2 Core, después de ser reiniciado, ya tiene GUI.
 

sábado, 31 de agosto de 2013

¿Que paso ayer?... Con los mails

Exchange Server 2010 guarda, de forma predeterminada, información de seguimiento de los correos que los usuarios envían y reciben. Estos logs son útiles cuando queremos saber qué pasó con un mail.
 
Como casi todo lo relacionado con Exchange Server 2010, la forma más simple de acceder a estos logs es a través de PowerShell.
 
Lo primero es identificar qué mensaje queremos buscar, para lo que podemos utilizar el campo "MessageID" el cual es único para cada mensaje. En muchos casos podemos consultar el "MessageID" en el "Internet Header" del mensaje, pero algunas veces esta información no está disponible ahí, en ese caso podemos consultarlo con PowerShell (Figura 1).

Con el "Subject" del mensaje del cual queremos obtener información y el nombre del Mailbox Server del usuario que envió o recibió el mensaje, podemos hacer la consulta del "MessageID".
 
Get-MessageTrackingLog -Server ARRMBX010 -MessageSubject "MAIL PARA TRACK" | fl EventID, Sender, Mess*ID
 
Figura 1
 
Con el "MessajeID" podemos buscar en los servers que tienen información de Tracking (Los Hub Transport y los Mailbox Servers). Si tenemos unos pocos servers, la búsqueda es simple.
 
 Get-MessageTrackingLog -Server ARRMBX010 -MessageId C1CE5ADA5ED3D246B3E6095DA22AF1FA1D4A67FC@ARRMBX010.arrakis.org | ft EventId, Source, Sender, Recipients, *HostName, Time*
 
Podemos ir cambiando el valor "Server" y de esa forma buscar en otros servidores.  
 
Cuando la infraestructura es más compleja, ¿Como podemos buscar tracking logs en varios servers, que están en diferentes sites-AD, que sean Exchange 2010 y no sean UM ni Client Access? Combinando algunos cmdlets!
 
Get-ExchangeServer: Para obtener el listado de los servers.
Where-Object: Para filtrar esos resultados.
Get-MessageTrackingLog: Para obtener la información de los archivos de logs.
Ft (Format-Table) o Fl (Format-List) : Para seleccionar las propiedades que queremos ver.
 
 
Get-ExchangeServer | Where-Object {($_.AdminDisplayVersion -Like "*14*") -and ($_.ServerRole -ne "UnifiedMessaging" -and $_.ServerRole -ne "ClientAccess") -and ($_.Site -like "*DuneNorte*" -or $_.Site -like "*DuneOeste*")} | Get-MessageTrackingLog -MessageId C1CE5ADA5ED3D246B3E6095DA22AF1FA1D4A7282@ARRMBX010.arrakis.org | ft EventId, Source, Sender, Recipients, *HostName, Time*

La información se mostrará de forma similar al ejemplo (Figura 2)

Figura 2


Para saber qué significan las diferentes combinaciones de "EventId" y "Source", se puede consultar la documentación de TechNet.

Understanding Message Tracking



jueves, 11 de julio de 2013

Instalar DC Windows Server 2012

Con Windows Server 2012 tenemos varias opciones para instalar un Domain Controller. Una gran diferencia con las versiones anteriores es que DCPromo.exe no es la manera recomendada.
 
Lo primero que debemos hacer es asegurarnos que nuestro entorno esté preparado para soportar un DC Windows Server 2012. Salvo que estemos instalando el primer DC en un nuevo forest.
 
Podemos...
 
a) Instalar con DCPromo (Opción menos preferida y desenfatizada) junto con un archivo de respuesta (Figura 1).
 
Figura 1
 
 
b) Instalar con PowerShell (Figura 2).
 
Figura 2
 
c) Instalar desde Server Manager (Solo con interface gráfica) (Figura 3).
 
Figura 3
 
d) Instalar desde una clonación de un DC (Todo este artículo del blog).
 
Tenemos que cumplir algunos requerimientos:

- Solo podemos clonar DC Windows Server 2012
- El rol de PDC emulator debe estar corriendo en un DC Windows 2012
- Se debe incluir el equipo a clonar en el grupo "Cloneable Domain Controllers" (Figura 4)

Figura 4
 
- Luego, se debe verificar que el equipo no tenga roles o servicios no-clonables (Figura 5) con el cmd-let

Get-AddcCloningExcludedApplicationList

y generar un archivo en caso de encontrar alguna aplicación no compatible con la clonación, utilizando el parámetro

-GenerateXml

Figura 5

Antes de clonar el equipo se utiliza el cmd-let New-AddcCloneConfigFile (Figura 6), para configurar el nuevo DC.
 
New-AddcCloneConfigFile -IpV4Address -IpV4DefaultGateway -IpV4SubnetMask -IpV4Resolver -CloneComputerName -Static


 

Si todos los test son validados positivamente, se crea un archivo de configuración para clonar el equipo, luego de lo cual debemos apagarlo. Una vez que el equipo esté fuera de línea, exportamos la VM (Figura 7).

Export-VM -Path

Figura 7
 

Importamos el equipo (Figura 8).

Import-VM -GenerateNewID -Path -Copy -VhdDestinationPath


Figura 8

La importación se realiza con el mismo nombre de archivo VHD o VHDX que utilizamos, al igual que el nombre del equipo en nuestro manager de Hyper-V, por lo que es mejor renombrarlo antes de iniciar el nuevo equipo virtual (Figura 9)
 
Figura 9
 

 Simplemente encendemos el equipo (Figura 10) y tenemos un nuevo DC (Figura 11).

Figura 10

Figura 11

 

martes, 18 de junio de 2013

Problemas con OWA después de instalar Exchange Server 2010 SP2

Después de que instalamos SP2 de Exchange Server 2010 en algunos sites-AD, nos encontramos con el siguiente problema: cuando un usuario que estaba en un site-AD con servidores CAS que aún tenian SP1 intentaba conectarse a través de un servidor con SP2 (tanto desde Internet como internamente), el OWA mostraba la página web con algunos faltantes (Figura 1). Pero si entrábamos directamente al CAS del mismo site al que el usuario pertenece, entonces no teniamos problemas.
 
Figura 1
 
 
Entonces seleccionamos uno de los objetos faltantes y vimos sus propiedades (Figura 2). Allí verificamos que en nuestro server CAS con nombre CASEX10 el objeto que no se mostraba se esperaba encontrar en el directorio virtual /owa/14.1.287.0/themes/resources.

Figura 2
 
 
Ese directorio era diferente en SP1 y en SP2 (Figura 3), pues en el equipo con SP2 faltaban los subdirectorios "scripts" y "themes". Dentro de "themes\resources" estaban los archivos que no se mostraban correctamente.

Figura 3
 
En el Event Viewer (Figura 4) encontramos un evento relacionado con nuestro problema. 
 

 
Figura 4

Una vez copiados estos dos directorios al servidor que tiene SP2, el accesso al OWA se restauró (Figura 5). No fue necesario reiniciar el equipo, el IIS o ningún servicio.

Figura 5
 
 

viernes, 7 de junio de 2013

Preparación de Forest y Dominio para Windows Server 2012

Con cada versión de Windows Server que queremos utilizar como Domain Controller, debemos actualizar el Schema de AD. Aunque Windows Server 2012 no es la excepción, trae sin embargo muchos cambios. 

Si queremos configurar el primer equipo Windows Server 2012 como DC en nuestro forest, la actualización del Schema y el Dominio se puede hacer de forma automática (Siempre que tengamos los permisos necesarios), tal como lo detallamos en otro articulo de este blog. Si nuestro AD es pequeño esa puede ser una buena opción, pero si tenemos una gran instalación con roles de administración separados, seguramente querramos tener un poco más de control sobre lo que está pasando en nuestro forest.
 
Ejecutar Adprep  es aún una opción válida, pero el comportamiento y la forma de ejecución han cambiado un poco con respecto a las versiones anteriores.
 
Antes: existían dos versiones de Adprep (Adprep.exe y Adprep32.exe), una para cada arquitectura.
Ahora: solo existe una versión Adprep.exe, que se ejecuta exclusivamente en equipos de 64bits Windows Server 2008 o superiores. Si por ejemplo lo ejecutamos en un Windows Server 2003 R2 x64, nos da un error (Figura 1).
 

  
Figura 1
 
Antes: debía ejecutarse el upgrade de Forest en el DC que tenía el rol de Schema Master.
Ahora: se puede ejecutar remotamente.
 
Antes: el upgrade de Dominio debía ejecutarse en el DC que tenía el rol de Infraestructure Master del Dominio.
Ahora: se puede ejecutar remotamente.
 
Antes: se utilizaba DCPromo para promover un Server a DC.
Ahora: DCPromo está desenfatizado, solo se acepta con un archivo de respuesta. El método preferido es con PowerShell, y también puede utilizarse Server Manager (Si el server no está instalado como Server Core).
 
Si la infraestructura de DC está completamente en 2003, debemos tener en cuenta cuatro cosas:
 
a) Debe especificarse con qué cuenta de usuario (y dominio) Adprep va a realizar la operación, para que pueda comprobar la membresía a los grupos a los que pertenece (Error code: 0x534 Error message: No mapping between account names and security IDs was done).
b) Como ejecutaremos remotamente el comando, debemos asegurarnos de que el firewall no se interponga entre el DC 2003 con el FSMO que queremos contactar y el equipo desde donde ejecutamos ADPrep.exe (Error code: 0x6ba Error message: The RPC server is unavailable).
c) El nivel funcional del Dominio debe ser al menos Windows Server 2003 o la ejecución de la actualización del Dominio fallará (Adprep detected that the domain is not in native mode).
d) Además de que el Dominio y el Forest estén actualizados, para agregar un DC Windows Server 2012 a nuestro Active Direrectory, el nivel funcional del Forest debe ser al menos Windows Server 2003 (The forest functional level is Windows 2000. To install a Windows Server 2012 domain or domain controller, the forest functional level must be Windows 2003 or higher).
 
Con todos estos detalles y nuevos comportamientos tenidos en consideración, podemos ejecutar la actualización de nuestro Forest (Figura 2).
 
Adprep.exe /ForestPrep /Forest "NombreDelForest" /User "NombreDelUsuario" /UserDomain "DominioAlQuePerteneceElUsuario" /Password *
 
 
 
Figura 2
 
Una vez finalizada correctamente la actualización (Figura 3), podemos usar Adsiedit para comprobar que las modificaciones se realizaron con éxito (Figuras 4 y 5).
 
 
 
Figura 3 
 
 
Figura 4
 
 
 
Figura 5
 
 
Finalmente, para poder agregar un DC con Windows Server 2012 a uno de nuestros Dominios, debemos actualizar el Dominio (Figura 6).
 
Adprep.exe /DomainPrep /Domain "NombreDelDominio"  /User "NombreDelUsuario" /UserDomain "DominioAlQuePerteneceElUsuario" /Password *
 
 
 
Figura 6

Opcionalmente (y recomendado) podemos actualizar los objetos de políticas (GPO) del dominio (Figura 7).

 Adprep.exe /DomainPrep /GpPrep /Domain "NombreDelDominio"  /User "NombreDelUsuario" /UserDomain "DominioAlQuePerteneceElUsuario" /Password *
 
 
 
 
Figura 7
 
Si con Adprep no especificamos Forest o Domain, se utilizarán las opciones de donde se encuentre el equipo desde donde ejecutamos el comando, por lo que son útiles cuando la operación es realizada remotamente o en un equipo que no está unido al Active Directory.  
 
Para poder agregar RODC a nuestro ambiente, debemos preparar el Forest, y para eso debemos ejecutar la opción RODC con una cuenta Enterprise Administrator.
 
Adprep.exe /RODCPrep /Forest "NombreDelDominio"  /User "NombreDelUsuario" /UserDomain "DominioAlQuePerteneceElUsuario" /Password *
 
 
Si ya tenemos nuestro ambiente con RODC de Windows Server 2008 o Windows Server 2008R2, no es necesario ejecutar la preparación para RODC con Windows Server 2012, pero si es necesario si teníamos un Active Directory con DC de versiones previas.
 


lunes, 3 de junio de 2013

Lab Tip Nro 1

Cuando queremos configurar un equipo en nuestro ambiente de pruebas, es habitual que le asignemos los mínimos recursos necesarios, ya sea para colocar varios equipos en nuestro host de virtualización o porque utilicemos equipos obsoletos. Esto tiene la desventaja de que cada vez que queremos realizar una simple acción en el equipo, la tarea nos consume mucho tiempo por su falta de respuesta. 
 
Para los host con Windows Server 2012 podemos realizar la configuración inicial del equipo con SCONFIG (Figura 1). Éste es parte del sistema operativo y está disponible tanto en Server Core como en una instalación Full del sistema operativo.
 
 
Figura 1
 
La herramienta se presenta como un menú en modo texto donde podemos realizar las configuraciones básicas del equipo: Nombre, Dominio, Administrador local, Configuración de Red, Acceso Remoto, etc.
 
Por ejemplo, podemos habilitar RDP con NLA con solo pulsar "7", "E" y "1" en el menú de texto (Figura 2), lo cual resulta mucho más rápido que realizar la configuración con las herramientas gráficas.
 

Figura 2

Para Windows Server 2008R2 también está disponible, pero no está incluida por default en la instalación Full (Figura 3), solo se incluye en la instalación como Server Core y en Microsoft Hyper-V Server 2008R2.
 
Figura 3
 
Desde luego que de estos sistemas podemos copiar los archivos sconfig.cmd y Scregedit.wsf (Del directorio %windir%\System32) y los archivos  sconfig.vbs y WUA_SearchDownloadInstall.vbs (Del directorio %windir%\System32\en-US) a una instalación full y utilizar Sconfig sin problemas (Figura 4).
 
Figura 4
.

martes, 28 de mayo de 2013

Buscar objectos en todo el AD con PowerShell

Hace poco un amigo estaba haciendo un script en PowerShell que debía mostrar usuarios de diferentes dominios. El principal problema era que una consulta PowerShell solo le traía como resultado usuarios de un dominio específico dentro de un Forest de AD, por lo que para conectarse a cada dominio debía iniciar una conexión con un New-PSDrive.
 
Esto era un poco trabajoso y algo impráctico, por lo que se me ocurrió buscar una forma diferente de hacerlo.
 
Para probarlo utilicé un Forest que contiene varios dominios. En este Forest tengo tres cuentas de usuario con mi nombre, una en un dominio (Baires.qthworld.net), dos en otro dominio (London.qthworld.net) y ninguna en muchos otros dominios del Forest.
 
Conectado al dominio Roma.qthworld.net, importé el modulo de PowerShell para AD e hice una consulta PowerShell con el cmd-let

Get-ADUser -Filter 'anr -like "Esteban De Leo"' | Measure-Object

Figura 1
 
Con "Get-ADUser" podemos buscar usuarios de AD; la opción "Filter" nos permite hacer un filtrado de los resultados, en este caso todos los "arn" que sean "like" (como) "Esteban De Leo". Desde luego el resultado en el dominio que estaba conectado por default fue cero (Figura 1). Con "Measure-Object" indicamos que cuente la cantidad de resultados, pero no muestre los resultados.
 
Aclaremos que "anr" (Ambiguous Name Resolution) permite buscar una cadena de caracteres dentro de múltiples propiedades de AD. Pero también puedo usar otros filtros como "name", "mail" o "DistinguishedName" con Get-ADUser.
 
Para hacer la consulta en el dominio Baires, simplemente indicamos con el parámetro "Server" que Get-ADUser utilice un Domain Controller que sea de Baires (Figura 2).


Figura 2
 
Similar al consultar en London (Figura 3), donde nos muestra dos resultados.

Figura 3

¿Pero qué pasa si queremos indicar que nos muestre todos los resultados en el Forest? Simplemente indicamos un server que sea Global Catalog y que utilice el puerto de Global Catalog, ya que por default usa en de Domain Controller (Figura 4).

 
 
En este último caso, vemos los tres objetos que están en diferentes dominios de todo el Forest.

viernes, 5 de abril de 2013

Error WMI: Invalid Namespace al intentar agregar una copia a un DAG.

En un DAG de Exchange Server 2010, al querer agregar una copia pasiva de una Mailboxdatabase la operación no se completa con un error de "WIM excecption Invalid namespace" (Figura 1). Algo similar sucedía si consultábamos por la salud de los servicios de Exchange del Server en donde queremos agregar la réplica.


Figura 1
 
Era raro que el servidor estaba prestando servicio a las bases que ya estaban ahí, adicionalmente comprobamos la base que se intentaba replicar y esta se encontraba saludable en otros 3 servidores (Figura 2).
 
Figura 2
 
Finalmente el problema venia de la mano de WMI, el repositorio WMI de Windows Server estaba dañado, por lo que necesitamos reconstruirlo. El procedimiento esta descripto en este articulo.
 

Figura 3
 
Una vez finalizado el procedimiento pudimos agregar la base pasiva y hacer un test de los servicios de Exchange (Figura 3).