Problemas con la partición EFI

Con la introducción de UEFI, todo el sistema de arranque y particionado  ha cambiado radicalmente  (http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface). Todo ello conlleva también un cambio en nuestro modus operandi a la hora de abordar problemas. Así, esta semana voy a tratar un tema que últimamente me he encontrado en algunos equipos cuyo sistema de arranque es UEFI: ¿qué pasa si la partición EFI de nuestro disco duro se corrompe? ¿Está todo perdido? ¿Tendremos que instalar nuestro equipo desde cero?

Lo primero que debemos hacer es arrancar nuestro equipo con un dispositivo autoarrancable (bien usb, cd, etc) con la instalación de Windows. Una vez arrancado desde ese dispositivo externo, pulsamos May + F10 (en algunos casos habrá que pulsar también Fn) para que nos aparezca la consola de comandos de Windows.

image

Dentro de la consola de comandos escribimos Diskpart para acceder a la herramienta gestora de particiones de windows.

image

Una vez aquí, listamos los discos que hay en el equipo:

image

Seleccionamos el disco que contiene nuestra instalación de Windows

image

A continuación, vemos  los detalles del disco seleccionado.

image

Podemos observar que hay 3 ó más particiones dentro del disco: una de ellas sería la que contiene la instalación del sistema operativo y otra tiene el gestor de arranque  en el que hay un puntero a la instalación de Windows. Si esta última está defectuosa, es incapaz de encontrar dónde se encuentra el sistema operativo.

Seleccionamos el volumen donde se encuentra la partición efi.

image

Procedemos a ver los detalles de la partición con detail partiton

Una vez llegado a este punto eliminamos totalmente la partición y volver a crearla.

image

Creamos nuevamente la partición de tipo efi

image

Damos formato a la partición, esta partición tiene que estar en FAT32

image

Asignamos una letra a la partición

image

Salimos de diskpart

image

Dentro de la consola regeneramos el bcd indicando la ruta de la instalación de Windows, el lenguaje local y el origen donde estará alojado el bcd

image

Salimos de la consola y de la instalación de Windows y la máquina ya podría arrancar normalmente.

Si no es toda la partición la que esté dañada podemos intentar regenerar solo el bootmanager.  Arrancando también desde una instalación de Windows, entramos en diskpart para asignar una letra de unidad a la partición EFI y salimosde la utilidad de diskpart pero sin salir de la consola.

Accedemos a la partición EFI y nos posicionamos donde están los archivos de arranque,

image

Reparamos el arranque

image

Renombramos el archivo bcd y lo regeneramos

image

image

Salimos de la consola y reiniciamos la máquina lista para su arranque normal.

Y hasta aquí el post de hoy. Espero que os haya gustado.

Conexión remota con PowerShell a Exchange Server 2010/2013

¡Hola a todos!

Hoy hablaremos de PowerShell, conexiones remotas a Exchange, y cómo podemos automatizar estas conexiones para usar en scripts que no requieren intervención por parte del usuario. ¿Suena interesante? Pues sigamos adelante!

Primero veamos cómo podemos conectarnos con PowerShell a un sistema remoto. En este caso, vamos a conectar con un servidor Exchange ficticio llamado “mi.sitio.es”.

Muy fácil, tres líneas de código, introducimos nuestras credenciales en un diálogo pop-up, y tenemos una shell conectada al servidor Exchange, para ejecutar comandos como Get-Mailbox o Get-DistributionGroup. Éste es el procedimiento estándar para conectar con Exchange, y se puede encontrar en miles de artículos por Internet. El problema, es que requiere una sesión interactiva, porque nos pide las credenciales en un diálogo.

Como esto es demasiado fácil, y en ocasiones molesto (especialmente la parte de escribir nuestras credenciales), vamos a escalar la dificultad, y automatizar el proceso para que no haga falta introducir las credenciales en una sesión interactiva. Esto se consigue creando un objeto del tipo PSCredential.

Obviamente, esto nos plantea un dilema práctico. Por muy compleja y segura que sea la password de nuestra cuenta (MiP4ssw0rdEsMuy.Segur0), si la pegamos como texto plano en un script no va a servir de nada. Especialmente si más de una persona tiene acceso al lugar donde el script esté guardado.

Esto se puede solucionar guardando la contraseña en un contenedor especial llamado “SecureString”, que se cifra con nuestras credenciales de Windows. En la práctica, esto significa que, el script quedaría entonces ligado a nuestra cuenta en una máquina en concreto. Si cambiamos de máquina o de usuario, tenemos que generar una nueva representación del SecureString. Útil para maximizar la seguridad del despliegue de un script, aunque es importante tener en cuenta que la seguridad que ofrece no es de nivel militar, pero sí es lo suficientemente buena para el “usuario estándar”.

