Habilitar .NET Framework 3.5 en una imagen offline de Windows 8.1 utilizando PowerShell

Desde que en algún artículo mencioné que me gustaba recibir correos, sobre todo cuando lograba sacar de ahí un artículo nuevo, la cantidad incrementó considerablemente, así que les agradezco mucho a todos y espero que las respuestas hayan podido satisfacerlos.

Hace un par de días, recibí uno que me llevó a crear este artículo, pues el usuario deseaba saber si así como las actualizaciones, uno podía habilitar el .NET Framework en una imagen antes de instalado utilizando PowerShell en conjunto con el ADK. Yo había escrito un artículo donde mostraba cómo hacerlo, pero con MDT, así que me pareció una idea perfecta documentarlo acá en vez de responderlo solo a él, pues quizá varios se estén haciendo la misma pregunta.

En este post, muy similar al que escribí para agregar el Update 1 a una imagen, mostraré cómo podemos habilitar el .NET Framework 3.5 para luego montar la imagen y asegurarnos que la instalación ya lo tenga al terminar.

Requerimientos

– El ADK para Windows 8.1 Update, disponible en el sitio web de Microsoft:
http://www.microsoft.com/en-us/download/details.aspx?id=39982

*Nota: El ADK debe estar instalado en el equipo técnico.

– Archivos de instalación o imagen maestra de Windows 8.1.

– Una carpeta en la raíz de Windows llamada 81, es decir: C:81

– Una carpeta en la raíz de Windows llamada Mount, es decir: C:Mount

Copiando archivos de instalación

En caso de que tengamos los archivos de instalación de Windows en un medio, es necesario primero copiarlos localmente para poder manipularlos. Para esto, montamos la imagen en una unidad virtual haciendo doble clic y procedemos a pasar los archivos:

Desde la Pantalla de Inicio, buscamos cmd, clic derecho y Ejecutar como adminsitrador:

FX1

En el símbolo del sistema, ejecutamos:

xcopy <UnidadWin>*.* /s/e/f C:81

Donde <UnidadWin>, es la unidad en la que se montó los archivos de instalación. Por ejemplo, en mi caso que es la G:, el comando sería:

xcopy G:*.* /s/e/f C:81

image

*Nota: El proceso puede tardar algunos minutos.

Montando la imagen

El siguiente paso, es montar nuestra imagen al directorio C:Mount, para que podamos hacer tareas de mantenimiento, como habilitar características, inyectar características o incluso instalar controladores.

En el equipo técnico donde está instalado el ADK, buscamos PowerShell desde la Pantalla de Inicio, clic derecho y Ejecutar como administrador:

image

Antes de montar, debemos conocer los índices de las imágenes que incorpora el archivo .WIM; para esto, ejecutamos:

Get-WindowsImage –ImagePath C:81sourcesinstall.wim

image

*Nota: Recordemos que si nuestra imagen no es de Enteprise, muy seguramente tendrá por lo menos dos imágenes internas correspondientes a PRO y a 8.1.

Es necesario que tomemos nota del índice a montar, para mi caso, el 1 correspondiente a Windows 8.1 Enterprise.

Desde el mismo PowerShell, una vez sepamos nuestro índice, ejecutamos:

Mount-WindowsImage -ImagePath C:81sourcesinstall.wim –Index # -Path C:Mount

Donde #, corresponde al índice de la imagen. Para mi caso, siendo el 1:

Mount-WindowsImage -ImagePath C:81sourcesinstall.wim -Index 1 -Path C:Mount

image

*Nota: Es normal que el proceso tarde varios minutos.

Nuestra carpeta de Mount, ahora debe tener contenido similar a nuestro directorio principal donde se instala el sistema operativo:

image

Activando .NET Framework

Esta es la parte más importante, pues es donde le diremos a la imagen montada que habilite el .NET Framework 3.5; para esto, desde la consola de PowerShell, ejecutamos:

Enable-WindowsOptionalFeature –Path C:Mount –FeatureName NetFx3 –Source C:81sourcessxs

image

*Nota 1: El último argumento u optión, Source, hace el trabajo de indicarle a la imagen dónde están los archivos de instalación y ahí es donde referenciamos la carpeta sxs en los archivos fuente de Windows para que habilite la característica.

