Я хочу написать сценарий администратора, который:
Я могу выполнить первый элемент с помощью vSphere PowerCLI, а последние 2 элемента - с помощью PowerShell "Cmdlets
". Кроме того, я могу поставить эти Cmdlets
внутри *.ps1
file и запустите файл из оболочки.
Первоначальные исследования показывают, что PowerCLI просто обертывает / расширяет PowerShell и в основном состоит из собственной vSphere-ориентированной Cmdlets
. Вот и мне интересно: можно ли поставить PowerCLI "код" (Cmdlets
и т. д.) внутри файла PS1 вместе с другим кодом PowerShell и выполнять его как обычный PS1?
Могу ли я поместить «код» 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
...