Я хочу написать скрипт администратора, который будет:
- Удалить виртуальную машину из vSphere
- Удалить запись DNS виртуальной машины
- Освободите IP-адрес виртуальной машины с помощью нашего сервера Windows DHCP.
Я могу выполнить первый пункт через PowerCLI vSphere, а последние два пункта — через PowerShell " Cmdlets
". Более того, я могу поместить их Cmdlets
в *.ps1
файл и выполнить файл из оболочки.
Первоначальные исследования показывают, что PowerCLI просто оборачивает/расширяет PowerShell и в основном состоит из собственного vSphere-centric Cmdlets
. Поэтому мне интересно: могу ли я поместить "код" PowerCLI ( Cmdlets
и т. д.) в файл PS1 вместе с другим кодом PowerShell и выполнить его как обычный PS1?
решение1
можно ли поместить «код» PowerCLI (командлеты и т. д.) в файл PS1 вместе с другим кодом PowerShell и выполнить его как обычный PS1?
Да. Но если вы хотите, чтобы это работало как ожидается (как при использовании консоли PowerCLI), вам нужно инициализировать среду. Вы можете увидеть, как это делается, изучив ярлык "VMware vSphere PowerCLI.lnk", цель:
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\""
Разбираем это подробнее:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Двоичный файл Powershell
-psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1"
Сокращение от -PSConsole
, которое загружает указанную консоль vim.psc1.
-noe
Сокращение от -NoExit
, не закрывать после выполнения команд запуска.
-c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""
Сокращение от -Command
, которое добавляет файл Initialize-PowerCLIEnvironment.ps1 [обратите внимание, что путь заключен в кавычки].
Вы можете сжать это и поместить инициализацию в любой файл .ps1. Этот пример заглушки должен помочь вам начать.
# 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
...