Как создать стандартные свичи и портгруппы через 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
}
}
}