Scripting básico de PowerCLI para VMware vSphere

Antes, examinamos PowerCLI: qué es, cómo instalarlo e integrarlo en Windows Powershell ISE. Ahora, echemos un vistazo a la programación básica, incluida la conexión, los cmdlets de PowerCLI y los bucles.

Programación básica de PowerCLI

Veamos algunos cmdlets básicos de PowerCLI para ver qué tan fácil es comenzar a extraer información de nuestro entorno vSphere con PowerCLI. Tenga en cuenta que lo siguiente no pretende ser un tutorial exhaustivo, sino más bien una introducción a PowerCLI y cómo comenzar a ejecutar cmdlets y aprender a automatizar su entorno.

El primer cmdlet que necesitamos ejecutar es el que en realidad se conecta a nuestro entorno vSphere. Puedes conectarte directamente a un host ESXi o a vCenter Server.

Para conectarse, ejecuta el siguiente comando en una sesión de PowerShell habilitada para PowerCLI:

  • connect-viserver –server 〈yourserver〉

Cuando ejecutes el comando, se te pedirán tus credenciales de inicio de sesión. Escribe tu nombre de usuario y contraseña para tu servidor ESXi o vCenter Server.

Uno de los comandos más básicos que podemos ejecutar cuando nos conectamos a ESXi o vCenter es ver todas las VM en el entorno. Utilizamos el cmdlet get-vm para mostrar información sobre las VM invitadas.

  • Get-VM - El cmdlet get-vm enumera las VM en ejecución en el host conectado

Para obtener información más detallada del cmdlet get-vm, podemos mostrar la información completa con el comando:

  • Get-VM | fl – Muestra información más detallada como el Sistema Operativo Invitado, Pools de Recursos, nivel de versión de hardware de la VM, carpeta en la que se encuentra y muchos otros detalles.

Ahora, vamos a devolver información específica útil del comando Get-VM. Vamos a encontrar las VM que están en estado PoweredOff. Podemos obtener información del Get-VM comando y luego dirigirlo a where-object para seleccionar la información específica que queremos consultar, en este caso PowerState. Como puedes ver, hay mundos de posibilidades para obtener varias informaciones de VM y dirigir esta información a otro comando de PowerShell.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”}

Como puedes ver, esto muestra solo las VM que están en el estado “PoweredOff”. Esto puede ser extremadamente útil. Incluso podemos dirigir el resultado del comando anterior al comando Start-VM. Entonces, básicamente, podemos obtener todas las VM apagadas y luego encender esas VM.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”} | Start-VM

¿Qué pasa con apagar VM específicas? También podemos hacer eso. Podemos llamar a la VM por nombre y luego usar el comando Stop-VMGuest que inicia un apagado del sistema operativo invitado.

  • Get-VM 〈yourvm〉 | Stop-VMguest

Si no deseas recibir la confirmación de la acción, podemos agregar el parámetro –confirm:false:

Digamos que queremos ver cuántas VM están en funcionamiento y tienen asignada más de 1 CPU. De nuevo, podemos usar el comando where-object para seleccionar el objeto NumCpu.

  • Get-VM | where-object {$_.NumCpu –gt 1 }

PowerCLI Loops

Los bucles permiten realizar la misma operación varias veces contra objetos seleccionados o un número determinado de veces recorriendo un bucle. Por ejemplo, con un bucle foreach, podemos repetir una determinada acción varias veces. Se configura como el seudocódigo que se muestra a continuación:

foreach ($var in $vars){
Haz algo…
}

Si queremos ser específicos sobre qué objetos vamos a realizar la acción, podemos, por ejemplo, recorrer un lista específica de VMs desde un archivo de texto. Para poblar el archivo de texto, podemos ejecutar nuestro comando Get-VM seleccionando las propiedades que queremos, luego redirigir eso a un archivo de texto. Luego podemos usar PowerShell para leer el archivo de texto y colocar las VMs en una matriz sobre la cual podemos recorrer y realizar una acción. A continuación, estamos agregando un nuevo adaptador de red a las VMs en la lista.

Get-vm | where-object {$_.MemoryGB –eq 4 } | select -ExpandProperty Name | out-file c:\VMs.txt

$vms = get-content c:\VMs.txt

Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Nombre del grupo de puertos〉" -Type "VMXNET3" –startconnected
}

Recursos

Hay un montón de recursos geniales en la web, incluyendo sitios de blogs personales, documentación oficial, muestras de código, etc. Lo que he descubierto es que si puedes pensar en algo que quieras hacer, lo más probable es que alguien ya haya escrito una línea de código PowerCLI que hará lo que deseas. Lo bueno también es que normalmente puedes encontrar algo muy similar a lo que quieres hacer, y con muy pocas modificaciones después de aprender lo básico, puedes adaptarlo a tus necesidades. Al hacer esto también, estás aprendiendo PowerCLI y cómo funciona, así como cómo modificar el código para realizar la tarea que necesitas cumplir.

A great place to start with documentation and other resources is the official VMware PowerCLI release and documentation site. Here, you can download the binaries as well as the official User’s Guide.

También hay montones de libros con scripts y ejemplos de scripts que pueden ser disecados y modificados. Ten en cuenta la comunidad de administradores de VMware que, en su mayoría, están encantados de compartir el conocimiento que han aprendido de alguien más en su camino para volverse competentes con PowerCLI. Ponte en contacto con aquellos en tu comunidad para obtener ayuda con detalles específicos o simplemente principios generales.

Pensamientos

PowerCLI es muy poderoso por decir lo menos. Apenas hemos arañado la superficie en los ejemplos anteriores que se mostraron. Cualquier tarea que hagas repetidamente, o que sea engorrosa de hacer en el cliente web, son excelentes candidatas para la creación de scripts con PowerCLI. De hecho, esa suele ser la forma en que la mayoría se introduce a PowerCLI: tienen una tarea que necesitan realizar automáticamente o una acción que se basa en otras acciones en vSphere, o nuevamente acciones repetitivas que son adecuadas para scripting.

La mejor manera de aprender PowerCLI es descargarlo, instalarlo y comenzar a usarlo en un entorno de laboratorio como un laboratorio casero. El verdadero poder de un entorno de VMware vSphere solo se desbloquea cuando ves el potencial de utilizar la automatización para tomar el control de vSphere. ¡Así que comienza a escribir guiones con PowerCLI y nunca mirarás hacia atrás!

Source:
https://www.nakivo.com/blog/basic-powercli-scripting-vmware-vsphere/