Cómo instalar VMware PowerCLI desde PowerShell en equipo Windows. Cómo acceder a un sistema de virtualización vCenter Server y cómo listar las máquinas virtuales que tienen algún problema con las VMware Tools. O bien no las tienen instaladas (NotInstalled), o bien no tienen la última versión (toolsOld) o bien que no están iniciadas (toolsNotRunning).
- Instalar módulo VMware.PowerCLI desde PowerShell.
- Listar máquinas virtuales con algún problema con las VMware Tools (no instalada, sin actualizar).
- Listar las máquinas virtuales de nuestro entorno vCenter o ESXi con las VMware Tools en estado correcto mediante PowerCLI.
- Listar todas las máquinas virtuales de ESXi o vCenter Server con Tools OK y nombre de sistema operativo.
- Script PowerCLI completo que configura parámetros de PowerCLI y obtiene las direcciones IP de las máquinas virtuales.
Instalar módulo VMware.PowerCLI desde PowerShell
En primer lugar, si no lo hemos hecho aún, instalaremos el módulo VMware.PowerCLI desde PowerShell. Para ello, abriremos una ventana de PowerShell como administradores:
Habilitaremos el repositorio PSGallery ejecutando el comando:
1 |
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted |
Para instalar el módulo VMware.PowerCLI en PowerShell ejecutaremos el comando:
1 |
Install-Module -Name VMware.PowerCLI |
También podremos instalar las VMware PowerCLI descargando el instalador msi desde la web oficial de VMware.
A partir de ahora, tendremos disponibles todos los comandos de conexión con los host de virtualización VMware ESXi y con el clúster vCenter Server desde la línea de comandos PowerShell.
Listar máquinas virtuales con algún problema con las VMware Tools (no instalada, sin actualizar)
Para obtener todas las máquinas virtuales (el nombre) que no tienen las VMware Tools (o están desactualizadas, o no instaladas o no iniciadas), en primer lugar, desactivaremos la opción de verificar el certificado, con el comando:
1 |
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore |
Conectaremos con el servidor VMware ESXi o bien, como en nuestro caso, con el vCenter Server (al tener un clúster de virtualización con varios hosts ESXi), con el comando:
1 |
Connect-VIServer -Server 192.168.1.3 -User root -Password MiContraseña |
Para obtener las máquinas virtuale del ESXi o del vCenter, filtrando por las que no tienen las VMware Tools en estado OK, ejecutaremos el siguiente comando PowerShell (PowerCLI):
1 |
Get-VM | where {$_.ExtensionData.Guest.ToolsStatus -notlike "toolsOk"} | select name, @{N='Estado Tools';E={$_.ExtensionData.Guest.ToolsStatus}} |
Nos mostrará únicamente las máquinas virtuales que tengan las VMware Tools en estado diferente a «toolsOk», que serán las que tengan como valor del campo Guest.ToolsStatus: toolsNotRunning, toolsNotInstalled o bien toolsOld:
Listar las máquinas virtuales de nuestro entorno vCenter o ESXi con las VMware Tools en estado correcto mediante PowerCLI
Si queremos mostrar las máquinas virtuales que tengan las VMware Tools en estado correcto (toolsOk) ejecutaremos el comando:
1 |
Get-VM | where {$_.ExtensionData.Guest.ToolsStatus -eq "toolsOk"} | select name, @{N='Estado Tools';E={$_.ExtensionData.Guest.ToolsStatus}} |
Listar todas las máquinas virtuales de ESXi o vCenter Server con Tools OK y nombre de sistema operativo
Para mostrar las máquinas virtuales que tienen las VMware Tools en estado OK y el nombre del sistema operativo de cada una de ellas, ejecutaremos el comando PowerCLI:
1 |
Get-VM | where {$_.ExtensionData.Guest.ToolsStatus -eq "toolsOk"} | select name, @{N='SO';E={$_.Guest.OSFullName}}, @{N='Estado Tools';E={$_.ExtensionData.Guest.ToolsStatus}} |
Script PowerCLI completo que configura parámetros de PowerCLI y obtiene las direcciones IP de las máquinas virtuales
Un ejemplo de script completo PowerCLI que configura algunos parámetros de conexión, conecta con el servidor ESXi o el servidor vCenter y obtiene datos de máquinas virtuales (nombre de la máquina, nombre de la red, direcciones IP):
1 2 3 4 5 6 7 8 9 10 11 |
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false -Scope AllUsers Set-PowerCLIConfiguration -ParticipateInCeip $false -Confirm:$false -Scope AllUsers Set-PowerCLIConfiguration -DefaultVIServerMode Single -Confirm:$false -Scope AllUsers Set-PowerCLIConfiguration -ProxyPolicy NoProxy -Confirm:$false -Scope AllUsers Set-PowerCLIConfiguration -DisplayDeprecationWarning $false -Confirm:$false -Scope AllUsers Connect-VIServer -Server 192.168.1.3 -User root -Password MiContraseña-Force -Verbose:$false Get-VM -PipelineVariable VM | ForEach-Object -Process { $vm.Guest.Nics | Select @{N='Nombre';E={$vm.Name}}, @{N='Red';E={$_.NetworkName}}, @{N="IP";E={$_.IPAddress -join ', '}} |