Monday, July 10, 2017

PowerCLI script to create multiple PortGroups on a newly added VMhost

This script is useful when you are introducing a a new host to your environment and need to create multiple VLANs on this host.
Both of these script would do the same thing but the only difference is, to make use of first script you first need to create a csv file having VirtualSwitchName, VLANname, VLANid details on the other hand second script would take one host of your choice as reference and would create the same VLANs on target host.
Script 1: -

<# ==================================================================

Title: create_multiple_vlan-2.ps1

Description:this script can be used to create VLANs on a newly added VMhost, it will read VLAN-detail.csv and create VM port groups

Requirements: Windows Powershell with PowerCLI installed

Pre-req: You need to create a vlan-detail.csv with required VirtualSwitchName, VLANname, VLANid, and the the vSwitch should be present on target host

Usage: .\create_multiple_vlan.ps1

==================================================================== #>

Add-PSSnapin VMware.VimAutomation.Core

$myvc = read-host -Prompt "Enter your vCenter server Name or IP name"

Connect-VIServer $myvc

$targetVMhost = read-host -Prompt "Enter your target host name"

$InputFile = “c:\vlan-detail.csv”

$MyVLANFile = Import-CSV $InputFile

ForEach ($VLAN in $MyVLANFile) {

$MyvSwitch = $VLAN.VirtualSwitchName

$MyVLANname = $VLAN.VLANname

$MyVLANid = $VLAN.VLANid

get-vmhost $targetVMhost | Get-VirtualSwitch -Name $MyvSwitch | New-VirtualPortGroup -Name $MyVLANname -VLanId $MyVLANid

}

disconnect-VIServer $myvc -Confirm:$false

Script 2 :-
<# ==================================================================

Title: create_multiple_vlan.ps1

Description:this script can be used to create VLANs on a newly added VMhost by taking referance of any existing host

Requirements: Windows Powershell with PowerCLI installed

pre-req: vSwitch should be present on target gost

Usage: .\create_multiple_vlan.ps1

==================================================================== #>

Add-PSSnapin VMware.VimAutomation.Core

$myvc = read-host -Prompt "Enter your vCenter server Name or IP name"

Connect-VIServer $myvc

$sourceVMhost = read-host -Prompt "Enter your source host name"

$targetVMhost = read-host -Prompt "Enter your target host name"

get-vmhost $sourceVMhost | Get-VirtualSwitch | Get-VirtualPortGroup | select VirtualSwitchName, Name, vlanID | export-csv "c:\vlan-detail.csv" -NoTypeInformation

$InputFile = “c:\vlan-detail.csv”

$MyVLANFile = Import-CSV $InputFile

ForEach ($VLAN in $MyVLANFile) {

$MyvSwitch = $VLAN.VirtualSwitchName

$MyVLANname = $VLAN.name

$MyVLANid = $VLAN.VLANid

get-vmhost $targetVMhost | Get-VirtualSwitch -Name $MyvSwitch | New-VirtualPortGroup -Name $MyVLANname -VLanId $MyVLANid

}

Remove-Item $InputFile

disconnect-VIServer $myvc -Confirm:$false

Hope these scripts would be useful.

That's it... :)


1 comment:

  1. Hi, can you show an example how the content in CSV has to look?

    ReplyDelete