Как создать стандартные свичи и портгруппы через PowerCLI
1) на одном хосте
connect-viserver -server <vCenter> -user <user> -password <pwd>
  Get-VMHost <Host> | New-VirtualSwitch -name <New Switch> -nic <VMNIC> (например, vmnic1)
 Get-VMHost <Host> | Get-VirtualSwitch -name <New Switch> | New-VirtualPortGroup -name <New PortGroup> -vlanid <VLAN ID>
2) на всех хостах
новый свич, в нем новая подгруппа
 connect-viserver -server <vCenter> -user <user> -password <pwd>
  Foreach ($vmhost in (get-cluster -name <My Cluster> | get-vmhost))
  {
   $vmhost | New-VirtualSwitch -Name <New Switch> | New-VirtualPortGroup -Name <New PortGroup>  -vlanid <VLAN ID>
  }
 новая портгруппа в существующем свиче
 connect-viserver -server <vCenter> -user <user> -password <pwd>
 Foreach ($vmhost in (get-cluster -name <My Cluster> | get-vmhost))
  {
   $vmhost | Get-VirtualSwitch -Name <Existing vSwitch> | New-VirtualPortGroup -Name <New PortGroup>  -vlanid <VLAN ID>
  }
3) копирование свичей с одного хоста на другой хост (интерактивный)
$VISRV = Connect-VIServer (Read-Host "Имя vCenter")
 $BASEHost = Get-VMHost -Name (Read-Host "Имя ESX(i)-образца (как оно отображено в vSphere Client)")
 $NEWHost = Get-VMHost -Name (Read-Host "Имя настраиваемого ESX(i) (как оно отображено в vSphere Client)")
 $BASEHost |Get-VirtualSwitch |Foreach {
 $vSwitch = $_
 If (($NEWHost |Get-VirtualSwitch -Name $_.Name-ErrorAction SilentlyContinue)-eq $null){
        Write-Host "Creating Virtual Switch $($_.Name)"
        $NewSwitch = $NEWHost |New-VirtualSwitch -Name $_.Name-NumPorts $_.NumPorts-Mtu $_.Mtu
        $vSwitch = $_
     }
    $_ |Get-VirtualPortGroup |Foreach {
        If (($NEWHost |Get-VirtualPortGroup -Name $_.Name-ErrorAction SilentlyContinue)-eq $null){
            Write-Host "Creating Portgroup $($_.Name)"
            $NewPortGroup = $NEWHost |Get-VirtualSwitch -Name $vSwitch |New-VirtualPortGroup -Name $_.Name-VLanId $_.VLanID
         }
     }
 }
 
 