Ahora bien, ¿cómo podemos generar un SecureString para almacenar nuestra contraseña, de forma segura y fiable? Podemos usar una función como la siguiente:

Nótese que esta función nos va a convertir cualquier cadena que le pasemos a un securestring, ya sea pasando el texto como un parámetro (mala idea), o leyendo el texto con el Read-Host –AsSecureString. Obviamente, podemos usar la función tal cual, “Copipegándola” en la shell, y ya podemos usarla con total normalidad.

El resultado final nos deja con un script de conexión tal como el siguiente:

Estas tres líneas las podemos incluir en un script .ps1 de PowerShell, y a continuación usar todos los cmdlets de Exchange que necesitemos para nuestros propósitos.

 

¡Y eso es todo por el momento! Espero que esta técnica os sea provechosa para aumentar la productividad y, sobre todo, happy scripting!

Exportar e importar firmas de correo electrónico en Microsoft Outlook

¡Feliz Año Nuevo a todos! 2014 ha sido un año cargado de retos y exploraciones de nuevas tecnologías, además de ser el año que iniciamos andadura en el blog del equipo de Enterprise IT de Plain Concepts. ¡Esperamos disfrutaseis del 2014 tanto como nosotros y que el 2015 empiece para todos con las pilas cargadas!

Mi primer post del año no es muy técnico, pero sí pienso que tremendamente útil. Como usuario y administrador de Office 365 no es ninguna sorpresa que mi correo esté basado en Exchange Online y que acceda a él habitualmente utilizando Outlook 2013. Algo que siempre he lamentado profundamente es que Outlook almacene las firmas de los correos electrónicos en local y no en el servidor de Exchange. Este hecho conlleva problemas bastante obvios:

  • Si reinstalo mi PC, necesito volver escribir o –en el mejor caso- copiar y pegar las firmas de mis cuentas de correo.
  • Si adquiero un nuevo equipo, debo realizar la misma operación que en el punto anterior.
  • Si tengo un parque de 3-4 equipos (como es mi caso), es frecuente que no todos tengan las firmas sincronizadas.
  • Yo uso 2 firmas –una para mensajes nuevos y otra para respuestas- para cada dirección de correo. Con 3 direcciones de correo me junto con 6 firmas.

Mientras esta ansiada característica de Exchange llega o no, he creado un par de sencillos archivos de procesamiento por lotes (BAT) que se encargan de exportar todas firmas de nuestro Outlook y de importarlas de vuelta al mismo. Combinando estos scripts con algún servicio de sincronización como Dropbox o OneDrive, tenemos toda la magia que necesitamos.

Script para exportar firmas de Outlook

Como podéis ver, es realmente sencillo. En primer lugar nos vamos a apoyar en algún programa de archivado de ficheros. 7-Zip es nuestra primera elección por se gratuito, open source, poder trabajar con formato ZIP y tener una potente versión de línea de comandos. Otras alternativas serían TAR, RAR, LZH o cualquier otro.

El script básicamente:

  1. Guarda en la variable ZIP la ruta de instalación de 7-Zip, para poder hacer uso del mismo. La expuesta es la más habitual. Modificar en cada caso.
  2. Guarda en la variable SIGFILE el archivo que vamos a generar tras exportar las firmas.
  3. Como Outlook guarda las firmas en carpetas distintas dependiendo del idioma que estemos utilizando, utilizamos los IF y la variable FOLDER para establecer el lugar donde Outlook almacena los archivos que nos interesan.
  4. Si existe otro archivo anteriormente generado lo eliminamos.
  5. Llamamos a 7-Zip para que genere un empaquetado de los contenidos del directorio. Con el “a” decimos que queremos crear un archivo y agregar contenido, –tzip para utilizar el formato ZIP y –r para recorrer todos los subdirectorios.

Script para importar firmas de Outlook

Muy similar al anterior, sólo cambia en el comando 7-Zip donde ahora le especificamos que vamos a extraer los contenidos del empaquetado. Tras realizar esta acción nuestras firmas aparecerán para seleccionar y configurar mágicamente en nuestro Outlook.

Si almacenamos estos dos scripts en una carpeta de Dropbox, OneDrive o nuestro servicio de sincronización, operar con ellos será sencillo.

  • Ejecutar backup_outlook_sigs.bat desde el equipo del que queramos extraer las firmas.
  • Ejecutar restore_outlook_sigs.bat desde todos los equipos en los que queramos importar las firmas extraídas.

Espero que estos scripts os permitan ahorrar tiempo poniendo a punto vuestros nuevos sistemas.

Happy signing!

UPDATE: José Ángel Fernández nos ha sugerido una versión equivalente del script en PowerShell que tiene la peculiaridada de no necesitar ninguna herramienta de archivado externa, pues se vale del ZIP que se encuentra en la propia API de Windows:

