¿Se pueden ejecutar los cmdlets de vSphere PowerCLI desde un archivo PS1?

¿Se pueden ejecutar los cmdlets de vSphere PowerCLI desde un archivo PS1?

Estoy buscando escribir un script de administración que:

  • Eliminar una VM de vSphere
  • Eliminar la entrada DNS de la VM
  • Libere la dirección IP de la VM con nuestro servidor DHCP de Windows

Puedo lograr el primer elemento a través de PowerCLI de vSphere y puedo lograr los 2 últimos elementos a través de PowerShell " Cmdlets". Además, puedo ponerlos Cmdletsdentro de un *.ps1archivo y ejecutar el archivo desde el shell.

La investigación inicial muestra que PowerCLI simplemente envuelve/extiende PowerShell y básicamente está compuesto por su propio vSphere-centric Cmdlets. Entonces me pregunto: ¿puedo poner el "código" PowerCLI ( Cmdlets, etc.) dentro de un archivo PS1, junto con otro código PowerShell, y ejecutarlo como una PS1 normal?

Respuesta1

¿Puedo poner el "código" PowerCLI (Cmdlets, etc.) dentro de un archivo PS1, junto con otro código PowerShell, y ejecutarlo como una PS1 normal?

Sí. Pero si desea que funcione como se espera (como cuando usa la consola PowerCLI), deberá inicializar el entorno. Puede ver cómo se hace esto examinando el acceso directo "VMware vSphere PowerCLI.lnk", el objetivo es:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -noe -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""

Desglosando esto:

  • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

El binario de Powershell

  • -psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1"

Abreviatura de -PSConsole, que carga la consola vim.psc1 especificada.

  • -noe

Abreviatura de -NoExit, no cierre después de ejecutar los comandos de inicio.

  • -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""

Abreviatura de -Command, cuyo punto genera el archivo [la ruta de la nota tiene comillas de escape] Initialize-PowerCLIEnvironment.ps1 en la sesión.

Puedes condensar esto y poner la inicialización en cualquier archivo .ps1. Este ejemplo de código auxiliar debería ayudarle a comenzar.

# This is the main magic.
Add-PSSnapin VMware.VimAutomation.Core

# Dot source the PowerCLI init script
. 'C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1'

# We're up and running with "PowerCLI", do some VM stuff.
Connect-VIServer vcenter-01
Get-VM
...

información relacionada