SCVMM 2012 powershell function for configure network on hosts
After bare metal deployment of the hosts we need to configure the network on the hosts, this can be done from the SCVMM 2012 powershell console.
I have made a function of the creation of first a virtual switch and also adding the logical networks, if i do not add the networks to the particular host nic where the virtual switch is i cannot deploy virtual machines and get them connected to the network.
You can add the logical networks and their associated vlan/subnet before any host is imported into SCVMM and of course i have created a function for that also, this can take a csv file or just the parameters
Here is a screen dump if i run it without a csv file
and the result is the following
And here is the powershell code for the add logical networks function
function Add-SCLogicalNetworks{ <# .SYNOPSIS Add logical networks to your SCVMM fabric .DESCRIPTION With this function you add logical networks .PARAMETER CSVNetworks Path to a CSV file with the logical network info .NOTES Author: Niklas Akerlund / RTS Date: 2012-02-02 #> param ( $CSVNetworks = "", $VMHostGroup = "All Hosts", [string]$Name = "", [string]$IPnet = "", [string]$Octet = "24", [int]$VLAN = 0 ) $VMHostGroup = Get-SCVMHostgroup $VMHostGroup if ($CSVNetworks -ne "") { $VLANs = Import-Csv $CSVNetworks -Delimiter ";" foreach ($VLAN in $VLANs){ $LogicalNetwork = New-SCLogicalNetwork -Name $VLAN.Name $Network = $VLAN.IPnet + "/" + $VLAN.Octet $SubnetVlan = New-SCSubnetVLan -Subnet $Network -VLanID $VLAN.VLAN New-SCLogicalNetworkDefinition -Name $VLAN.Name -LogicalNetwork $logicalNetwork -VMHostGroup $VMHostGroup -SubnetVLan $SubnetVlan } }else{ $LogicalNetwork = New-SCLogicalNetwork -Name $Name $Network = $IPnet + "/" + $Octet $SubnetVlan = New-SCSubnetVLan -Subnet $Network -VLanID $VLAN New-SCLogicalNetworkDefinition -Name $Name -LogicalNetwork $logicalNetwork -VMHostGroup $VMHostGroup -SubnetVLan $SubnetVlan } }
when i have the logical networks i want to configure the host
And the result is the following
And this is also displayed on the physical nic
and here is the powershell code for configuring the host:
function Configure-SCVMhostNetwork{ <# .SYNOPSIS Configure the network on the Hyper-V Host .DESCRIPTION With this function you set virtual switch and configure logical networks .PARAMETER VMHost The new host that is going to be configurered .PARAMETER refVMHost if there are different hyper-v clusters and logical networks, use a ref host for the configuration to set it up .PARAMETER VMHostnic The nic that is going to be configured with a virtual switch (in this case a NIC team named "VM" .EXAMPLE PS C:\> Get-SCVMHost Hyp04 | Configure-SCVMhostNetwork .EXAMPLE PS C:\> Configure-SCVMhostNetwork -VMHost Hyp04 -refVMHost Hyp06 .NOTES Author: Niklas Akerlund / RTS Date: 2012-02-02 #> param ( [Parameter(Position=0,Mandatory=$true,HelpMessage="This need to be a Hyper-V Host name or object", ValueFromPipeline=$True)] $VMHost, [string]$refVMHost = "", [string]$VirtualNetworkName = "VMs", [string]$VMHostnic = "VM" ) $VMHost = Get-VMHost $VMHost if ($VMHost -ne $null) { if ($refVMHost -eq ""){ $LogicalNetworks = Get-SCLogicalNetwork }else { $LogicalNetworks = Get-SCLogicalNetwork -VMHost $refVMHost } $vmHostNetworkAdapter = Get-SCVMHostNetworkAdapter -VMHost $VMHost -Name $VMHostnic $virtualNetwork = New-SCVirtualNetwork -VMHost $VMHost -Name $VirtualNetworkName -Description "" -BoundToVMHost $false -VMHostNetworkAdapters $vmHostNetworkAdapter $vmHostNetworkAdapter = Get-SCVMHostNetworkAdapter -Name $VMHostnic -VMHost $VMHost foreach ($LogicalNet in $LogicalNetworks){ Set-SCVMHostNetworkAdapter -VMHostNetworkAdapter $vmHostNetworkAdapter -AddOrSetLogicalNetwork $logicalNet } } }