{"id":10974,"date":"2016-10-25T19:41:31","date_gmt":"2016-10-25T17:41:31","guid":{"rendered":"https:\/\/www.jmsolanes.net\/es\/?p=10974"},"modified":"2016-10-25T19:41:32","modified_gmt":"2016-10-25T17:41:32","slug":"creacion-maquinas-virtuales-hyperv-automaticamente","status":"publish","type":"post","link":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/","title":{"rendered":"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente"},"content":{"rendered":"<p>Esta entrada consiste en el proceso de\u00a0<strong>creaci\u00f3n m\u00e1quinas virtuales sobre Hyper-V de forma automatizada<\/strong>, con una configuraci\u00f3n concreta a partir de un disco duro, que se utiliza de plantilla, mediante un\u00a0<strong>script de PowerShell<\/strong>. Normalmente, este proceso se hace con\u00a0<strong>Microsoft System Center Virtual Machine Manager<\/strong>, sin embargo<strong>, en un entorno peque\u00f1o o si no disponemos de esta herramienta<\/strong>, esta puede ser una buena forma de\u00a0<strong>semi-automatizaci\u00f3n<\/strong>.<\/p>\n<p>&nbsp;<\/p>\n<h2>Preparando una maqueta de Windows Server 2016 para la creaci\u00f3n m\u00e1quinas virtuales<\/h2>\n<p>Ei que tambi\u00e9n sirve para la versi\u00f3n Windows Server 2012 R2 y Windows 10. El proceso es el mismo.<\/p>\n<p>Para empezar\u00a0<strong>hay que disponer de un disco duro virtual que act\u00fae como plantilla para las nuevas m\u00e1quinas virtuales<\/strong>, algunos lo llamar\u00e9is maqueta, otros plancha, otros maestro, etc&#8230; la finalidad es la misma.\u00a0<strong>Microsoft ha actualizado el sistema operativo de servidores<\/strong>, es una buena ocasi\u00f3n de crear las nuevas plantillas con\u00a0<a href=\"\/?p=10873\"><strong>Microsoft Windows Server 2016<\/strong><\/a>, ya sea con una versi\u00f3n de escritorio o core.<\/p>\n<p>Naturalmente,\u00a0<strong>la primera m\u00e1quina virtual se tiene que montar a mano<\/strong>, (por lo\u00a0menos en esta entrada), pero\u00a0<strong>una vez la tenemos a nuestro gusto se puede dejar preparada<\/strong> para que act\u00fae como plantilla.<\/p>\n<p>&nbsp;<\/p>\n<h3>\u00bfQu\u00e9 pasa con la licencia de Windows?<\/h3>\n<p>Al\u00a0<strong>crear una plantilla no es adecuado hacerlo en un equipo con una licencia instalada<\/strong>, ya que\u00a0<strong>al hacer la plantilla esta se pierde<\/strong>. Lo normal es<strong> hacerlo sin licencia<\/strong> o con una\u00a0<strong>licencia de activaci\u00f3n autom\u00e1tica<\/strong>. Es decir, unas licencias preestablecidas que al introducirlas desencadena una serie de acciones en la m\u00e1quina, por ejemplo, buscar en la red un equipo que asigne autom\u00e1ticamente las licencias (licencias KMS) o bien, si es una m\u00e1quina virtual, que se active sola desde el anfitri\u00f3n (AVMA).<\/p>\n<blockquote><p>Al crear la plantilla os recomiendo utilizar una clave AVMA (Automatic Virtual Machine Activation) o bien una KMS.<\/p><\/blockquote>\n<h4>Licencias AVMA (Automatic Virtual Machine Activation)<\/h4>\n<p>Las\u00a0<strong>m\u00e1quinas se activan autom\u00e1ticamente mediante la licencia del anfitri\u00f3n<\/strong>.\u00a0<strong>Funciona en entornos con Microsoft Hyper-V<\/strong>, tanto para<strong> licenciamiento OEM<\/strong> (adquirido con la m\u00e1quina) como con\u00a0<strong>licenciamiento de Volumen\u00a0<\/strong>(licencias de contrato OPEN o SELECT).<\/p>\n<blockquote><p>El anfitri\u00f3n tiene que ser un Windows Server 2012 R2 <strong>Datacenter<\/strong> o Windows Server 2016 <strong>Datacenter<\/strong>. \u00a1<strong>No sirve en licencias Standard!<\/strong><\/p><\/blockquote>\n<p>Si la\u00a0<strong>m\u00e1quina anfitri\u00f3n<\/strong> es un\u00a0<strong>servidor Windows Server 2016 Datacenter<\/strong>, puede\u00a0<strong>activar\u00a0<\/strong>m\u00e1quinas virtuales<strong> Windows Server 2016<\/strong> o\u00a0<strong>2012 R2<\/strong> con las ediciones\u00a0<strong>Datacenter, Standard o Essentials<\/strong>.<\/p>\n<p>Si la\u00a0<strong>m\u00e1quina anfitri\u00f3n\u00a0<\/strong>es un\u00a0<strong>servidor Windows Server 2012 R2 Datacenter<\/strong>, puede\u00a0<strong>activar<\/strong> m\u00e1quinas virtuales\u00a0<strong>Windows Server 2012 R2<\/strong> con las ediciones\u00a0<strong>Datacenter, Standard o Essentials<\/strong>. \u00a1No puede activar m\u00e1quinas virtuales con Windows Server 2016!<\/p>\n<p>&nbsp;<\/p>\n<p>Para que las m\u00e1quinas virtuales se activen con este m\u00e9todo, cumpliendo todo lo anterior, la\u00a0<strong>clave de producto que deben tener instalada los equipos o m\u00e1quinas virtuales para la activaci\u00f3n autom\u00e1tica corresponde a\u00a0<\/strong>las siguientes tablas:<\/p>\n<blockquote><p>Las siguientes licencias <strong>NO activan el producto por s\u00ed solas<\/strong>, simplemente se informa al sistema operativo que debe hacer alguna cosa para encontrar la licencia definitiva, <strong>si no lo encuentra la m\u00e1quina se queda sin activar<\/strong>.<\/p><\/blockquote>\n<p><strong>Claves de activaci\u00f3n AVMA para Windows Server 2012 R2<\/strong> (s\u00f3lo activa m\u00e1quinas virtuales Windows Server 2012 R2)<\/p>\n<table class=\"table table-striped\">\n<thead>\n<tr>\n<th>Edici\u00f3n<\/th>\n<th>Clave a instalar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Datacenter<\/td>\n<td>Y4TGP-NPTV9-HTC2H-7MGQ3-DV4TW<\/td>\n<\/tr>\n<tr>\n<td>Standard<\/td>\n<td>DBGBW-NPF86-BJVTX-K3WKJ-MTB6V<\/td>\n<\/tr>\n<tr>\n<td>Essentials<\/td>\n<td>K2XGM-NMBT3-2R6Q8-WF2FK-P36R2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><strong>Claves de activaci\u00f3n AVMA para Windows Server 2016<\/strong> (activa m\u00e1quinas virtuales Windows Server 2012 R2 y Windows Server 2016<\/p>\n<table class=\"table table-striped\">\n<thead>\n<tr>\n<th>Edici\u00f3n<\/th>\n<th>Clave a instalar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Datacenter<\/td>\n<td>TMJ3Y-NTRTM-FJYXT-T22BY-CWG3J<\/td>\n<\/tr>\n<tr>\n<td>Standard<\/td>\n<td>C3RCX-M6NRP-6CXC9-TW2F2-4RHYD<\/td>\n<\/tr>\n<tr>\n<td>Essentials<\/td>\n<td>B4YNW-62DX9-W8V6M-82649-MHBKQ<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Si en el\u00a0<strong>proceso de instalaci\u00f3n no se ha utilizado<\/strong> una clave de este tipo,\u00a0<strong>se puede a\u00f1adir o cambiar mediante el siguiente comando de consola de sistema<\/strong>:<\/p>\n<pre>slmgr \/ipk &lt;clave_AVMA&gt;<\/pre>\n<p>Por ejemplo, si tenemos una m\u00e1quina virtual con Windows Server 2016 Standard, desde la consola de sistema ejecutaremos el siguiente comando para instalar la clave de producto:<\/p>\n<pre>slmgr \/ipk C3RCX-M6NRP-6CXC9-TW2F2-4RHYD<\/pre>\n<p>&nbsp;<\/p>\n<h4>Licencias KMS<\/h4>\n<p>Son para la activaci\u00f3n de equipos\u00a0<strong>mediante la red interna<\/strong>. Requieren de un\u00a0<strong>servidor de licencias<\/strong>, que\u00a0<strong>tiene instalada la clave KMS que se proporciona al comprar las licencias<\/strong>. Esta clave\u00a0<strong>s\u00f3lo se obtiene mediante un contrato de Volumen<\/strong>: OPEN, SELECT&#8230;\u00a0<strong>No sirve<\/strong> para instalaciones\u00a0<strong>con licencias OEM<\/strong> (licencias compradas con el equipo), en estos casos se tienen que instalar las licencias\u00a0<strong>MAK<\/strong>,\u00a0<strong>asignada a cada equipo<\/strong>, ya sea f\u00edsico o virtual.<\/p>\n<p>A no ser que sean\u00a0<strong>licencias de Windows Server Datacenter sobre Hyper-V<\/strong> que se puede utilizar el m\u00e9todo anterior, el\u00a0<strong>AVMA<\/strong>.<\/p>\n<p><strong>Claves de activaci\u00f3n KMS para Windows Server 2016<\/strong><\/p>\n<table class=\"table table-striped\">\n<thead>\n<tr>\n<th>Edici\u00f3n<\/th>\n<th>Clave a instalar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Datacenter<\/td>\n<td>CB7KF-BWN84-R7R2Y-793K2-8XDDG<\/td>\n<\/tr>\n<tr>\n<td>Standard<\/td>\n<td>WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY<\/td>\n<\/tr>\n<tr>\n<td>Essentials<\/td>\n<td>JCKRF-N37P4-C2D82-9YXRT-4M63B<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><strong>Claves de activaci\u00f3n KMS para Windows Server 2012 R2<\/strong><\/p>\n<table class=\"table table-striped\">\n<thead>\n<tr>\n<th>Edici\u00f3n<\/th>\n<th>Clave a instalar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Datacenter<\/td>\n<td>W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9<\/td>\n<\/tr>\n<tr>\n<td>Standard<\/td>\n<td>D2N9P-3P6X9-2R39C-7RTCD-MDVJX<\/td>\n<\/tr>\n<tr>\n<td>Essentials<\/td>\n<td>KNC87-3J2TX-XB4WP-VCPJV-M4FWM<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Tambi\u00e9n pasa lo mismo que en el caso anterior, si la m\u00e1quina virtual o, tambi\u00e9n en este caso, la f\u00edsica no se han instalado con esta clave de producto, se puede cambiar mediante el comando de consola de sistema:<\/p>\n<pre>slmgr \/ipk &lt;clave_KMS&gt;<\/pre>\n<p>Ya s\u00e9 que no es objeto de esta entrada, pero quiz\u00e1s tambi\u00e9n os interesa tener las claves KMS del sistema operativo cliente Microsoft Windows 10:<\/p>\n<p><strong>Claves de activaci\u00f3n KMS para Windows 10<\/strong><\/p>\n<table class=\"table table-striped\">\n<thead>\n<tr>\n<th>Edici\u00f3n<\/th>\n<th>Clave a instalar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Professional<\/td>\n<td>W269N-WFGWX-YVC9B-4J6C9-T83GX<\/td>\n<\/tr>\n<tr>\n<td>Enterprise<\/td>\n<td>NPPR9-FWDCX-D2C8J-H872K-2YT43<\/td>\n<\/tr>\n<tr>\n<td>Enterprise 2015 LTSB<\/td>\n<td>WNMTR-4C88C-JK8YV-HQ7T2-76DF9<\/td>\n<\/tr>\n<tr>\n<td>Enterprise 2016 LTSB<\/td>\n<td>DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ<\/td>\n<\/tr>\n<tr>\n<td>Education<\/td>\n<td>NW6C2-QMPVW-D7KKK-3GKT6-VCFB2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h3>Archivo para la configuraci\u00f3n desatendida<\/h3>\n<p>El siguiente punto es\u00a0<strong>preparar el archivo de configuraci\u00f3n desatendida (unattend.xml)<\/strong> para la inicializaci\u00f3n del equipo una vez arranca por primera vez sin que pregunte demasiada cosa o nada.<\/p>\n<p><strong>Os dejo un archivo\u00a0<a href=\"https:\/\/www.jmsolanes.net\/fitxers\/unattend.xml\">unattend.xml<\/a> de ejemplo<\/strong>, que he creado con el\u00a0entorno\u00a0<a href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=50407\">Microsoft Deployment Toolkit<\/a>.\u00a0La configuraci\u00f3n es para tener el entorno en ingl\u00e9s, pero el teclado y configuraci\u00f3n regional de las aplicaciones en espa\u00f1ol. La zona horaria corresponde a Espa\u00f1a. El nombre del equipo ser\u00e1 autom\u00e1tico empezando con el nombre de la empresa que se ha indicado en el archivo. Y, lo m\u00e1s importante, la contrase\u00f1a del Administrador local se establece en\u00a0<strong>P@ssw0rd<\/strong><\/p>\n<p><strong>Copiar el archivo en la carpeta del sysprep<\/strong> por ejemplo. La ruta corresponde a: c:\\Windows\\System32\\sysprep con el\u00a0nombre\u00a0<a href=\"https:\/\/www.jmsolanes.net\/fitxers\/unattend.xml\">unattend.xml<\/a>.<\/p>\n<p>Si lo tenemos todo a punto,\u00a0<strong>cerramos la m\u00e1quina<\/strong> (prepararla para hacer copias) para poder desplegar otras m\u00e1quinas a partir de esta.\u00a0<strong>Desde una consola de sistema con privilegios de administrador<\/strong>, ejecutar el siguiente comando:<\/p>\n<pre>c:\\Windows\\System32\\sysprep\\Sysprep \/generalize \/oobe \/shutdown \/unattend:c:\\Windows\\system32\\sysprep\\unattend.xml \/mode:vm<\/pre>\n<p>El sistema prepara el equipo para ser copiado y lo deja parado. \u00a1<strong>Es el momento de hacer la copia del disco duro virtual!\u00a0<\/strong>para otras m\u00e1quinas virtuales.<\/p>\n<figure id=\"attachment_10975\" aria-describedby=\"caption-attachment-10975\" style=\"width: 740px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10975 size-full\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-001.png\" alt=\"Creaci\u00f3 m\u00e0quines virtuals. Proc\u00e9s Sysprep.\" width=\"740\" height=\"555\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-001.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-001-300x225.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><figcaption id=\"caption-attachment-10975\" class=\"wp-caption-text\">Creaci\u00f3n m\u00e1quinas virtuales. Proceso de cierre de la maqueta con Sysprep.<\/figcaption><\/figure>\n<p>Una vez tenemos una\u00a0<strong>nueva m\u00e1quina con una copia del disco duro que hemos preparado<\/strong>, s\u00f3lo\u00a0<strong>hay que arrancarla<\/strong>. El sistema la ha personalizado s\u00f3lo con lo que\u00a0<strong>se ha especificado en el archivo\u00a0<a href=\"https:\/\/www.jmsolanes.net\/fitxers\/unattend.xml\">unattend.xml<\/a>.<\/strong><\/p>\n<figure id=\"attachment_10977\" aria-describedby=\"caption-attachment-10977\" style=\"width: 740px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10977 size-full\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-002.png\" alt=\"Creaci\u00f3 m\u00e0quines virtuals. Inici de la nova m\u00e0quina.\" width=\"740\" height=\"555\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-002.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-002-300x225.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><figcaption id=\"caption-attachment-10977\" class=\"wp-caption-text\">Creaci\u00f3n m\u00e1quinas virtuales. Inicio de la nueva m\u00e1quina, el sistema operativo se personaliza.<\/figcaption><\/figure>\n<p>Esperar un rato a que acabe, seguramente reiniciar\u00e1 alguna vez. No os preocup\u00e9is est\u00e1 siguiendo el gui\u00f3n. No os tiene que preguntar nada, el proceso es completamente autom\u00e1tico con lo que le hemos pedido.<\/p>\n<figure id=\"attachment_10979\" aria-describedby=\"caption-attachment-10979\" style=\"width: 740px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10979 size-full\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-003.png\" alt=\"Creaci\u00f3 m\u00e0quines virtuals. Acabant de configurar els detalls de la personalitzaci\u00f3.\" width=\"740\" height=\"555\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-003.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-003-300x225.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><figcaption id=\"caption-attachment-10979\" class=\"wp-caption-text\">Creaci\u00f3n m\u00e1quinas virtuales. Acabando de configurar los detalles de la personalizaci\u00f3n del equipo de forma autom\u00e1tica.<\/figcaption><\/figure>\n<p>Finalizado todo el proceso, hacer\u00a0<strong>Control + Alt + Supr<\/strong> para\u00a0<strong>iniciar sesi\u00f3n<\/strong>. No hemos tenido que tocar nada y el sistema est\u00e1 listo para trabajar. Ojo,\u00a0<strong>si hab\u00e9is utilizado el archivo\u00a0anterior <a href=\"https:\/\/www.jmsolanes.net\/fitxers\/unattend.xml\">unattend.xml<\/a><\/strong>,<strong>\u00a0<\/strong>recordad que ha cambiado la\u00a0<strong>contrase\u00f1a de administrador local:\u00a0P@ssw0rd<\/strong><\/p>\n<figure id=\"attachment_10981\" aria-describedby=\"caption-attachment-10981\" style=\"width: 740px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10981 size-full\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-004.png\" alt=\"Creaci\u00f3 m\u00e0quines virtuals. La m\u00e0quina ja s'ha iniciat sense cap intervenci\u00f3 externa.\" width=\"740\" height=\"555\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-004.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-004-300x225.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><figcaption id=\"caption-attachment-10981\" class=\"wp-caption-text\">Creaci\u00f3n m\u00e1quinas virtuales. La m\u00e1quina ya se ha iniciado sin ninguna intervenci\u00f3n externa. Todo a punto para empezar a trabajar.<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<h2>Script PowerShell creaci\u00f3n maquinas virtuales autom\u00e1ticamente<\/h2>\n<p>Tenemos la maqueta de la m\u00e1quina virtual, o mejor dicho, su disco duro. Es el que est\u00e1 apagado y\u00a0<strong>NO se ha encendido despu\u00e9s de cerrar la maqueta<\/strong>. Lo reservamos en una carpeta aparte para hacer copias para las diferentes m\u00e1quinas que tengamos que crear.<\/p>\n<p>En este apartado<strong> empezamos a programar un poco con PowerShell<\/strong> para hacer lo siguiente:<\/p>\n<ol>\n<li>Crear una nueva m\u00e1quina virtual con una configuraci\u00f3n est\u00e1ndar.<\/li>\n<li>Conectar la m\u00e1quina virtual a un switch virtual predefinido.<\/li>\n<li>Personalizar la configuraci\u00f3n de la m\u00e1quina virtual en cuanto a procesador, memoria, como se tiene que poner en marcha, como se tiene que parar, servicios de integraci\u00f3n entre anfitri\u00f3n y m\u00e1quina virtual.<\/li>\n<li>Mover la definici\u00f3n de la m\u00e1quina virtual a una carpeta con su nombre del qu\u00e9 colgar\u00e1n todos los archivos que dependen de ella.<\/li>\n<li>Crear su disco duro C a partir del disco duro maestro que se ha creado en el proceso anterior.<\/li>\n<li>Asignar el disco duro C a la m\u00e1quina virtual y establecerlo como \u00fanico m\u00e9todo de arranque de la misma.<\/li>\n<li>Poner en marcha la nueva m\u00e1quina virtual.<\/li>\n<li>El proceso de instalaci\u00f3n desatendida nos la dejar\u00e1 con la pantalla del Control + Alt + Supr. Lista para trabajar.<\/li>\n<\/ol>\n<p>Ahora bien, <strong>no os quiero dejar s\u00f3lo el script para ejecutarlo y ya est\u00e1<\/strong>, no estar\u00eda haciendo bien el trabajo.<\/p>\n<blockquote><p>Se trata de ense\u00f1ar a pescar, para que pod\u00e1is seguir solos y no de daros todo masticado para que siempre dependais de alguien.<\/p><\/blockquote>\n<p>En el anfitri\u00f3n de virtualizaci\u00f3n,\u00a0<strong>abrir la consola de PowerShell en su entorno gr\u00e1fico y con privilegios de administrador<\/strong>. En el\u00a0<strong>men\u00fa de inicio<\/strong> t\u00e9neis que\u00a0<strong>buscar el Windows PowerShell ISE<\/strong>.\u00a0<strong>Bot\u00f3n derecho<\/strong> sobre el nombre y hacer clic en\u00a0<strong>ejecutar como Administrador<\/strong>.<\/p>\n<figure id=\"attachment_10989\" aria-describedby=\"caption-attachment-10989\" style=\"width: 708px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-10989\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-005.png\" alt=\"Obrir la consola gr\u00e0fica de PowerShell amb privilegis d'administrador.\" width=\"708\" height=\"659\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-005.png 708w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-005-300x279.png 300w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><figcaption id=\"caption-attachment-10989\" class=\"wp-caption-text\">Abrir la consola gr\u00e1fica de PowerShell con privilegios de administrador.<\/figcaption><\/figure>\n<p>Asegurar que se visualiza la ventana para crear un script. En la pantalla anterior no est\u00e1, hacer clic en la parte superior derecha la opci\u00f3n Script para visualizarla.<\/p>\n<figure id=\"attachment_10991\" aria-describedby=\"caption-attachment-10991\" style=\"width: 740px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-10991\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-006.png\" alt=\"Creaci\u00f3 m\u00e0quines virtuals amb Hyper-V. En l'entorn gr\u00e0fic accedir a la finestra de Script \" width=\"740\" height=\"630\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-006.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-006-300x255.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><figcaption id=\"caption-attachment-10991\" class=\"wp-caption-text\">Creaci\u00f3n m\u00e1quinas virtuales con Hyper-V. En el entorno gr\u00e1fico acceder a la ventana de Script<\/figcaption><\/figure>\n<p>Se debe\u00a0<strong>escribir en la parte de arriba<\/strong>, para despu\u00e9s<strong> poder ejecutar en la consola de PowerShell de la parte inferior de forma seguida<\/strong>. Lo haremos paso a paso, pero despu\u00e9s lo juntaremos en dos funciones.<\/p>\n<p><strong>Establecemos los par\u00e1metros<\/strong>, digamos est\u00e1ndares,\u00a0<strong>de las m\u00e1quinas virtuales a crear<\/strong>. Nombre de la m\u00e1quina virtual, ubicaci\u00f3n del disco duro que se utilizar\u00e1 como plantilla (el que se ha creado en el paso anterior), nombre del switch virtual donde se conectar\u00e1 la m\u00e1quina virtual, cantidad de memoria RAM est\u00e1tica que tendr\u00e1 la m\u00e1quina virtual y el n\u00famero de virtual CPUs. Todo esto lo ponemos en variables al principio. Si tenemos la necesidad de cambiarlo, es m\u00e1s f\u00e1cil hacerlo as\u00ed que con c\u00f3digo de por medio. Por lo tanto, se tienen que declarar variables. En PowerShell la\u00a0<strong>declaraci\u00f3n de variables se hace mediante el s\u00edmbolo del d\u00f3lar ($)<\/strong> delante del nombre. Los\u00a0<strong>comentarios se marcan con el s\u00edmbolo almohadilla (#)<\/strong> seguido del comentario. Estos no hace falta que se copien, sirven para entender el c\u00f3digo.<\/p>\n<pre>$nombreVM = \"srvPRUEBA\"\r\n$plantillaVHDX = \"D:\\VMs\\Plantillas\\Windows2016coreplantilla.vhdx\"\r\n$switch = \"swExtern\" #switch virtual donde conectar las m\u00e1quinas virtuales.\r\n$MemoriaRAM = 2048MB #memoria RAM de la m\u00e1quina virtual.\r\n$CPUs = 2 # n\u00famero de procesadores virtuales<\/pre>\n<p>A continuaci\u00f3n tenemos que jugar un poco con las variables anteriores para la reubicaci\u00f3n de los archivos en el disco duro.<\/p>\n<pre>$CarpetaVM = \"d:\\VMs\\\" + $nombreVM  # La carpeta que contendr\u00e1 las subcarpetas y archivos de la VM.\r\n$CarpetaVHDX = $CarpetaVM + \"\\Virtual Hard Disks\\\" # La carpeta donde se copiar\u00e1 el disco duro virtual.\r\n$UbicacionDisco = $CarpetaVHDX + $nombreVM + \"_C.vhdx\" # El nombre del disco duro virtual para la unidad C.<\/pre>\n<p>Ya tenemos todos los datos necesarios. El siguiente paso es hacer alguna cosa con ellos. Empezamos comprobando que el switch virtual existe. En caso que no exista, creamos uno del tipo Privado donde conectar la m\u00e1quina virtual.<\/p>\n<p>El\u00a0<strong>comando if act\u00faa como condicional<\/strong> (si pasa esto, haz esto otro). \u00bfEl qu\u00e9? pues se\u00a0<strong>hace un listado de los switchs virtuales<\/strong> que tiene el anfitri\u00f3n (Get-VMSwitch). De esta lista<strong> s\u00f3lo se selecciona el que su nombre es el que se ha indicado\u00a0<\/strong>en la variable $switch. Con el resultado,\u00a0<strong>se hace un recuento<\/strong> (.count) de la cantidad de switch que puede haber. Si la lista contiene 1 elemento, bingo, el switch existe. Poniendo el\u00a0<strong>s\u00edmbolo de admiraci\u00f3n al inicio (!)<\/strong>, indica que <strong>se tiene que cumplir precisamente lo contrario<\/strong>, si la lista no es igual a 1, no tenemos switch. Por lo tanto, para no dar errores en la creaci\u00f3n de m\u00e1quinas virtuales, se crea uno de entorno privado. El\u00a0<strong>comando write-host sirve para sacar alguna cosa por pantalla<\/strong>, en caso de crear el switch lo indica con el texto de color verde.<\/p>\n<pre>if (!(Get-VMSwitch | Where-Object -Property Name -eq $switch).count -eq 1)\r\n{\r\n   # El switch virtual no existe, se crea uno del tipo privado.\r\n   New-VMSwitch -Name $switch -SwitchType Private\r\n   write-host(\"No existe el switch parametrizado, se ha creado uno de privado llamado: \" + $switch) -foregroundColor Green\r\n}<\/pre>\n<p>Pasamos a\u00a0<strong>crear la m\u00e1quina virtual<\/strong> propiamente dicha (New-Vm), estableciendo los par\u00e1metros b\u00e1sicos necesarios. Nombre\u00a0(-Name), memoria (-MemoryStartupBytes), switch (-SwitchName) y generaci\u00f3n del hardware (Generation). Ya sab\u00e9is este \u00faltimo, 1 para m\u00e1quinas Windows 2008 R2 atr\u00e1s y 2 para m\u00e1quinas Windows 2012 R2 delante. En lugar de los valores concretos, se utilizan las variables que se han declarado en la primera parte:<\/p>\n<pre>New-VM -Name $nombreVM -MemoryStartupBytes $MemoriaRAM -SwitchName $switch -Generation 2<\/pre>\n<p>Con la m\u00e1quina virtual creada, la parte b\u00e1sica, como que ocupa poco espacio, es el momento de mover todos sus archivos a una ubicaci\u00f3n \u00fanica y controlada, que sin\u00f3 despu\u00e9s nos volvemos locos. Esto se hace con el Move-VMStorage. Indicando la m\u00e1quina virtual (get-vm $nombreVM) y la carpeta de destino (-DestinationStoragePath). Tambi\u00e9n pod\u00e9is ver que se utilizan variables en lugar de nombres concretos.<\/p>\n<pre>Move-VMStorage -VM (get-vm $nombreVM) -DestinationStoragePath $CarpetaVM<\/pre>\n<p><strong>Afinamos la configuraci\u00f3n de la m\u00e1quina virtual<\/strong>. Se define que la\u00a0<strong>memoria sea est\u00e1tica<\/strong> (-StaticMemory) en lugar de din\u00e1mica, el\u00a0<strong>n\u00famero de CPUs<\/strong> (-ProcessorCount), que la\u00a0<strong>m\u00e1quina se ponga en marcha 10 segundos despu\u00e9s de iniciar el anfitri\u00f3n<\/strong> (-AutomaticStartAction Start y \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 -AutomaticStartDelay 10), que la\u00a0<strong>m\u00e1quina se pare ordenadamente al cerrar el anfitr\u00ed\u00f3n<\/strong> (-AutomaticStopAction ShutDown) y que\u00a0<strong>no tenga habilitados los puntos de consistencia<\/strong> (snapshots) por defecto (-CheckpointType Disabled).<\/p>\n<pre>set-vm $nombreVM -StaticMemory -ProcessorCount $CPUs -AutomaticStartAction Start -AutomaticStartDelay 10 -AutomaticStopAction ShutDown -CheckpointType Disabled<\/pre>\n<p>Tambi\u00e9n se\u00a0<strong>deshabilita la sincronizaci\u00f3n de la hora desde el anfitri\u00f3n a la m\u00e1quina virtual<\/strong>. Si esto no lo ten\u00e9is bien configurado y hay una desincronizaci\u00f3n de m\u00e1s de 5 minutos, est\u00e1is fuera del Active Directory y \u00a1supone muchos problemas!<\/p>\n<pre>Disable-VMIntegrationService -VMName $nombreVM -name *time*<\/pre>\n<p>La m\u00e1quina virtual ya est\u00e1 bien definida, falta el disco duro. Crear la carpeta para alojar los discos duros virtuales (new-item) dentro de la carpeta de la m\u00e1quina virtual, cop\u00ecar el disco duro que (copy-item) se ha maquetado y cambiarle el nombre (rename-item).<\/p>\n<pre>New-Item $CarpetaVHDX -type directory\r\nCopy-item $plantillaVHDX -Destination $CarpetaVHDX\r\nRename-Item ($CarpetaVHDX + \"Windows2016coreplantilla.vhdx\") $UbicacionDisco<\/pre>\n<p>A\u00f1adir el nuevo disco duro a la m\u00e1quina virtual (add-vmharddiskdrive) como disco duro SCSI (si la m\u00e1quina es de generaci\u00f3n 1 tiene que ser IDE) y configurarlo como m\u00e9todo de inicio de la m\u00e1quina virtual (set-vmfirmware). Si la m\u00e1quina es de generaci\u00f3n 1 tiene que ser set-vmbios:<\/p>\n<pre>Add-VMHardDiskDrive -VMName $nombreVM -Path $UbicacionDisco -ControllerType SCSI\r\nSet-VMFirmware -VMName $NombreVM -BootOrder (Get-VMHardDiskDrive -VMName $nombrevm)<\/pre>\n<p>Ya est\u00e1 todo a punto, s\u00f3lo queda poner en marcha la m\u00e1quina virtual (start-vm) y que el proceso de maquetaci\u00f3n acabe su trabajo. Nos podemos conectar a ella directamente (vmconnect):<\/p>\n<pre>start-vm (Get-VM $nombreVM)\r\nvmconnect localhost $nombreVM<\/pre>\n<p>Con todo esto escrito en la parte superior, ya se puede poner en pr\u00e1ctica haciendo clic en el bot\u00f3n del\u00a0<strong>play<\/strong> o pulsando la tecla\u00a0<strong>F5<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10997\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-007-1.png\" alt=\"Creaci\u00f3 m\u00e0quines virtuals Hyper-V. Execuci\u00f3 script PowerShell.\" width=\"740\" height=\"524\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-007-1.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-007-1-300x212.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p>Esperar un rato. Dependiendo del\u00a0<strong>tama\u00f1o de la plantilla tardar\u00e1 m\u00e1s o menos en copiarla<\/strong>. Es la parte m\u00e1s pesada de estos script.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11000\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-008.png\" alt=\"Creaci\u00f3 m\u00e0quines virtuals Hyper-V. Executant l'script de PowerShell\" width=\"740\" height=\"524\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-008.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-008-300x212.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p>Para acabar abri\u00e9ndose una consola con la nueva m\u00e1quina virtual acabando de personalizarse y quedarse con el Control + Alt + Supr lista para trabajar.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11002\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-009.png\" alt=\"creacio-vm-hyperv-automaticament-009\" width=\"740\" height=\"524\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-009.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-009-300x212.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>La cosa no acaba aqu\u00ed. Esto s\u00f3lo crea una m\u00e1quina virtual y \u00bfsi quiero crear muchas de seguidas? \u00bfHe de estar modificando este script cada vez? La respuesta es NO, sino que a partir de todo este c\u00f3digo anterior, se crea una funci\u00f3n (function NuevaVM\u00a0{ }) donde dentro de las claves se pone el c\u00f3digo y hacemos una peque\u00f1a variaci\u00f3n, en lugar de especificar el nombre de la m\u00e1quina virtual, hacemos que lo coja del par\u00e1metro ($nombreVM = $args[0]) que se le pasar\u00e1 a la funci\u00f3n. El resto es todo igual (no reproduzco todo el c\u00f3digo de nuevo (&#8230;)).<\/p>\n<pre>function NuevaVM\r\n{\r\n   $nombreVM = $args[0]\r\n\r\n   $plantillaVHDX = \"D:\\VMs\\Plantillas\\Windows2016coreplantilla.vhdx\"\r\n   $switch = \"swExtern\" #switch virtual donde conectar las m\u00e1quinas virtuales.\r\n...\r\n   start-vm (Get-VM $nombreVM)\r\n   vmconnect localhost $nombreVM\r\n}<\/pre>\n<p>Si ahora se ejecuta este script, NO pasa nada, simplemente se ha definido una funci\u00f3n en la consola, pero que no tiene una acci\u00f3n directa en el sistema. No se ha creado ninguna nueva m\u00e1quina virtual ni nada de nada.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11005\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-010.png\" alt=\"Creaci\u00f3 m\u00e0quines virtuals Hyper-V. Creant la funci\u00f3 de PowerShell.\" width=\"740\" height=\"524\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-010.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-010-300x212.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p>Para crear una nueva m\u00e1quina virtual utilizando nuestra funci\u00f3n, se ejecuta el nombre de la funci\u00f3n (NuevaVM) seguida del nombre de la nueva m\u00e1quina virtual (srvDOS).<\/p>\n<pre>nuevavm srvDOS<\/pre>\n<p>Para cerrar, \u00bfy si quiero crear un entorno de varias m\u00e1quinas virtuales a la vez? Por ejemplo una de Active Directory (srvDC), una para Microsoft SQL Server (srvSQL) y dos para servidor web (srvWEB1 y srvWEB2).<\/p>\n<p>Se crea una\u00a0<strong>funci\u00f3n en que se le puedan pasar todos estos nombres<\/strong> (param) y vaya\u00a0<strong>creando<\/strong> (foreach) una a una\u00a0<strong>las m\u00e1quinas virtuales<\/strong> utilizando la\u00a0<strong>funci\u00f3n anterior<\/strong> (NuevaVM).<\/p>\n<pre>function CrearEntornoAppWeb\r\n{\r\n   param([string[]] $VMs)\r\n   foreach ($VM in $VMs)\r\n   {\r\n      write-host(\"Creando m\u00e1quina virtual: \" + $VM) -ForegroundColor Green\r\n      NuevaVM $VM\r\n   }\r\n}<\/pre>\n<p><strong>Es una funci\u00f3n<\/strong>, por lo tanto tampoco ha hecho nada al ejecutarla,\u00a0<strong>simplemente se ha dado de alta en el sistema<\/strong>. Pero ahora tenemos una instrucci\u00f3n muy potente, pon\u00e9os c\u00f3modos mientras va creando y arrancando las 4 m\u00e1quinas virtuales s\u00f3lo:<\/p>\n<pre>CrearEntornoAppWeb srvDC,srvSQL,srvWEB1,srvWEB2<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11007\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-011.png\" alt=\"creacio-vm-hyperv-automaticament-011\" width=\"740\" height=\"524\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-011.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-011-300x212.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p>Una vez finaliza de trabajar para nosotros, tenemos las cuatro m\u00e1quinas encendidas y a punto para trabajar.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11010\" src=\"\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-012.png\" alt=\"Creaci\u00f3 m\u00e0quines virtuals Hyper-V. Entorn desplegat.\" width=\"740\" height=\"524\" srcset=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-012.png 740w, https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament-012-300x212.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>\u00a1Y, claro, no escribiremos cada vez todas estas l\u00edneas de c\u00f3digo!. Men\u00fa\u00a0<strong>Archivo, Guardar como<\/strong>. La pr\u00f3xima vez s\u00f3lo hay que\u00a0<strong>abrirlo<\/strong>, y ejecutarlo para tener a disposici\u00f3n para la creaci\u00f3n m\u00e1quinas virtuales. Tambi\u00e9n se puede a\u00f1adir a otros procesos autom\u00e1ticos, el trabajo gordo ya est\u00e1 hecho. \u00bfCu\u00e1l ser\u00e1 tu pr\u00f3ximo paso?<\/p>\n<p>&nbsp;<\/p>\n<p>Os\u00a0dejo\u00a0<a href=\"https:\/\/github.com\/jmsolanes\/scriptspowershell\/blob\/master\/Creaci%C3%B3n%20m%C3%A1quinas%20virtuales%20Hyper-V.ps1\">el script que he creado<\/a>\u00a0en esta entrada, colgado en\u00a0el <a href=\"https:\/\/github.com\/jmsolanes\/scriptspowershell\">repositorio de GitHub<\/a>, para no picar tanto c\u00f3digo.<\/p>\n<p>&nbsp;<\/p>\n<p>\u00bfTe ha gustado el art\u00edculo? Lo puedes compartir en las redes sociales. Tambi\u00e9n puedes dejar tu opini\u00f3n, comentario o sugerencia. \u00a1Gracias!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente a partir de la creaci\u00f3n de una maqueta y mediante un script de PowerShell.<\/p>\n","protected":false},"author":1,"featured_media":11068,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[81],"tags":[139,300],"class_list":["post-10974","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-opinion","tag-hyper-v-es","tag-maqueta"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente - Josep Maria Solanes<\/title>\n<meta name=\"description\" content=\"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente a partir de la creaci\u00f3n de una maqueta y mediante un script de PowerShell.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente a partir de una maqueta\" \/>\n<meta property=\"og:description\" content=\"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente a partir de la creaci\u00f3n de una maqueta y mediante un script de PowerShell.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/\" \/>\n<meta property=\"og:site_name\" content=\"Josep Maria Solanes\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-25T17:41:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-10-25T17:41:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament.png\" \/>\n\t<meta property=\"og:image:width\" content=\"319\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Josep Ma Solanes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jmsolanes\" \/>\n<meta name=\"twitter:site\" content=\"@jmsolanes\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Josep Ma Solanes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/\"},\"author\":{\"name\":\"Josep Ma Solanes\",\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/#\\\/schema\\\/person\\\/92a59f585073071c7be6649e84b22f78\"},\"headline\":\"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente\",\"datePublished\":\"2016-10-25T17:41:31+00:00\",\"dateModified\":\"2016-10-25T17:41:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/\"},\"wordCount\":3107,\"publisher\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/#\\\/schema\\\/person\\\/eab38fe9bd8d31e081441f1267389ea1\"},\"image\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.jmsolanes.net\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/creacio-vm-hyperv-automaticament.png\",\"keywords\":[\"Hyper-V\",\"maqueta\"],\"articleSection\":[\"Opini\u00f3n\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/\",\"url\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/\",\"name\":\"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente - Josep Maria Solanes\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.jmsolanes.net\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/creacio-vm-hyperv-automaticament.png\",\"datePublished\":\"2016-10-25T17:41:31+00:00\",\"dateModified\":\"2016-10-25T17:41:32+00:00\",\"description\":\"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente a partir de la creaci\u00f3n de una maqueta y mediante un script de PowerShell.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.jmsolanes.net\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/creacio-vm-hyperv-automaticament.png\",\"contentUrl\":\"https:\\\/\\\/www.jmsolanes.net\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/creacio-vm-hyperv-automaticament.png\",\"width\":319,\"height\":200,\"caption\":\"Creaci\u00f3n de m\u00e1quinas virtuales en Hyper-V autom\u00e1ticamente mediante la PowerShell\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/creacion-maquinas-virtuales-hyperv-automaticamente\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/\",\"name\":\"Josep Maria Solanes\",\"description\":\"Professional de les TI\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/#\\\/schema\\\/person\\\/eab38fe9bd8d31e081441f1267389ea1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/#\\\/schema\\\/person\\\/eab38fe9bd8d31e081441f1267389ea1\",\"name\":\"Josep Ma Solanes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/wp-content\\\/uploads\\\/2013\\\/09\\\/JMSolanes-Professional-256x256.jpg\",\"url\":\"https:\\\/\\\/www.jmsolanes.net\\\/wp-content\\\/uploads\\\/2013\\\/09\\\/JMSolanes-Professional-256x256.jpg\",\"contentUrl\":\"https:\\\/\\\/www.jmsolanes.net\\\/wp-content\\\/uploads\\\/2013\\\/09\\\/JMSolanes-Professional-256x256.jpg\",\"width\":256,\"height\":256,\"caption\":\"Josep Ma Solanes\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/wp-content\\\/uploads\\\/2013\\\/09\\\/JMSolanes-Professional-256x256.jpg\"},\"description\":\"Trabajo como director t\u00e9cnico en ICOT, una consultora situada a Tarragona de alcance nacional. Mi foco est\u00e1 puesto en las tecnolog\u00edas de Microsoft, VMware y NetApp. En especial en las soluciones de cloud on-premise, Azure y Office 365 para empresas.\",\"sameAs\":[\"https:\\\/\\\/www.jmsolanes.net\",\"https:\\\/\\\/x.com\\\/jmsolanes\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/#\\\/schema\\\/person\\\/92a59f585073071c7be6649e84b22f78\",\"name\":\"Josep Ma Solanes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/880374faecce9cda50bbb1716a98e92ceb0e9ce84b41e4fcb21e5b434f97d103?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/880374faecce9cda50bbb1716a98e92ceb0e9ce84b41e4fcb21e5b434f97d103?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/880374faecce9cda50bbb1716a98e92ceb0e9ce84b41e4fcb21e5b434f97d103?s=96&d=mm&r=g\",\"caption\":\"Josep Ma Solanes\"},\"description\":\"Trabajo como director t\u00e9cnico en ICOT, una consultora situada a Tarragona de alcance nacional. Mi foco est\u00e1 puesto en las tecnolog\u00edas de Microsoft, VMware y NetApp. En especial en las soluciones de cloud on-premise, Azure y Office 365 para empresas.\",\"sameAs\":[\"https:\\\/\\\/www.jmsolanes.cat\",\"https:\\\/\\\/x.com\\\/jmsolanes\"],\"url\":\"https:\\\/\\\/www.jmsolanes.net\\\/es\\\/author\\\/root\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente - Josep Maria Solanes","description":"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente a partir de la creaci\u00f3n de una maqueta y mediante un script de PowerShell.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/","og_locale":"es_ES","og_type":"article","og_title":"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente a partir de una maqueta","og_description":"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente a partir de la creaci\u00f3n de una maqueta y mediante un script de PowerShell.","og_url":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/","og_site_name":"Josep Maria Solanes","article_published_time":"2016-10-25T17:41:31+00:00","article_modified_time":"2016-10-25T17:41:32+00:00","og_image":[{"width":319,"height":200,"url":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament.png","type":"image\/png"}],"author":"Josep Ma Solanes","twitter_card":"summary_large_image","twitter_creator":"@jmsolanes","twitter_site":"@jmsolanes","twitter_misc":{"Escrito por":"Josep Ma Solanes","Tiempo de lectura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/#article","isPartOf":{"@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/"},"author":{"name":"Josep Ma Solanes","@id":"https:\/\/www.jmsolanes.net\/es\/#\/schema\/person\/92a59f585073071c7be6649e84b22f78"},"headline":"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente","datePublished":"2016-10-25T17:41:31+00:00","dateModified":"2016-10-25T17:41:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/"},"wordCount":3107,"publisher":{"@id":"https:\/\/www.jmsolanes.net\/es\/#\/schema\/person\/eab38fe9bd8d31e081441f1267389ea1"},"image":{"@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament.png","keywords":["Hyper-V","maqueta"],"articleSection":["Opini\u00f3n"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/","url":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/","name":"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente - Josep Maria Solanes","isPartOf":{"@id":"https:\/\/www.jmsolanes.net\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/#primaryimage"},"image":{"@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament.png","datePublished":"2016-10-25T17:41:31+00:00","dateModified":"2016-10-25T17:41:32+00:00","description":"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente a partir de la creaci\u00f3n de una maqueta y mediante un script de PowerShell.","breadcrumb":{"@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/#primaryimage","url":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament.png","contentUrl":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament.png","width":319,"height":200,"caption":"Creaci\u00f3n de m\u00e1quinas virtuales en Hyper-V autom\u00e1ticamente mediante la PowerShell"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jmsolanes.net\/es\/creacion-maquinas-virtuales-hyperv-automaticamente\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.jmsolanes.net\/es\/"},{"@type":"ListItem","position":2,"name":"Creaci\u00f3n m\u00e1quinas virtuales Hyper-V autom\u00e1ticamente"}]},{"@type":"WebSite","@id":"https:\/\/www.jmsolanes.net\/es\/#website","url":"https:\/\/www.jmsolanes.net\/es\/","name":"Josep Maria Solanes","description":"Professional de les TI","publisher":{"@id":"https:\/\/www.jmsolanes.net\/es\/#\/schema\/person\/eab38fe9bd8d31e081441f1267389ea1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jmsolanes.net\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/www.jmsolanes.net\/es\/#\/schema\/person\/eab38fe9bd8d31e081441f1267389ea1","name":"Josep Ma Solanes","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2013\/09\/JMSolanes-Professional-256x256.jpg","url":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2013\/09\/JMSolanes-Professional-256x256.jpg","contentUrl":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2013\/09\/JMSolanes-Professional-256x256.jpg","width":256,"height":256,"caption":"Josep Ma Solanes"},"logo":{"@id":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2013\/09\/JMSolanes-Professional-256x256.jpg"},"description":"Trabajo como director t\u00e9cnico en ICOT, una consultora situada a Tarragona de alcance nacional. Mi foco est\u00e1 puesto en las tecnolog\u00edas de Microsoft, VMware y NetApp. En especial en las soluciones de cloud on-premise, Azure y Office 365 para empresas.","sameAs":["https:\/\/www.jmsolanes.net","https:\/\/x.com\/jmsolanes"]},{"@type":"Person","@id":"https:\/\/www.jmsolanes.net\/es\/#\/schema\/person\/92a59f585073071c7be6649e84b22f78","name":"Josep Ma Solanes","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/880374faecce9cda50bbb1716a98e92ceb0e9ce84b41e4fcb21e5b434f97d103?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/880374faecce9cda50bbb1716a98e92ceb0e9ce84b41e4fcb21e5b434f97d103?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/880374faecce9cda50bbb1716a98e92ceb0e9ce84b41e4fcb21e5b434f97d103?s=96&d=mm&r=g","caption":"Josep Ma Solanes"},"description":"Trabajo como director t\u00e9cnico en ICOT, una consultora situada a Tarragona de alcance nacional. Mi foco est\u00e1 puesto en las tecnolog\u00edas de Microsoft, VMware y NetApp. En especial en las soluciones de cloud on-premise, Azure y Office 365 para empresas.","sameAs":["https:\/\/www.jmsolanes.cat","https:\/\/x.com\/jmsolanes"],"url":"https:\/\/www.jmsolanes.net\/es\/author\/root\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.jmsolanes.net\/wp-content\/uploads\/2016\/10\/creacio-vm-hyperv-automaticament.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/posts\/10974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/comments?post=10974"}],"version-history":[{"count":22,"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/posts\/10974\/revisions"}],"predecessor-version":[{"id":11062,"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/posts\/10974\/revisions\/11062"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/media\/11068"}],"wp:attachment":[{"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/media?parent=10974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/categories?post=10974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jmsolanes.net\/es\/wp-json\/wp\/v2\/tags?post=10974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}