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

4

Estou procurando escrever um script administrativo que:

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

Eu posso realizar o primeiro item por meio do PowerCLI do vSphere e posso realizar os dois últimos itens por meio do PowerShell " Cmdlets ". Além disso, posso colocar esses Cmdlets dentro de um arquivo *.ps1 e executar o arquivo a partir do shell.

Pesquisas iniciais mostram que o PowerCLI apenas envolve / estende o PowerShell e basicamente é composto apenas por seu próprio Cmdlets centrado no vSphere. Então, eu estou querendo saber: posso colocar o "código" PowerCLI ( Cmdlets , etc.) dentro de um arquivo PS1, juntamente com outro código do PowerShell, e executá-lo como um PS1 normal?

    
por smeeb 25.02.2015 / 19:23

1 resposta

11

can I put PowerCLI "code" (Cmdlets, etc.) inside a PS1 file, along with other PowerShell code, and execute it like a normal PS1?

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

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

Quebrando isso:

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

O binário do 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\""

Abreviada para -Command , qual ponto origina o arquivo [note path is escape-quote] Initialize-PowerCLIEnvironment.ps1 na sessão.

Você pode condensar isso e colocar a inicialização em qualquer arquivo .ps1. Este exemplo de stub 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
...
    
por 25.02.2015 / 19:39