Network Monitor (1/2)

¡Hola a todos! ¡Feliz año!

Vamos a empezar 2015 con fuerza 🙂

Una de las herramientas que más nos gustan y que más utilizamos a la hora de hacer troubleshooting es Microsoft Network Monitor.

Con este programa podemos capturar y analizar trazas de red, cosa que viene muy bien ya que en el 80% de los problemas de infraestructura, las comunicaciones están relacionadas en mayor o menor medida.

Aunque Wireshark es una alternativa muy potente y mejor que Network Monitor en muchos casos, como por ejemplo en las búsquedas de strings, el seguimiento de las conversaciones, etc, hay detalles de Netmon que a mi me gustan especialmente.

Vamos a intentar resumir aquellos detalles o cosas a tener en cuenta a la hora de capturar y analizar trazas de red con Network Monitor para que nos hagan la vida más fácil 🙂

1.   Ejecutar netmon con administrador: alguna vez os podéis encontrar con que al arrancar el programa no aparecen los adaptadores de red. La mayoría de las veces se soluciona ejecutando la aplicación como Administrador. Netmon coloca su driver para capturar los paquetes en una capa que está entre el driver del adaptador de red y el propio S.O. Tenerlo en cuenta para determinar donde se queda un paquete una vez llegue al equipo donde estamos capturando.

Ejecutar como admin
Ejecutar como Admin

 

2.   Conocer la IP del equipo donde capturas: una cosa que nos puede ayudar mucho a la hora de analizar unas trazas es poder cargarla al cabo de mucho tiempo y saber rápidamente cual era la dirección IP o direcciones de los diferentes adaptadores que había en esa máquina. Para ello únicamente debemos ver la información del segundo paquete que aparecerá en la captura y acudir a la siguiente sección:

Conocer la dirección IP
Conocer la dirección IP
Conocer la dirección IP y otros datos
Conocer la dirección IP y otros datos

Como veis, aparte de la dirección IP podemos conocer otros datos sobre el adaptador de red.

3.   Parsers: nos van a permitir interpretar cierto tráfico y con diferente nivel de detalle. Para analizar protocolos que a lo mejor no son muy conocidos o para poder ver con más detalle que ocurre en la comunicación entre ciertos procesos, los parsers nos pueden dar esa información que necesitamos. Lo ideal es mantenerlos lo más actualizado posible y si vamos a analizar algún programa en concreto como puede ser Lync, buscar si existen parsers específicos.

Network Monitor Open Source Parsers: http://nmparsers.codeplex.com/

Network Monitor parsers: https://connect.microsoft.com/site216/Network%20Monitor%20Parsers

Lync Network Monitor Parsers: http://www.microsoft.com/en-us/download/details.aspx?id=22440

4.   Colores: una de las cosas más interesante que podemos definir en Network Monitor son las reglas de color para el análisis de trazas. De esta manera podemos construirnos poco a poco nuestras reglas que nos ayuden de un vistazo rápido a encontrar errores o situaciones anómalas que de otra manera podrían pasar inadvertidas si la traza es muy grande. Por ejemplo, para ver de un vistazo un caso de saturación en la red, podemos definir una regla para que nos marque en rojo aquellos paquetes en los que la ventana TCP tenga valor 0:

Reglas de color

De un vistazo rápido a la traza podremos ver si algo ha ido mal. En la siguiente imagen vemos un ReTransmit del Syn de TCP, lo que podría indicar por ejemplo que el puerto está cerrado o que no hay ningún servicio escuchando:

Retransmit
Retransmit

E incluso en una conversación que involucre varios pasos podemos separarlos para ver rápidamente si no pasa alguno de ellos:

Traza SMB
Traza SMB

Os dejo aquí el fichero con las reglas de colores que he ido preparando con los años cogiendo muchas de algunos compañeros. Para cargarlos sólo hay que irse a Tools -> Options -> Color Rules -> Open.

5.   Separar en conversaciones y procesos: otra cosa que nos permite Network Monitor para facilitarnos la vida es un panel lateral donde podemos realizar un filtrado rápido entre las diferentes conversaciones y procesos. Esto es muy útil por ejemplo para analizar comunicaciones que inicie un navegador web (puerto 80, 443), sacar de un vistazo si algo lleva demasiados intentos, etc.

Conversaciones
Conversaciones

 

Hasta aquí la primera parte de las funcionalidades que queremos destacar de esta fantástica herramienta. En el siguiente capítulo veremos cosas muy interesantes que podemos hacer ejecutándola desde la línea de comandos, como arrancarla con Windows o asociar la parada de la captura a un Evento.

Happy networking!