I am an absolute beginner in PowerShell and PowerCLI.
I would like to create a virtual switch with several portgroups and vlanids and then assign a nic
This code works for me:
$esxihost="esx01"
Connect-VIServer -Server $esxihost
$vSwitch = New-VirtualSwitch -VMHost $esxihost -Name vSwitch3
$vPortGroup = New-VirtualPortGroup -VirtualSwitch $vSwitch -Name adm -VLanId 1012
$vPortGroup = New-VirtualPortGroup -VirtualSwitch $vSwitch -Name man -VLanId 1020
$vPortGroup = New-VirtualPortGroup -VirtualSwitch $vSwitch -Name test1 -VLanId 1021
$vPortGroup = New-VirtualPortGroup -VirtualSwitch $vSwitch -Name test2 -VLanId 1022
$vPortGroup = New-VirtualPortGroup -VirtualSwitch $vSwitch -Name test3 -VLanId 2000
Set-VirtualSwitch -VirtualSwitch $vswitch -Nic vmnic3 -Confirm:$false
But I think something like this would be much more elegant:
$esxihost="esx01"
Connect-VIServer -Server $esxihost
$vSwitch = New-VirtualSwitch -VMHost $esxihost -Name vSwitch3
$vlans = @{`
"adm" = 1012; `
"man" = 1020; `
"test1" = 1021; `
"test2" = 1022; `
"test3" = 2000
}
foreach (items in $vlans) {
$vPortGroup = New-VirtualPortGroup -VirtualSwitch $vSwitch -Name $vlans.Key -VLanId $vlans.Value
}
Set-VirtualSwitch -VirtualSwitch $vswitch -Nic vmnic3 -Confirm:$false
But I can't get the foreach loop to work. I am unsure about the three things marked with bold text in the foreach loop. Can someone give me a hint..?
Thanks.
Anders