Os cmdlets do vSphere PowerCLI podem ser executados a partir de um arquivo PS1?

Os cmdlets do vSphere PowerCLI podem ser executados a partir de um arquivo PS1?

Estou procurando escrever um script administrativo que irá:

  • Excluir uma VM do vSphere
  • Exclua a entrada DNS da VM
  • Libere o endereço IP da VM com nosso servidor DHCP do Windows

Posso realizar o primeiro item por meio do PowerCLI do vSphere e posso realizar os 2 últimos itens por meio do PowerShell " Cmdlets". Além disso, posso colocá-los Cmdletsdentro de um *.ps1arquivo e executá-lo a partir do shell.

A pesquisa inicial mostra que o PowerCLI apenas envolve/estende o PowerShell e é basicamente composto apenas por seu próprio arquivo Cmdlets. Então, estou me perguntando: posso colocar o "código" PowerCLI ( Cmdlets, etc.) dentro de um arquivo PS1, junto com outro código do PowerShell, e executá-lo como um PS1 normal?

Responder1

posso colocar o "código" PowerCLI (Cmdlets, etc.) dentro de um arquivo PS1, junto com outro código do PowerShell, e executá-lo como um PS1 normal?

Sim. Mas se quiser que funcione conforme o esperado (como quando você usa o console PowerCLI), você precisará inicializar o ambiente. Você pode ver como isso é feito examinando o atalho "VMware vSphere PowerCLI.lnk", o alvo é:

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\""

Dividindo isso:

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

O binário Powershell

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

Abreviação de -PSConsole, que carrega o console vim.psc1 especificado.

  • -noe

Abreviação de -NoExit, não feche após executar os comandos de inicialização.

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

Abreviação de -Command, cujo ponto origina o arquivo [note path is escape-quoted] Initialize-PowerCLIEnvironment.ps1 na sessão.

Você pode condensar isso e colocar a inicialização em qualquer arquivo .ps1. Este exemplo de esboço deve ajudá-lo a começar.

# 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
...

informação relacionada