Create and destroy Logical Networks with powershell in SCVMM 2012
I am at a customer and setting up an new environment with Hyper-V hosts and SCVMM 2012 RC, we have succesfully created host-vhd and got bare-metal deploy working including HP PSP software and NIC-Teaming configuration. The hosts are deployed with Windows 2008 R2 Datacenter Core SP1 on HP BL460c G7 blades with flexfabric and an EMC SAN delivers the disks.
Now we had to get the network configured, the customer has several VLANs and i have configured the Hyper-V hosts with the HP nic team tool and have two teamed NICs for the VM traffic. To not have to configure one virtual nic/switch for each VLAN i have enabled promiscuous mode.
Now to make it easier we create a bunch of Logical Networks with some powershell in the SCVMM 2012 powershell console, this because setting up 20 networks manually and also associate them on every host in the cluster is kind of boring, cause if i do not associate the logical networks to the hosts VM adapter i can not assign them on the VMs.
So what does the script look like, the help info from SCVMM powershell console and also view script button in the helps allot when trying to find out what i need to make it work. There are some differences in the cmdlets between vmm 2008 r2 and the 2012 rc.
# Create SCVMM virtual networks and associate them with hosts # # Niklas Akerlund /RTS $VLANs = Import-Csv vlan1.csv -Delimiter ";" $VMHostGroup = Get-SCVMHostgroup $VMHosts = Get-SCVMHost $LogicalNetworks = @() foreach ($VLAN in $VLANs){ $LogicalNetwork = New-SCLogicalNetwork -Name $VLAN.Name $LogicalNetworks += $LogicalNetwork $Network = $VLAN.IPnet + $VLAN.Octet $SubnetVlan = New-SCSubnetVLan -Subnet $Network -VLanID $VLAN.VLAN New-SCLogicalNetworkDefinition -Name $VLAN.Name -LogicalNetwork $logicalNetwork -VMHostGroup $VMHostGroup -SubnetVLan $SubnetVlan } foreach ($VMHost in $VMHosts){ $vmHostNetworkAdapter = Get-SCVMHostNetworkAdapter -Name "VM" -VMHost $VMHost foreach ($LogicalNet in $LogicalNetworks){ Set-SCVMHostNetworkAdapter -VMHostNetworkAdapter $vmHostNetworkAdapter -AddOrSetLogicalNetwork $logicalNet } }
After running the script it looks like this in the properties on one Logical Network.
After this i also want to be able to remove the Logical Networks (or at least some) when they are not needed anymore, As there are some dependencies we have to remove these first and at last the Logical Network
# Remove Logical Networks from SCVMM2012 # # Niklas Ă…kerlund /RTS # $VLANs = Import-CSV vlan1.csv -Delimiter ";" $VMHosts = Get-VMHost foreach ($VLAN in $VLANs){ $LogicalNetwork = Get-SCLogicalNetwork $VLAN.Name if ($LogicalNetwork -ne $null){ foreach ($VMHost in $VMHosts){ $VMHostNetworkAdapter = Get-SCVMHostNetworkAdapter -Name "VM" -VMHost $VMHost Set-SCVMHostNetworkAdapter -VMHostNetworkAdapter $VMHostNetworkAdapter -RemoveLogicalNetwork $LogicalNetwork } $LogicalNetworkDefinition = Get-SCLogicalNetworkDefinition -LogicalNetwork $LogicalNetwork Remove-SCLogicalNetworkDefinition -LogicalNetworkDefinition $LogicalNetworkDefinition Remove-SCLogicalNetwork -LogicalNetwork $LogicalNetwork } }
To get some more information about the powershell cmdlets look at this reference site.
.
Comments
Nice blog post, one quick question/suggestion. It would be helpful if you provided an example of the CSV you are referencing in the script. I’m guessing you were using the following format for your CSV?
Name;VLAN;IPnet;Octet
Active Directory;1023;172.24.10.0;24
Is that correct?
[…] an earlier post I made a script for adding networks into VMM 2012 but now in SP1 we have logical switches and now also a VM network, the later that adds a bit of […]