*Nota 2: Es necesario respetar mayúsculas y minúsculas del nombre NetFx3. Pueden ver la captura más grande haciendo clic en ella.

Si quieren habilitar otra característica como algún juego, o hasta Hyper-V, deben especificarla de la misma forma. Para saber todos los nombres, pueden usar el cmd-let en un equipo online: Get-WindowsOptionalFeature –Online.

Desmontando y guardando cambios

Una vez terminado lo anterior, procedemos desde la consola de PowerShell a desmontar la imagen guardando cambios para que el .NET Framework 3.5 se quede habilitado.

Ejecutamos:

Dismount-WindowsImage –Path C:Mount –Save

image

*Nota: Esto puede tardar varios minutos; además, recomiendo cerrar cualquier otra consola o ventana del Explorador abierta mientras se hace este proceso.

Creando imagen .ISO de instalación

Finalmente, procedemos a crear nuestra imagen booteable nuevamente para poder hacer la instalación en cualquier equipo. Para esto, buscamos Deployment and Imaging Tools Environment en la Pantalla de Inicio, clic derecho y Ejecutar como administrador:

image

Ahora, crearemos un medio de instalación que pueda arrancar tanto en BIOS como en UEFI. Desde la consola, ejecutamos:

Oscdimg –m –o –u2 –udfver102 –bootdata:2#p0,e,bC:81bootEtfsboot.com#pEF,e,bC:81efimicrosoftbootefisys.bin C:81 C:Win81_Fx3.iso

image

*Nota: Todo es una sola línea.

Instalando y probando

Nuestro último paso, consiste en realizar la instalación del sistema operativo, sea en una máquina virtual o física y no debería importar si es BIOS UEFI o LEGACY BIOS.

Una vez terminada la instalación, deberíamos ver el .NET Framework 3.5 activado si vamos al Panel de Control > Programas > Activar o desactivar características de Windows:

image

Espero sea de utilidad.

PD: No olviden seguirme en Twitter: www.twitter.com/secalderonr

Saludos.

Checho

Implementando Internet Explorer Enterprise Mode para Windows 7/8.1 Update 1

Para los que muy amablemente se toman el tiempo de ingresar a este blog con cierta frecuencia, o que han llegado a diferentes artículos aquí por una u otra razón, se habrán dado cuenta que hace más de un mes no escribo nada, algo que he tratado sea poco común. La razón, es que estaba bastante consumido en tiempo por el proyecto de grado que debo exponer en las próximas semanas en mi Universidad.

Afortunadamente para mi, estoy en la etapa final, y eso me ha dado un espacio para compartir aquí una de las características más interesantes que introdujo el Update para Windows 8.1 y Windows Server 2012 R2: Internet Explorer Enterprise Mode.

Pasaré entonces a hablar en qué consiste Enterprise Mode en términos generales, y después mostraré cómo podemos realizar una implementación básica en nuestra organización, de forma que podamos sacar provecho para usuarios de Windows 7 y Windows 8.1 Update.

Sobre IE 11 Enterprise Mode

Hace ya casi un par de años, en los tiempos de Windows 7 e Internet Explorer 9, escribí un artículo describiendo lo más detallado posible cómo funcionaba la Vista de Compatibilidad. Básicamente, se encargaba de renderizar el contenido de la aplicación web de acuerdo a los datos que devolvía el navegador en la Cadena de Agente.

La vista de compatibilidad cambiaba esa Cadena para que le mintiera al servidor y se mostrara como una versión diferente del navegador, por ejemplo: IE 7 o IE 5.

Sin embargo, esto no llegó a ser tan funcional, pues algunos sitios continuaban con problemas, o los usuarios manipulaban la cadena al presionar el botón de la Vista de Compatibilidad y se generaban problemas. Hay que recordar que esta configuración no era para nada administrable.

Enterprise Mode, es mucho más que una cadena engañosa que ayuda a renderizar el sitio; pues se trata de brindar una compatibilidad mejorada para emular Internet Explorer 8 basado en los siguientes componentes:

image

