Cómo actualizar la versión de PowerShell de un equipo con Windows Server 2012 R2. Actualizaremos de la versión 4 a la versión 5.1. Mostraremos cómo saber la versión que tenemos de PowerShell. Este tutorial sirve también para otros sistemas operativos de Windows (Windows 7, Windows 8). En teoría Windows 10 y Windows Server 2016 y 2019 incluyen ya la versión 5.1 de PowerShell. Explicamos también cómo instalar NuGet y un paquete, VMware PowerCLI, desde PowerShell. Conectamos con un servidor VMware ESXi o un clúster VMware vCenter y obtenemos información de las máquinas virtuales por comando.
- Comprobar la versión actual de PowerShell instalada en el equipo.
- Actualizar PowerShell a la versión 5.1 en equipo Windows Server 2012 R2.
- Instalar NuGet e instalar un paquete VMware PowerCLI con comando Install-Module de PowerShell.
- Conexión a servidor VMware ESXi desde PowerCLI de PowerShell y realizar algunas tareas con máquinas virtuales.
- Algunos errores y su posible solución.
Comprobar la versión actual de PowerShell instalada en el equipo
Para ver la versión actual de PowerShell abriremos PowerShell pulsando en el botón Inicio de Windows, escribimos «PowerShell» y el buscador nos mostrará «Windows PowerShell». Pulsaremos con el botón derecho del ratón sobre el acceso directo y seleccionaremos «Ejecutar como administrador»:
Ejecutaremos el siguiente comando PowerShell, que nos mostrará la versión actual:
1 |
Get-Host | Select-Object Version |
En nuestro caso, para un equipo con Windows Server 2012 R2, es la versión 4.0.
A continuación explicamos cómo actualizar la versión 4.0 a la 5.1. Es recomendable porque dispondremos de más comandos y actualizados. Por ejemplo, el comando:
1 |
Install-Module |
No está disponible en la versión 4.0:
Mostrando el error:
Install-Module : El término ‘Install-Module’ no se reconoce como nombre de un cmdlet, función, archivo de script o
programa ejecutable. Compruebe si escribió correctamente el nombre o, si incluyó una ruta de acceso, compruebe que
dicha ruta es correcta e inténtelo de nuevo.
En línea: 1 Carácter: 1
Install-Module -Name VMware.PowerCLI
CategoryInfo : ObjectNotFound: (Install-Module:String) [], CommandNotFoundException
FullyQualifiedErrorId : CommandNotFoundException
Actualizar PowerShell a la versión 5.1 en equipo Windows Server 2012 R2
Para actualizar la versión accederemos a la descarga del paquete Windows Management Framework 5.1, en la fecha de realización de este artículo es:
https://www.microsoft.com/en-us/download/details.aspx?id=54616
Marcaremos el fichero de descarga para la versión de Windows que queramos, están disponibles para Windows 2012, Windows Server 2021 R2, Windows 7 y Windows 8. En nuestro caso marcaremos WWin8.1AndW2K12R2-KB3191564-x64.msu:
Ejecutaremos el fichero descargado:
Si se produce este error:
Con el texto: Instalador independiente de Windows Update. La actualización no es aplicable al equipo.
Es porque no hemos elegido la descarga adecuada para el sistema operativo que tenemos.
Pulsaremos en «Sí» en el mensaje ¿Desea instalar la siguiente actualización de software de Windows? Actualización para Windows KB3191564:
Pulsaremos «Acepto» en los términos de licencia:
Una vez finalizada la instalación el asistente pedirá reiniciar el equipo. Cerraremos las aplicaciones abiertas y pulsaremos en «Reiniciar ahora» para reiniciarlo y finalizar la actualización de PowerShell a la versión 5.1:
Una vez reiniciado el equipo, si volvemos a comprobar la versión de PowerShell, nos mostrará que tenemos la 5.1:
Instalar NuGet e instalar un paquete VMware PowerCLI con comando Install-Module de PowerShell
Una vez actualizado PowerShell, podremos ejecutar comandos «nuevos», como por ejemplo instalar Vmware PowerCli. A continuación explicamos cómo instalar un paquete en PowerShell con NuGet.
Si intentamos ejecutar el siguiente que instala VMware PowerCli para PowerShell desde la línea de comandos, usando:
1 |
Install-Module -Name VMware.PowerCLI |
Puede que nos muestre el siguiente error:
Se necesita el proveedor de NuGet para continuar
PowerShellGet necesita la versión del proveedor de NuGet ‘2.8.5.201’ o posterior para interactuar con repositorios
basados en NuGet. El proveedor de NuGet debe estar disponible en ‘C:\Program
Files\PackageManagement\ProviderAssemblies’ o ‘C:\Users\alonso\AppData\Local\PackageManagement\ProviderAssemblies’.
También puedes instalar el proveedor de NuGet ejecutando ‘Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201
-Force’. ¿Quieres que PowerShellGet se instale e importe el proveedor de NuGet ahora?
[S] Sí [N] No [U] Suspender [?] Ayuda (el valor predeterminado es «S»): s
ADVERTENCIA: No se puede descargar desde el URI ‘https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409’ a ».
ADVERTENCIA: No se puede descargar la lista de proveedores disponibles. Comprueba tu conexión a Internet.
PackageManagement\Install-PackageProvider : No se encontró ninguna coincidencia para el criterio de búsqueda
especificado para el proveedor ‘NuGet’. El proveedor del paquete requiere las etiquetas ‘PackageManagement’ y
‘Provider’. Comprueba si el paquete especificado tiene las etiquetas.
En C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1: 7405 Carácter: 21
$null = PackageManagement\Install-PackageProvider -Name $script:N …
CategoryInfo : InvalidArgument: (Microsoft.Power…PackageProvider:InstallPackageProvider) [Install-Pac
kageProvider], Exception
FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackagePro
vider
Install-Module : El proveedor de NuGet es necesario para interactuar con repositorios basados en NuGet. Asegúrate de
que ‘2.8.5.201’ o una versión más reciente del proveedor de NuGet esté instalada.
En línea: 1 Carácter: 1
Esto es así porque no tenemos NuGet instalado, para instalarlo desde el propio PowerShell ejecutaremos los siguientes comandos:
1 2 |
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Install-PackageProvider -Name NuGet |
El comando anterior nos mostrará un mensaje de confirmación, pulsaremos «S» para continuar:
El comando instalará NuGet, a su última versión, en este caso a la versión 2.8.5.208. Ahora ya podremos usarlo.
Para instalar PowerCli de VMware desde PowerShell con NuGet, usaremos el siguiente comando, que ahora sí funcionará:
1 |
Install-Module -Name VMware.PowerCLI |
Nos solicitará confirmación para instalar, pulsaremos «S» y la tecla INTRO:
Se iniciará la instalación de VMware PowerCLI:
A partir de ahora podremos usar los comandos de VMware PowerCLI en PowerShell.
Conexión a servidor VMware ESXi desde PowerCLI de PowerShell y realizar algunas tareas con máquinas virtuales
Como ejemplo, vamos a conectarnos a un servidor VMware ESXi desde PowerShell con las PowerCLI que hemos instalado anteriormente. Esto nos permitirá obtener información de las máquinas virtuales y realizar varias tareas de mantenimiento sobre ellas.
Antes de conectarnos al servidor, es probable que tengamos que ignorar los mensajes de certificado no válido al conectar al ESX, para ello ejecutaremos el siguiente comando en PowerShell de PowerCLI, que modificará la configuración de conexión para el parámetro InvalidCertificateAction a Ignore:
1 |
Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false |
Si no usamos Proxy en nuestra organización, estableceremos la configuración del parámetro ProxyPolicy, de UseSystemProxy (es el valor por defecto) a NoProxy, para ello ejecutaremos:
1 |
Set-PowerCLIConfiguration -ProxyPolicy NoProxy |
Realizaremos la conexión con el servidor de VMware ESXi, para ello ejecutaremos el comando:
1 |
Connect-VIServer -Server 192.168.1.100 -Protocol https -Port 443 -User "usuario_vmware" -Password "contraseña_usuario" |
En el comando anterior cambiaremos la IP por el nombre de red o la IP del servidor ESXi (o la IP del clúster vCenter) al que nos conectaremos, el protocolo http o https y el puerto de conexión. Por defecto los servidores ESXi suelen usar el protocolo https y el puerto 443. Indicaremos el usuario y la contraseña de VMware ESXi, que tenga permisos suficientes para el acceso y para las tareas que queramos realizar. Si todo es correcto se realizará la conexión con el servidor:
A partir de ahora podremos realizar tareas en nuestro servidor VMware ESXi o en nuestro clúster vCenter. Por ejemplo, para obtener todas las máquinas virtuales que tenemos, ejecutaremos:
1 |
Get-VM |
Que, además del nombre de la máquina virtual, mostrará también el estado (apagada, encendida), el número de vCPU y la memoria RAM asignada:
Para desconectar del servidor ESXi ejecutaremos:
1 |
Disconnect-VIServer * |
Nos solicitará confirmación para la desconexión:
En caso de no querer recibir confirmaciones en los comandos anteriores podemos añadir el parámetro -Confirm:$false, para el comando anterior:
1 |
Disconnect-VIServer * -Confirm:$false |
Algunos errores y su posible solución
Error certificado no válido al conectar a VMware ESXi con PowerCLI
Si nos intentamos conectar a un servidor VMware ESXi o vCenter y no tenemos correctamente configurado el certificado de seguridad, puede que nos muestre este error:
Connect-VIServer : Connect-VIServer Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the value for the InvalidCertificateAction option to Prompt if you’d like to connect once or to add a permanent exception for this server.
Additional Information: No se pudo establecer una relación de confianza para el canal seguro SSL/TLS con la autoridad ‘192.168.1.100:443’.
En línea: 1 Carácter: 1
Connect-VIServer -Server 192.168.1.100 -Protocol https -Port 443 -Use …
CategoryInfo: SecurityError: (:) [Connect-VIServer], ViSecurityNegotiationException
FullyQualifiedErrorId : Client20_ConnectivityServiceImpl_Reconnect_CertificateError,VMware.VimAutomation.ViCore.
Cmdlets.Commands.ConnectVIServer
Para solucionar este error de conexión podemos seguir los pasos que indicamos en el apartado siguiente de este manual:
Advertencia consider joining the VMware Customer Experience Improvement Program
Al conectar a un servidor VMware ESXi o vCenter aparece la siguiente advertencia:
ADVERTENCIA: Please consider joining the VMware Customer Experience Improvement Program, so you can help us make
PowerCLI a better product. You can join using the following command:
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true
VMware’s Customer Experience Improvement Program («CEIP») provides VMware with information that enables VMware to
improve its products and services, to fix problems, and to advise you on how best to deploy and use our products. As
part of the CEIP, VMware collects technical information about your organization’s use of VMware products and services
on a regular basis in association with your organization’s VMware license key(s). This information does not personally
identify any individual.
For more details: type «help about_ceip» to see the related help article.
To disable this warning and set your preference use the following command and restart PowerShell:
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true or $false.
Para evitar esta advertencia podemos ejecutar el comando:
1 |
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false |