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 Cmdlets
dentro de um *.ps1
arquivo 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
...