Como ven, aparte de la Cadena de Agente, ahora IE 11 trae de vuelta componentes ActiveX, Binarios, Funciones descontinuadas y un trabajo de Caching para que la emulación sea lo más parecida a como se comportaba naturalmente Internet Explorer 8. Hay que tener en cuenta, que no todos estos componentes son los tenía IE8, el equipo de Internet Explorer se concentró en traer los más utilizados y que por ende garantizarían un porcentaje muy alto de compatibilidad para los sitios viejos.

*Nota: La razón principal por la que se emula Internet Explorer 8, es que aún tiene más del 20% del mercado, pues es la versión que estaba predeterminadamente en Windows 7 y la última que soportó el retirado Windows XP. Más detalles técnicos, aquí.

Enterprise Mode no está habilitado de forma predeterminada como sí sucede con la Vista de Compatibilidad y otras opciones incluidas en las herramientas de desarrollo (F12); así que se habilita manipulando el Registro de Windows, o como debe ser, de una forma centralizada desde el área de IT con un par de nuevas directivas de grupo incluidas en el Update 1.

Lo más interesante, es que utilizando un archivo XML, podemos granular los sitios que se van a emular en Internet Explorer 8; una vez implementado el archivo dentro de las directivas, cada sitio incluido tendrá un icono de unos edificios en la parte izquierda de la barra de direcciones, y además trabajará siempre emulando IE8, por ejemplo:

image

Enterprise Mode se puede habilitar para que cada usuario lo pueda activar desde el menú de Herramientas de Internet Explorer 11, o para que los sitios indicados se emulen de forma obligatoria, tal cual una directiva sin que se puedan modificar. Daré el detalle en lo que sigue.

Implementando Enterprise Mode

Implementar Enterprise Mode en nuestra organización, es relativamente fácil y la infraestructura dependerá de qué tanta gestión se le quiera dar.

Yo me concentraré en el considero, sería el camino más adecuado, y es permitir a los usuarios de la organización que activen o desactiven Enterprise Mode en los sitios que naveguen, monitorear esto y de acuerdo a los sitios que se hayan identificado corren mejor emulando IE8, se despliegue un XML para que a todos los usuarios se les aplique y no lo puedan cambiar.

Requerimientos:

– Un Servidor 2008/2008 R2/2012/2012 R2 en donde se pueda instalar un sitio de IIS y en el que todos los equipos de la empresa tengan acceso.

– En el Servidor donde se instale el IIS, crear una carpeta llamada ModoEmpresarial en el directorio: C:inetpub, es decir: C:inetpubModoEmpresarial.

*Nota 1: El nombre de la carpeta puede ser cualquiera diferente a ModoEmpresarial.

*Nota 2: Los pasos para instalar y configurar el IIS, previos a crear la carpeta, están más adelante en Instalando y configurando el servidor IIS.

– Un controlador de dominio, de preferencia con Server 2012 R2 Update, donde se van a implementar las directivas de grupo referentes a Enterprise Mode.

– Descargar e instalar en el Controlador de Dominio el Enterprise Mode Site List Manager para generar el XML de una forma simple:
http://www.microsoft.com/en-us/download/details.aspx?id=42501

Instalando y configurando el servidor IIS

Para este artículo, el servidor IIS y el controlador de Dominio estarán en el mismo equipo, pero obviamente en una organización es muy probable que varíe.

Desde el Dashboard en el Servidor, clic en Add Roles and Features para abrir el asistente de roles y características.

En la página de Before you begin, clic en Next:

image

En la página de Select installation type, clic en Next:

image

En la página de Select destination server, escoger el servidor donde se instalará el rol y clic en el botón Next:

image

En la página de Select server roles, escoger Web Server (IIS), y en la nueva ventana, clic en Add Features:

image

Clic en el botón Next.

En la página de Features, clic en el botón Next:

image

En la página de Web Server Role (IIS), clic en Next:

image

En la página de Role Services, buscamos el nodo de Application Development, seleccionamos ASP y en la ventana emergente, clic en Add Features. Nos debe quedar así:

image

*Nota: El rol de ASP es necesario para poder recibir el log que entra de cada equipo cliente al activar o desactivar Enterprise Mode en algún sitio.

Clic en el botón Next.

En la página de Confirmation, clic en el botón Install:

image

*Nota: El proceso puede tardar algunos minutos.

En la página final de Results, clic en el botón Close para terminar:

image

Configurando el sitio

