Exportar carpetas de vCenter con PowerCLI

Si por algún motivo os ha tocado recrear un servidor vCenter por corrupción del mismo, actualización fallida (pese al gran actualizador del que dispone) o algún tipo de migración, y por casualidad éste disponía de muchas carpetas de VM, sabréis que recrearlas puede ser un auténtico calvario. Por una experiencia de este estilo me he decidido a crear un módulo de PowerCLI con el que exportar carpetas de vCenter para posteriormente recrearlas con un solo comando.

Algunas de las “bondades” de este módulo son:

  • Exportación e importación muy sencilla utilizando como archivo intermedio un CSV.
  • Soporte para carpetas con nombres duplicados.
  • Permite especificar el datacenter sobre el que exportar/importar.

Usando Export-VMFolderStructure para exportar carpetas de vCenter

Para utilizar Export-VMFolderStructure (e Import-VMFolderStructure) lo primero que deberemos hacer es descargar el módulo desde su página en Github e importarlo en nuestra sesión de PowerShell tal y como vimos en el post “Introducción a los módulos de PowerShell“.

Export-VMFolderStructure dispone de los siguientes parámetros:

  • Path: Ruta completa en la que exportaremos el archivo .csv. Este parámetro es obligatorio.
  • Datacenter: Nombre del datacenter sobre el que exportar los datos. Si no se especifica y sólo existe uno se utilizará ese, de haber más de uno se detiene la ejecución.
  • Server: IP o nombre DNS del servidor vCenter sobre el que ejecutar el comando. Si ya se está conectado a un servidor vCenter se utiliza ese y se ignora el de este parámetro.

Para la demostración utilizaremos este vCenter de prueba:

Exportar carpetas de vCenter origen

Por lo tanto, podemos ejecutar el comando así:

Export-VMFolderStructure -Path C:\Export\folders.csv -Datacenter 'Datacenter Test' -Server 192.168.247.100

Si abrimos el archivo folders.csv veremos una lista separada con comas con carpetas de VM y su correspondiente path.

Listado carpetas de vCenter exportadas

Con este archivo ya podemos proceder a importar la estructura de carpetas.

Importando carpetas de vCenter con Import-VMFolderStructure

El comando destinado a realizar la importación es Import-VMFolderStructure (¡sorpresa!). Este comando leerá el contenido del archivo .csv y recreará toda la jerarquía de carpetas exportada en el nuevo vCenter.

Para realizar la prueba borro el contenido de este mismo vCenter y volveremos a exportar las carpetas. Este es el resultado:

vCenter vacío

Para evitar comportamientos erróneos recomiendo ejecutar Import-VMFolderStructure sobre un servidor vCenter sin carpetas.

Import-VMFolderStructure dispone de los mismos parámetros que Export-VMFolderStructure:

  • Path: Ruta completa del .csv con la estructura de carpetas a crear. Este parámetro es obligatorio.
  • Datacenter: Nombre del datacenter sobre el que exportar los datos. Si no se especifica y sólo existe uno se utilizará ese, de haber más de uno se detiene la ejecución.
  • Server: IP o nombre DNS del servidor vCenter sobre el que ejecutar el comando. Si ya se está conectado a un servidor vCenter se utiliza ese y se ignora el de este parámetro.

Por lo que podemos proceder a recrear las carpetas con:

Import-VMFolderStructure -Path C:\Export\folders.csv -Datacenter 'Datacenter Test' -Server 192.168.247.100

Que nos deja la estructura de carpetas tal como estaba al inicio:

Carpetas de vCenter importadas

Como podréis ver se ha respetado la jerarquía de todas las carpetas, incluso las que tienen el mismo nombre.

Conclusión

Si bien recrear unas pocas carpetas a mano no es un problema, si os toca recrear varias decenas o algún que otro ciento de carpetas os recomiendo que tiréis de Export-VMFolderStructure y empleeis las horas que os ahorraréis en algo más productivo.

Si tenéis curiosidad por el código en si podéis consultar la página del script en GitHub, y si tenéis alguna sugerencia sobre el mismo las acepto encantado.

Deja un comentario