PowerCli скрипт для добавления ESXi хоста к vCenter

Представляю свой скрипт по добавлению хоста ESXi к vCenter. Скрипт достаточно простой и может пригодиться на случай если вы делаете множество чистых установок ESXi с последующим добавлением сервера в vCenter, но Host Profiles не используете по различным причинам.

В период установки вы назначаете хосту hostname и конфигурируете IP адрес, все остальное скрипт сделает сам. В рассматриваемом примере используется распределенный виртуальный коммутатор.

function Add-ESXi
{
    Param
    (
         [Parameter(Mandatory=$true, Position=0)]
         [string] $ESXiName,
         [Parameter(Mandatory=$true, Position=1)]
         [string] $VCSA,
         [Parameter(Mandatory=$true, Position=3)]
         [string] $VDSName,
         [Parameter(Mandatory=$true, Position=4)]
         [string] $Datacenter
    )

#Коннектимсся к VCSA
Write-Host 'Connecting to '$VCSA
Connect-VIServer -Server $VCSA
$Location=$Datacenter

#Добавляем хост
Add-VMHost -Name $ESXiName -Location $Location -User root -Password password -Force 

# Переменные хоста и VCSA
$ESXIHost=Get-VMhost $ESXiName
$logDir="[datastore] log_folder"
$logHost="udp://loghost:514"
$VMHostModel=($ESXIHost | Get-View).Hardware.SystemInfo.Model
$VMHostModelName=$VMHostModel.ToString()

#Определяем блейд или нет, нужно если аплинки у различных моделей отличаются по номеру интерфейса.
If($VMHostModelName -eq 'blade_model') 
  {
   Write-Host -ForegroundColor Gray 'This is Blade System, set Uplinks to vmnic0 & vmnic1'
   $uplink1=Get-VMHostNetworkAdapter -VMHost $ESXIHost -Name "vmnic0"
   $uplink2=Get-VMHostNetworkAdapter -VMHost $ESXIHost -Name "vmnic1"
  }
elseIf($VMHostModelName -eq 'rack_model') 
   {
    Write-Host -ForegroundColor Gray 'This is Rack System, set Uplinks to vmnic4 & vmnic5'
    $uplink1=Get-VMHostNetworkAdapter -VMHost $ESXIHost -Name "vmnic4"
    $uplink2=Get-VMHostNetworkAdapter -VMHost $ESXIHost -Name "vmnic5"
   }
   else
   {
    Write-host -ForegroundColor Red -BackgroundColor Black "Unknown Model"
    break
   }

#Задаем хосту AdvancedSettings, если нужно.
Get-AdvancedSetting -Entity $ESXIHost -Name "Syslog.global.defaultRotate" | Set-AdvancedSetting -Value 100 -confirm:$false
Get-AdvancedSetting -Entity $ESXIHost -Name "Syslog.global.defaultSize" | Set-AdvancedSetting -Value 5120 -confirm:$false
Get-AdvancedSetting -Entity $ESXIHost -Name "Syslog.global.logDir" | Set-AdvancedSetting -Value $logDir -confirm:$false
Get-AdvancedSetting -Entity $ESXIHost -Name "Syslog.global.logDirUnique" | Set-AdvancedSetting -Value true -confirm:$false
Get-AdvancedSetting -Entity $ESXIHost -Name "Syslog.global.logHost" | Set-AdvancedSetting -Value $logHost -confirm:$false

#Меняем PowerManagement на HighPerfamance
(Get-View (Get-VMHost -Name $ESXIHost | Get-View).ConfigManager.PowerSystem).ConfigurePowerPolicy(2)

#Задаем сервера NTP
Add-VmHostNtpServer -VMHost $ESXIHost -NtpServer 172.16.100.112, 172.16.100.113
#Делаем настройку FireWall для NTP
Get-VMHostFirewallException -VMHost $ESXIHost | where {$_.Name -eq "NTP client"} | Set-VMHostFirewallException -Enabled:$true
#Настраиваем службу NTP на запуск и правила ее запуска с хостом.
Get-VmHostService -VMHost $ESXIHost | Where-Object {$_.key -eq "ntpd"} | Start-VMHostService

#Сетевые переменные
$VDS=Get-VDSwitch -Name $VDSName
$vmkerneladapter=Get-VMHostNetworkAdapter -VMHost $ESXIHost -Name "vmk0"

#Добавляет хост в VDS
Add-VDSwitchVMHost -VDSwitch $VDSName -VMHost $ESXIHost

#Запихиваем физические интерфейсы в аплинки и мигрируем vmk0 интерфейс в VDS
$VDS | Add-VDSwitchPhysicalNetworkAdapter -VMHostPhysicalNic $uplink1, $uplink2 -VMHostVirtualNic $vmkerneladapter -VirtualNicPortgroup 'Vlan 3011' -Confirm:$false

#Удаляем VSS
Remove-VirtualSwitch -VirtualSwitch vSwitch0 -Confirm:$false

#Включаем на vmk0 vMotion.
$ESXIHost | Get-VMHostNetworkAdapter -Name vmk0 |Set-VMHostNetworkAdapter -VMotionEnabled $true -Confirm:$false

#Отключаемся от вицентра
disconnect-VIServer -Server $VCSA -Confirm:$false
}

$ESXi_Name='HOST_NAME'                                      #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Задаем имя ESXi хоста
$vcenter_name='VCSA_NAME'                                   #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Задаем имя вицентра
$VDS_name='VDS_Name'                                        #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Задаем имя вицентра
$Datacenter_name='datacenter_name'                          #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Задаем имя распределенного виртуального коммутатора

#Запускаем и ждем.
Add-ESXi -ESXiName $ESXi_Name -VCSA $vcenter_name -VDSName $VDS_name -Datacenter $Datacenter_name