Ya está instalado nuestro IIS, ahora es necesario crear un nuevo sitio que de preferencia, sea explícito para recibir todo los logs de Enterprise Mode únicamente.

Desde el Dashboard, clic en el menú de Tools en la parte superior derecha y seleccionamos Internet Information Services (IIS) Manager.

En la consola, expandimos nuestro servidor, clic derecho en el nodo de Sites y seleccionamos Add Website…

image

Lo importante aquí, es asignar nombre, la ruta de nuestra carpeta ModoEmpresarial creada en los requerimientos y establecer un puerto:

image

El puerto escogí que fuera el 8080, pero bien podría ser el 80, 81 o cualquier otro disponible.

Clic en el botón OK para terminar. El sitio debe quedar listado en el nodo de Sites.

Ahora, desde la Pantalla de Inicio en el servidor de IIS, buscamos Notepad, clic derecho y Ejecutar como administrador.

En el Bloc de Notas, pegamos la siguiente información:

<% @ LANGUAGE=javascript %>

<%

Response.AppendToLog("Enterprise Mode;" + Request.Form("URL") + " ;" +
Request.Form("EnterpriseMode"));

%>

Se vería así:

image

Hacemos clic en el menú Archivo > Guardar como…, navegamos hasta C:inetputModoEmpresarial, especificamos el nombre ModoEmpresarial.asp al archivo, escogemos Todos los tipos al lado de Guardar como tipo y clic en Guardar:

image

Nota: Este archivo .asp no lo cree yo; fue tomado en base a la presentación hecha por Fred Pullen de Microsoft en el TechED 2014, pues aún no hay documentación oficial sobre este proceso.

Por último, volvemos a la consola de IIS Manager, seleccionamos nuestro sitio debajo del nodo de Sites, y hacemos doble clic en Logging para personalizar qué deseamos que nos capture de cada equipo que reporte páginas para Enterprise Mode:

image

Hacemos clic en el botón Select Fields dentro de Logging y aquí ya escogemos a preferencia qué deseamos aparezca en el archivo de log. Lo importante es que se mantenga el URI Query. Por ejemplo, yo quiero ver la fecha, la IP, nombre de usuario y máquina:

image

Hacemos clic en el botón Apply del panel derecho.

Para finalizar, seleccionamos nuestro sistio y en el panel de Manage Website, hacemos clic en el enlace de Restart:

image

Es buena práctica que antes de pasar a lo siguiente, prueben desde los clientes el acceso al sitio creado de IIS, en este caso quedaría: http://zion:8080/ donde “zion” hace referencia al nombre del equipo donde está instalado IIS:

image

*Nota 1: Cuando uno crea un nuevo sitio, el .html predeterminado no se crea con él; lo que yo hice fue copiarlo de la carpeta wwwroot ubicada en inetput a la carpeta ModoEmpresarial para que me abriera algo al ingresar.

*Nota 2: Para muchos es más que obvio, pero paso a decir lo siguiente porque para mi no lo fue (pasé de novato)… es necesario crear una regla de Inbound en el Firewall donde está el IIS correspondiente al puerto (en este caso 8080) para que la conexión sea efectiva.

Creando Directiva de Grupo (Parte 1)

Después de instalar, configurar y haber probado el acceso al sitio, nos queda implementar la primera directiva de grupo encargada de enviar toda evidencia de activación o desactivación de Enterprise Mode al log de IIS. Además de esto, la directiva también habilitará Enterprise Mode para que cada usuario pueda emular un sitio yendo al menú Herramientas > Modo Empresarial.

Dicho esto, en el Controlador de Dominio, abrimos el Administrador de Directivas de Grupo, editamos nuestra plantilla y navegamos hasta:

Computer ConfigurationPoliciesAdministrative TemplatesWindows ComponentsInternet Explorer

Doble clic en la plantilla:

Let users turn on and use  Enterprise Mode from the tools menu.

Habilitamos la plantilla y en la dirección que nos pide en la parte inferior, escribimos la del sitio del IIS que creamos, agregando el archivo .asp creado, por ejemplo:

http://zion:8080/ModoEmpresarial.asp

image

*Nota: Esta directiva se puede habilitar sin necesidad de agregar el sitio IIS, de esa forma, cada usuario podría activar Enterprise Mode, pero no generaría logs en el servidor.

Probando directiva

En los equipos cliente, basta iniciar sesión con un usuario de dominio, o actualizar las directivas de grupo en caso de que ya se haya iniciado con el comando gpupdate /force, y empezar a activar los sitios.

Para seguir en un orden este artículo, utilizaré una página fictisia, en este caso, la predeterminada del IIS, agregando una pequeña aplicación (http://zion/HolaMundo).

Como usuario piloto, lo que tendría que hacer es ir al menú Herramientas y habilitar el Enterprise Mode para esa web en específico:

image

El sitio volverá a cargar, pero el resultado será diferente ahora:

image

Como ven, aparece el icono de unos edificios indicando que corre sobre Enterprise Mode. Si el sitio tuviese algún tipo de problema de compatibilidad en la aplicación de HolaMundo solamente, se podría ver ahora mucho mejor, pues en este momento estaría andando de forma emulada sobre IE8.

¿Qué pasa en el Servidor? Basta con ir a donde está el IIS instalado y navegar hasta la carpeta de Logs en: C:inetputlogsLogFiles, ahí abrimos la carpeta correspondiente a nuestro sitio (aparecen en el mismo orden que en el IIS pero con un código) y ver todos los archivos logs que se han generado:

image

Al abrir el último, nos encontraremos con las líneas que nos permitirán saber qué han o no activado los usuarios para Enterprise Mode:

EM

En este caso, sabemos que en el equipo ZION, se activó el Enterprise Mode para la aplicación HolaMundo que tiene como raíz http://zion.

Creando Directiva de Grupo (Parte 2)

Esta es la última parte, donde después de ver el log de acuerdo al tiempo que hayas especificado en el Logging dentro del IIS, decides qué sitios se están reportando con más frecuencia para ser usados emulando IE8 a través del Enteprise Mode.

Continuando el ejemplo, sabemos que http://zion/ como raíz funciona bien, pero la aplicación de http://zion/HolaMundo es la que están activando con Enterprise Mode, por ende, es la que se debe implementar para todos los usuarios.

Creando el XML con el Enterprise Mode List Manager

Con el Enterprise Mode Site List Manager, podemos crear una lista completa de sitios, sea raíz o una aplicación interna para decidir qué corre y no corre sobre Enterprise Mode.

Instalamos la herramienta en el Controlador de Dominio, aunque no es necesario allí, y la ejecutamos para empezar a administrar nuestros sitios:

image

Hacemos clic en el botón Add agregamos la URL del sitio (sin el http) especificamos si deseamos correrlo sobre Enterprise Mode o Default Mod y clic en el botón Save:

image 

Nos debe quedar todo listado:

image

Cuando hayamos agregado todos los sitios de la misma forma, hacemos clic en el menú File y seleccionamos Save to XML:

image

Ese XML lo debemos guardar en un recurso compartido donde todos los usuarios puedan tener acceso una vez aplicada la directiva.

En el controlador de dominio, abrimos nuestro Administrador de Directivas de Grupo, editamos nuestra plantilla y navegamos hasta:

Computer ConfigurationPoliciesAdministrative TemplatesWindows ComponentsInternet Explorer

Doble clic en la plantilla: Use the Enterprise Mode IE website list.

Habilitamos (Enabled) la directiva y como parámetro en el cuadro de texto, indicamos la ruta compartida de nuestro XML:

image

Aplicamos y aceptamos para que se implemente la directiva.

Cada que el usuario ingrese, siempre verá por obligación la página referenciada en Enterprise Mode:

image

*Nota final: Es necesario aclarar, que bajo las pruebas que hice, no es posible activar Enterprise Mode a través de Directivas para sitios IIS como muestro en las capturas; sin embargo, Windows internamente busca por configuración de Enterprise Mode en una clave de registro no asociada a la subclave de Policies, y ahí sí que lo permite. No entro en detalle porque no cobra mucho sentido, solo lo hice para poder mostrar el comportamiento real.

¡Por fin terminamos!

Tratar de escribir en TechNet/Community Wiki un artículo más corto mirando solo la parte del List Manager, pero donde pueda entrar más en profundidad sobre cómo se ve de cara al usuario.

Espero sea de utilidad.

Saludos.

Checho