From 5ed2afd00d506617d757e83ceb7170eb53cd3a06 Mon Sep 17 00:00:00 2001 From: Gajendra D Ambi Date: Fri, 26 Aug 2016 07:37:47 +0530 Subject: [PATCH] vTool a menu based collection of vmware tasks vtool : manual time required : calculated against Many of these needs improvement, the script is written in what i call street smart way, not exactly the standard best practices but it will nonetheless work. May be others will see, use, update and improve it. Many functions like creating drs rules etc., are still at their infant stage and are not working. vTool>create cluster vTool>Add hosts 1+ hour per 60 blades vTool>Configure HA vTool>Configure DRS vTool>DRS Rules vTool>vApp vTool>Add Datastores 1+ hour per 60 datastores vTool>SNMP 2+ hour per 60 blades vtool>syslog ip 2+ hour per 60 blades vtool>dns 15 minutes per 60 blades vtool>ntp 10 minutes per 60 blades vtool>any advanced 15 minutes per 60 blades vtool>firewall 15 minutes per 60 blades vtool>scratch 20 minutes per 60 blades vtool>performance settings 5 minutes per 60 blades vtool>core dump 10 minutes per 60 blades vtool>power management 5 minutes per 60 blades vtool>esxi services 10 minutes per 60 blades vtool>vmkernel services 10 minutes per 60 blades vtool>hostfile entries 5 hours per 60 blades vtool>vSwitch 5 minutes per 60 blades vtool>vswitch ports 5 minutes per 60 blades vtool>update nic 10 minutes per 60 blades vtool>update mtu 10 minutes per 60 blades vtool>vm portgroup 15 minutes per 60 blades vtool>vmkernel portgroup 1 hour per 60 blades vtool>sync portgroup 5 minutes per 60 blades vtool>l3 vmotion 1 hour per 60 blades vtool>create vds per 60 blades vtool>dvportgroups 15 minutes per 60 portgroups --- Scripts/vTool_2016aug.ps1 | 4215 +++++++++++++++++++++++++++++++++++++ 1 file changed, 4215 insertions(+) create mode 100644 Scripts/vTool_2016aug.ps1 diff --git a/Scripts/vTool_2016aug.ps1 b/Scripts/vTool_2016aug.ps1 new file mode 100644 index 0000000..f831d7a --- /dev/null +++ b/Scripts/vTool_2016aug.ps1 @@ -0,0 +1,4215 @@ +<# +.SYNOPSIS + A handy multi purpose tool to get those things done quickly +.DESCRIPTION + This is an onging VMware tool to help those with an VMware environment to automate certain repetative tasks +.NOTES + File Name : vTool.ps1 + Author : gajendra d ambi + updated : August 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +##Start of the script## +Clear-Host #Clear the screen. + +#start of function +function PcliPshell +{ +<# +.SYNOPSIS + Integrate powercli into powershell +.DESCRIPTION + This will add pssnapins/modules of vmware powercli into powershell. You will get + powercli core, vds and vum scriptlets/snapsins/modules in powershell which will enable you + to create, run powercli scripts into powershell ISE since powercli itself lacks an IDE. +.NOTES + File Name : PcliPshell.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/MrAmbiG/vmware +#> +#Start of script# +Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue +Import-Module VMware.VimAutomation.Vds -ErrorAction SilentlyContinue +Import-Module VMware.VimAutomation.Cis.Core -ErrorAction SilentlyContinue +Import-Module VMware.VimAutomation.Storage -ErrorAction SilentlyContinue +Import-Module VMware.VimAutomation.vROps -ErrorAction SilentlyContinue +Import-Module VMware.VimAutomation.HA -ErrorAction SilentlyContinue +Import-Module VMware.VimAutomation.License -ErrorAction SilentlyContinue +Import-Module VMware.VimAutomation.Cloud -ErrorAction SilentlyContinue +Import-Module VMware.VimAutomation.PCloud -ErrorAction SilentlyContinue +Import-Module VMware.VumAutomation -ErrorAction SilentlyContinue +#End of Script# +}#End of function + +#------------------------------Start of Collection of Functions of automation------------------------------# + +#Start of function +function GetPlink +{ +<# +.SYNOPSIS + Gets the plink +.DESCRIPTION + This will make sure plink is either downloaded from the internet if it is not present and if it cannot download + then it will pause the script till you copy it manually. +.NOTES + File Name : GetPlink.ps1 + Author : gajendra d ambi + Date : Audust 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: + github.com/mrambig + [source] http://www.virtu-al.net/2013/01/07/ssh-powershell-tricks-with-plink-exe/ + +#> +$PlinkLocation = $PSScriptRoot + "\Plink.exe" +$presence = Test-Path $PlinkLocation +if (-not $presence) + { + Write-Host "Missing Plink.exe, trying to download...(10 seconds)" -BackgroundColor White -ForegroundColor Black + Invoke-RestMethod "http://the.earth.li/~sgtatham/putty/latest/x86/plink.exe" -TimeoutSec 10 -OutFile "plink.exe" + if (-not $presence) + { + do + { + Write-Host "Unable to download plink.exe, please download and add it to the same folder as this script" -BackgroundColor Yellow -ForegroundColor Black + Read-host "Hit Enter/Return once plink is present" + $presence = Test-Path $PlinkLocation + } while (-not $presence) + } + } + +if ($presence) { Write-Host "Detected Plink.exe" -BackgroundColor White -ForegroundColor Black } +} #End of function + +#start of function +function FaultToleranceOff +{ +<# +.SYNOPSIS + Enable vMotion +.DESCRIPTION + Enable vMotion across the Cluster +.NOTES + File Name : FaultToleranceOff.ps1 + Author : gajendra d ambi + Date : Feb 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#start of script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VMHostNetworkAdapter | where PortGroupname -EQ $pg | Set-VMHostNetworkAdapter -FaultToleranceLoggingEnabled $false -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +Function HostPerf +{ +<# +.SYNOPSIS + Set esxi host performance level +.DESCRIPTION + This will change the host's performance level to the following. +.NOTES + File Name : VssPmOn.ps1 + Author : gajendra d ambi + Date : August 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "choose a number from below +1. High performance +2. Balanced +3. LowPower +" -BackgroundColor White -ForegroundColor Black +$option = Read-Host "?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +foreach ($vmhost in (get-cluster $cluster | get-vmhost | sort)) +{$vmhost.Name +(Get-View (Get-VMHost $vmhost | Get-View).ConfigManager.PowerSystem).ConfigurePowerPolicy($option) +} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#Start of function +function NicStatusPg +{ +<# +.SYNOPSIS + Change nic teaming of nics. +.DESCRIPTION + This will change the nic status on portgroups +.NOTES + File Name : NicStatusPg.ps1 + Author : gajendra d ambi + Date : July 2016 + Prerequisite : PowerShell v4+, powercli 6.3+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/MrAmbiG/vmware +#> +#Start of Script +$cluster = Read-Host "cluster[type * to include all clusters]?" +$pg = Read-Host "standard portgroup?" +$nic = Read-Host "vmnic (ex:vmnic5)?" + +Write-host " +1 . MakeNicActive +2 . MakeNicStandby +3 . MakeNicUnused +" -BackgroundColor white -ForegroundColor black +Write-Host choose from 1 to 3 from above -BackgroundColor Yellow -ForegroundColor Black +$option = Read-Host " " + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$vmhosts = get-cluster $cluster | get-vmhost | sort + +$vmhosts = get-cluster $cluster | get-vmhost | sort +foreach ($vmhost in $vmhosts) +{ +$vmnic = get-vmhost $vmhost | Get-VMHostNetworkAdapter -Physical -Name $nic + if ($option -eq 1) + {#MakeNicActive + get-vmhost $vmhost | get-virtualportgroup -Name $pg | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive $vmnic -Confirm:$false + } + if ($option -eq 2) + {#MakeNicStandby + get-vmhost $vmhost | get-virtualportgroup -Name $pg | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicStandby $vmnic -Confirm:$false + } + if ($option -eq 3) + {#MakeNicUnused + get-vmhost $vmhost | get-virtualportgroup -Name $pg | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicUnused $vmnic -Confirm:$false + } +} +} #end of function + +#start of function +function NicStatusVss +{ +<# +.SYNOPSIS + Change nic teaming of nics. +.DESCRIPTION + This will change the nic status on vSwitchs +.NOTES + File Name : NicStatusVss.ps1 + Author : gajendra d ambi + Date : July 2016 + Prerequisite : PowerShell v4+, powercli 6.3+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/MrAmbiG/vmware +#> + +#Start of Script +$cluster = Read-Host "cluster[type * to include all clusters]?" +$vss = Read-Host "vSphere standard Switch?" +$nic = Read-Host "vmnic (ex:vmnic5)?" + +Write-host " +1 . Add Nic +2 . Remove Nic +3 . MakeNicActive +4 . MakeNicStandby +5 . MakeNicUnused +" -BackgroundColor white -ForegroundColor black +Write-Host choose from 1 to 5 from above -BackgroundColor Yellow -ForegroundColor Black +$option = Read-Host " " + + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$vmhosts = get-cluster $cluster | get-vmhost | sort +foreach ($vmhost in $vmhosts) +{ +$vmnic = get-vmhost $vmhost | Get-VMHostNetworkAdapter -Physical -Name $nic + if ($option -eq 1 ) + { + #add vmnic + get-vmhost $vmhost | get-virtualswitch -Name $vss | Add-VirtualSwitchPhysicalNetworkAdapter -VMHostPhysicalNic $vmnic -confirm:$false + get-vmhost $vmhost | get-virtualswitch -Name $vss | Get-NicTeamingPolicy + } + + if ($option -eq 2 ) + { + #remove vmnic + get-vmhost $vmhost | Get-VMHostNetworkAdapter -Physical -Name $nic | Remove-VirtualSwitchPhysicalNetworkAdapter -confirm:$false + get-vmhost $vmhost | get-virtualswitch -Name $vss | Get-NicTeamingPolicy + } + + if ($option -eq 3 ) + { + #Make active + Get-VMHost $vmhost | get-virtualswitch -Name $vss | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive $vmnic -confirm:$false + } + + if ($option -eq 4 ) + { + #make standby + Get-VMHost $vmhost | get-virtualswitch -Name $vss | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicStandby $vmnic -confirm:$false + } + + if ($option -eq 5 ) + { + #make unused + Get-VMHost $vmhost | get-virtualswitch -Name $vss | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicUnused $vmnic -confirm:$false + } +} +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function WinSSH +{ +<# +.SYNOPSIS + Run SSH commands from windows +.DESCRIPTION + This will run commands to be run on VMware/vCenter hosts. + This needs plink to be in the same folder as this script. + This will open create a text file, you paste the commands which are to be run on the SSH target. +.NOTES + File Name : WinSSH.ps1 + Author : gajendra d ambi + Date : June 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/MrAmbiG/vmware + http://www.virtu-al.net/2013/01/07/ssh-powershell-tricks-with-plink-exe/ +#> +#Start of Script +GetPlink #custom function gets plink.exe #https://github.com/MrAmbiG/vmware/blob/master/vTool/vToolMenus/MainMenu/vCenterMenu/HostMenu/GetPlink.ps1 + +#server's credentials +$user = Read-Host "Host's username?" +$pass = Read-Host "Host's password?" +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$VMHosts = get-cluster $cluster | Get-VMHost | sort + +#copy plink to c:\ for now +Copy-Item $PSScriptRoot\plink.exe C:\ + +$name = "commands" +$commands = "$PSScriptRoot\$name.txt" #create text file +ni -ItemType file $commands -Force +ac $commands "#Paste your each command in a new line which you want to run on each host" +Start-Process $commands + +Read-Host "Hit Return/Enter once you are done copying the commands to the pop up text" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() #timer start +$stopWatch.Start() + +$lines = gc $commands + +Copy-Item $PSScriptRoot\plink.exe C:\ #copy plink to c:\ for now + +ForEach ($VMHost in $VMHosts) + { + Write-Host $vmhost.Name -ForegroundColor Black -BackgroundColor White + Get-VMHost $VMHost | Get-VMHostService | where {$_.Key -eq "TSM-SSH"} | Start-VMHostService -confirm:$false #start ssh + echo y | C:\plink.exe -ssh $user@$VMHost -pw $pass "exit" #store ssh keys + foreach ($line in $lines) + { + C:\plink.exe -ssh -v -noagent $VMHost -l $user -pw $pass "$line" + } + Get-VMHost $VMHost | Get-VMHostService | where {$_.Key -eq "TSM-SSH"} | Stop-VMHostService -confirm:$false #stop ssh + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function DrsVmGroup +{ +<# +.SYNOPSIS + Create DrsVmGroup DRS Rule. +.DESCRIPTION + This uses custom functions to create DRS DrsVmGroup rules between VMs where VMs will be made to stay on the same host by the DRS. +.NOTES + File Name : DrsVmGroup.ps1 + Author : gajendra d ambi + Date : February 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +$cluster = Read-Host "Name of the Cluster?" +$VMs = Read-Host "Type the Name of the VM/VMs (separated only by a comma and no spaces)" +$VMs = $VMs.split(',') +$vmgroup = Read-Host "Type the Name of the VM group" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-VM $VMs | New-DrsVmGroup -Name $vmgroup -Cluster $cluster + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function shAddNic +{ +<# +.SYNOPSIS + Create New VMware Standard Switch on all hosts +.DESCRIPTION + This will need the 1st host's ip address and the number of subsequent hosts that you want to configure(which should be in series of the ip address). + Lets say you have 10 esxi hosts and the 1st host's ip is 1.1.1.1 then you have to provide the 1st host's ip address and the number of hosts + as an input to this script which will do +1 to the last octet of the 1st host's ip address and connect to all the 10 hosts and + Then it will add physical nics to the standard switch. +.NOTES + File Name : shAddNic.ps1 + Author : gajendra d ambi + Date : April 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$vss = Read-Host "name of the vSphere standard Switch?" +$newnic = Read-Host "Name of the Nic (ex:vmnic5)?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +foreach ($vmhost in (get-cluster $cluster | get-vmhost | sort)) { + $vmnic = get-vmhost $vmhost | Get-VMHostNetworkAdapter -Physical -Name $newnic + get-vmhost $vmhost | get-virtualswitch -Name $vss | Add-VirtualSwitchPhysicalNetworkAdapter -VMHostPhysicalNic $vmnic -confirm:$false + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function l3vmotion +{ +<# +.SYNOPSIS + Configure l3 vmotion. +.DESCRIPTION + It will + create the l3 vmotion portgroup + add vmk to the portgroup + assign vlan to the portgroup + add ip, subnet mask to the portgroup + enable netstack l3 vmotion for the portgroup + 1. update the default gateway manually for now +.NOTES + File Name : l3vmotion.ps1 + Author : gajendra d ambi + Date : June 2016 + Prerequisite : PowerShell v4+, powercli 6.3+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/MrAmbiG/vmware + https://communities.vmware.com/thread/519794?start=0&tstart=0 (inok) +#> +#Start of Script +Write-Host " +Don't forget to add gateway after it's completion +" -BackgroundColor White -ForegroundColor Black + +$cluster = Read-Host "Name of the cluster?" +$vss = Read-Host "Name of the vSwitch?" +$pg = Read-Host "name of the portgroup?" +$vlan = Read-Host "vlan?" +$ip = Read-Host "What is the 1st vmkernel ip address?" +$mask = Read-Host "subnet mask?" +$vmk = Read-Host "vmk number? ex: vmk7?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$a = $ip.Split('.')[0..2] +#first 3 octets of the ip address +$b = [string]::Join(".",$a) + +#last octet of the ip address +$c = $ip.Split('.')[3] +$c = [int]$c + +$vmhosts = get-cluster $cluster | get-vmhost | sort +foreach ($vmhost in $vmhosts) + { + Get-VMHost $vmhost | Get-VirtualSwitch -Name $vss | New-VirtualPortGroup $pg -VLanId $vlan -Confirm:$false #creating new VM portgroup + $esxcli = get-vmhost $vmhost | get-esxcli + $esxcli.network.ip.netstack.add($false, "vmotion") #enabling and adding vmotion tcp/ip stack (netstack) + $esxcli.network.ip.interface.add($null, $null, "$vmk", $null, "1500", "vmotion", "$pg") + $esxcli.network.ip.interface.ipv4.set("$vmk", "$b.$(($c++))", "$mask", $null, "static") #update ip informaiton to the vmk + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +##start of function +function shGetShHosts +{ +<# +.SYNOPSIS + Connect to standalone hosts +.DESCRIPTION + This will get the 1st host's ip address and increment it to a number specified by the user and connect to all of them. +.NOTES + File Name : shGetShHosts.ps1 + Author : gajendra d ambi + Date : April 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# + +$1sthost = Read-Host "1st host's ip address?" +$max = Read-Host "total number of esxi hosts that you want to configure?" +$user = Read-Host "ESXi username?" +$pass = Read-Host "ESXi password?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +#generate the range of ip addresses of hosts +$fixed = $1sthost.Split('.')[0..2] +$last = [int]($1sthost.Split('.')[3]) +$maxhosts = $max - 1 +$hosts = +$last..($last + $maxhosts) | %{ + [string]::Join('.',$fixed) + "." + $_ +} + +#connect to all hosts +connect-viserver $hosts -User $user -Password $pass + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +}#End of function + +#start of function +function shShootVmPg +{ +<# +.SYNOPSIS + Create New VMware Standard Switch on all hosts +.DESCRIPTION + This will need the 1st host's ip address and the number of subsequent hosts that you want to configure(which should be in series of the ip address). + Lets say you have 10 esxi hosts and the 1st host's ip is 1.1.1.1 then you have to provide the 1st host's ip address and the number of hosts + as an input to this script which will do +1 to the last octet of the 1st host's ip address and connect to all the 10 hosts and + Then it will Remove VM portgroup. +.NOTES + File Name : shShootVmPg.ps1 + Author : gajendra d ambi + Date : April 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$pg = Read-Host "Name of the portgroup?" +$pg = Read-Host "Name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-VMHost | Get-VirtualPortGroup -Name $pg | Remove-VirtualPortGroup -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +function ShootVmkPg +{ +<# +.SYNOPSIS + Remove vmkernel portgroup +.DESCRIPTION + This will remove the virtual machine portgroup of all the hosts of a cluster/clusters. +.NOTES + File Name : ShootVmkPg.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "Name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + foreach ($vmhost in (get-cluster $cluster | get-vmhost | sort)) + { + $vmk = Get-VMHostNetworkAdapter -VMHost $vmhost | where PortgroupName -eq $pg + Write-Host "removing vmkernel from the $pg on $vmhost" + Remove-VMHostNetworkAdapter -Nic $vmk -confirm:$false + + Write-Host "removing $pg on $vmhost" + get-vmhost $vmhost | get-virtualportgroup -Name $pg | Remove-VirtualPortGroup -Confirm:$false + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +function shRenamePg +{ +<# +.SYNOPSIS + Create New VMware Standard Switch on all hosts +.DESCRIPTION + This will need the 1st host's ip address and the number of subsequent hosts that you want to configure(which should be in series of the ip address). + Lets say you have 10 esxi hosts and the 1st host's ip is 1.1.1.1 then you have to provide the 1st host's ip address and the number of hosts + as an input to this script which will do +1 to the last octet of the 1st host's ip address and connect to them all the 10 hosts. + Then it will rename the esxi host's portgroup. +.NOTES + File Name : shRenamePg.ps1 + Author : gajendra d ambi + Date : April 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$oldpg = Read-Host "Old Name of the portgroup?" +$newpg = Read-Host "New Name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-VMHost | Get-VirtualPortGroup -Name $oldpg | Set-VirtualPortGroup -Name $newpg -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function shNewVss +{ +<# +.SYNOPSIS + Create New VMware Standard Switch on all hosts +.DESCRIPTION + This will need the 1st host's ip address and the number of subsequent hosts that you want to configure(which should be in series of the ip address). + Lets say you have 10 esxi hosts and the 1st host's ip is 1.1.1.1 then you have to provide the 1st host's ip address and the number of hosts + as an input to this script which will do +1 to the last octet of the 1st host's ip address and connect to all of the 10 hosts. + Then it will create a new vswitch based on your input. +.NOTES + File Name : shNewVss.ps1 + Author : gajendra d ambi + Date : April 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$vss = Read-Host "name of the vSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +get-vmhost | New-VirtualSwitch -Name $vss -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +##start of function +function shNewVMPg +{ +<# +.SYNOPSIS + Create New VMware Standard Swiportgroup on all hosts +.DESCRIPTION + This will need the 1st host's ip address and the number of subsequent hosts that you want to configure(which should be in series of the ip address). + Lets say you have 10 esxi hosts and the 1st host's ip is 1.1.1.1 then you have to provide the 1st host's ip address and the number of hosts + as an input to this script which will do +1 to the last octet of the 1st host's ip address and connect to all of the 10 hosts and + Then it will create a new virtual machine portgroup based on your input. +.NOTES + File Name : shNewVMPg.ps1 + Author : gajendra d ambi + Date : April 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$vss = Read-Host "name of the vSwitch?" +$pg = Read-Host "name of the portgroup?" +$vlan = Read-Host "vlan?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +get-vmhost | Get-VirtualSwitch -Name $vss | New-VirtualPortGroup -Name $pg -VLanId $vlan -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +function shNewVMkernelPg +{ +<# +.SYNOPSIS + Create New VMware Standard Swiportgroup on all hosts +.DESCRIPTION + This will need the 1st host's ip address and the number of subsequent hosts that you want to configure(which should be in series of the ip address). + Lets say you have 10 esxi hosts and the 1st host's ip is 1.1.1.1 then you have to provide the 1st host's ip address and the number of hosts + as an input to this script which will do +1 to the last octet of the 1st host's ip address and connect to all of the 10 hosts and + Then it will create a new vmkernel portgroup based on your input. +.NOTES + File Name : shNewVMkernelPg.ps1 + Author : gajendra d ambi + Date : April 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$vss = Read-Host "name of the vSwitch?" +$pg = Read-Host "name of the portgroup?" +$vlan = Read-Host "vlan?" + +$ip = Read-Host "What is the 1st vmkernel ip address?" +$mask = Read-Host "subnet mask?" +$vmk = Read-Host "vmk number? ex: vmk7?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +get-vmhost | Get-VirtualSwitch -Name $vss | New-VirtualPortGroup -Name $pg -VLanId $vlan -Confirm:$false + +$a = $ip.Split('.')[0..2] +#first 3 octets of the ip address +$b = [string]::Join(".",$a) + +#last octet of the ip address +$c = $ip.Split('.')[3] +$c = [int]$c + + foreach ($vmhost in (get-vmhost | sort)){ + $esxcli = get-vmhost $vmhost | Get-EsxCli + $esxcli.network.ip.interface.add($null, $null, "$vmk", $null, "1500", $null, "$pg") #add vmkernel to the portgroup + $esxcli.network.ip.interface.ipv4.set("$vmk", "$b.$(($c++))", "$mask", $null, "static") #update ip informaiton to the vmkernel + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + }#End of Script# +}#End of function + +#start of function +function shShootVmkPg +{ +<# +.SYNOPSIS + Create New VMware Standard Switch on all hosts +.DESCRIPTION + This will need the 1st host's ip address and the number of subsequent hosts that you want to configure(which should be in series of the ip address). + Lets say you have 10 esxi hosts and the 1st host's ip is 1.1.1.1 then you have to provide the 1st host's ip address and the number of hosts + as an input to this script which will do +1 to the last octet of the 1st host's ip address and connect to all the 10 hosts and + Then it will Remove vmkernel portgroup. +.NOTES + File Name : ShootVmkPg.ps1 + Author : gajendra d ambi + Date : April 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$pg = Read-Host "Name of the portgroup?" + foreach ($vmhost in (get-vmhost | sort)) + { + $vmk = Get-VMHostNetworkAdapter -VMHost $vmhost | where PortgroupName -eq $pg + Write-Host "removing vmkernel from the $pg on $vmhost" + Remove-VMHostNetworkAdapter -Nic $vmk -confirm:$false + + Write-Host "removing $pg on $vmhost" + get-vmhost $vmhost | get-virtualportgroup -Name $pg | Remove-VirtualPortGroup -Confirm:$false + }#End of Script# +}#End of function + +#start of function +function PgSync +{ +<# +.SYNOPSIS + Sync portgroups properties with vSwitch +.DESCRIPTION + This will make the portgroup to sync itself with the vswitch's settings. this will make the portgroup inherit the following from the vSwitch + LoadBalancingPolicy + NetworkFailoverDetectionPolicy + NotifySwitches + FailoverOrder +.NOTES + File Name : PowerMgmt.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +get-cluster $cluster | Get-VMHost | sort | Get-virtualswitch -Standard | Get-VirtualPortGroup -Name $pg | get-nicteamingpolicy | Set-NicTeamingPolicy -InheritLoadBalancingPolicy $true -InheritNetworkFailoverDetectionPolicy $true -InheritNotifySwitches $true -InheritFailback $true -InheritFailoverOrder $true -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function AddHosts +{ +<# +.SYNOPSIS + Add hosts to cluster. +.DESCRIPTION + This will add hosts to the specified clusters. The function will create a csv file which can be opened in excel. + populate the values under their respective headers in the excel. save it. close it. Hit return/enter to proceed. + Then the script will use the values from csv file and add hosts to the cluster(s). +.NOTES + File Name : AddHosts.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script + +Write-Host " +A CSV file will be opened (open in excel/spreadsheet) +populate the values, +save & close the file, +Hit Enter to proceed +" -ForegroundColor Blue -BackgroundColor White +$csv = "$PSScriptRoot/addhosts.csv" +get-process | Select-Object cluster,hostname,username,password | Export-Csv -Path $csv -Encoding ASCII -NoTypeInformation +Start-Process $csv +Read-Host "Hit Enter/Return to proceed" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$csv = Import-Csv $csv + foreach ($line in $csv) + { + $cluster = $($line.cluster) + $vmhost = $($line.hostname) + $user = $($line.username) + $pass = $($line.password) + Add-VMHost $vmhost -Location (get-cluster -Name $cluster) -User $user -Password $pass -Force -Confirm:$false + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script +} #End of function + +#start of function +Function ConfigHA +{ +<# +.SYNOPSIS + Configure HA on the cluster. +.DESCRIPTION + This will configure Ha on a specified cluster. It will + enable HA + disable admission control if the number of hosts is less than or equal to 3 + set the vm monitoring policy. +.NOTES + File Name : ConfigHA.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script + +$cluster = Read-Host "name of the cluster?" +$HARestartPriority = Read-Host " +choose one of the following as your VM (HA) Restart Priority +0. ClusterRestartPriority +1. Disabled +2. Low +3. Medium (Recommended) +4. High +" -ForegroundColor Blue -BackgroundColor White + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +get-cluster $cluster | Set-Cluster -HAEnabled:$true + +if ($HARestartPriority -eq 0 ) { get-cluster $cluster | set-cluster -HARestartPriority ClusterRestartPriority -Confirm:$false } +if ($HARestartPriority -eq 1 ) { get-cluster $cluster | set-cluster -HARestartPriority Disabled -Confirm:$false } +if ($HARestartPriority -eq 2 ) { get-cluster $cluster | set-cluster -HARestartPriority Low -Confirm:$false } +if ($HARestartPriority -eq 3 ) { get-cluster $cluster | set-cluster -HARestartPriority Medium -Confirm:$false } +if ($HARestartPriority -eq 4 ) { get-cluster $cluster | set-cluster -HARestartPriority High -Confirm:$false } + +if ((Get-Cluster $cluster | Get-VMHost).count -lt 4) { Get-Cluster $cluster | Set-Cluster -HAAdmissionControlEnabled:$false } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script +}#End of function + +#start of function +Function CreateCluster +{ +<# +.SYNOPSIS + Create CreateCluster DRS Rule. +.DESCRIPTION + This uses custom functions to create DRS CreateCluster rules between VMs where VMs will be made to stay on the same host by the DRS. +.NOTES + File Name : CreateCluster.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + $cluster = Read-Host "Name of the Cluster?" + if ((Get-datacenter).count -gt 1) { + $dc = Read-Host "name of the datacenter?" + get-datacenter -Name $dc | New-Cluster -Name $cluster -Confirm:$false + } + + if ((Get-datacenter).count -eq 1) { + get-datacenter | New-Cluster -Name $cluster -Confirm:$false + } + + if ((Get-datacenter).count -eq 0) { + Write-Host "Please create a datacenter first" -ForegroundColor DarkYellow -BackgroundColor White + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script +} #End of function + +#start of function +Function CreateVapp +{ +<# +.SYNOPSIS + Create new vApp. +.DESCRIPTION + This will create vApp in a cluster. It is very easy and less time consuming to do manually but + the motto here is 'manual is an evil when you are automating' and most importantly in future this might have more options where + you can add VMs and control the startup/shutdown order of VMs. +.NOTES + File Name : CreateVapp.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +$cluster = Read-Host "name of the cluster?" +$vapp = Read-Host "Name of the vApp?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +New-VApp -Name $vapp -Location (get-cluster $cluster) -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script +}#End of function + + +#start of function +Function AddDatastores +{ +<# +.SYNOPSIS + Add datastores to a cluster. +.DESCRIPTION + This will create a csv file whcih is opened in excel. Once you popuate the details, you have to save & close it. + Hit return/enter to proceed and the script will + add the datastores to the 1st host of the cluster + rescan all the hosts of the cluster +.NOTES + File Name : AddDatastores.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script + +New-VIProperty -Name "Runtime" -ObjectType "ScsiLun" -Value { + param($scsilun) + #http://www.lucd.info/2010/10/17/runtime-name-via-extensiondata-and-new-viproperty/ + #twitter/lucd22 + #many a times (for some storages) runtime is empty, thus using this scriptlet to populate/repopulate the same + $storDev = $scsilun.VMHost.ExtensionData.Config.StorageDevice + $key = ($storDev.PlugStoreTopology.Device | where {$_.Lun -eq $scsilun.Key}).Key + $stordev.PlugStoreTopology.Path | where {$_.Device -eq $key} | %{ + $device = $_ + $adapterKey = ($stordev.PlugStoreTopology.Adapter | where {$_.Key -eq $device.Adapter}).Adapter + $adapter = ($stordev.HostBusAdapter | where {$_.Key -eq $adapterKey}).Device + $adapter + ":C" + $device.ChannelNumber + ":T" + $device.TargetNumber + ":L" + $device.LunNumber + } +} -Force + + +Write-Host " +A CSV file will be opened (open in excel/spreadsheet) +populate the values, +save & close the file, +Hit Enter to proceed +" -ForegroundColor Blue -BackgroundColor White +$csv = "$PSScriptRoot/AddLuns.csv" +get-process | Select-Object Cluster,LunID,DatastoreName,vmhba | Export-Csv -Path $csv -Encoding ASCII -NoTypeInformation +Start-Process $csv +Read-Host "Hit Enter/Return to proceed" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$csv = Import-Csv $csv + foreach ($line in $csv) #using trim() to make sure unnecessary spaces before or after any values in the csv files are removed + { + $cluster = $($line.Cluster) + $cluster = $cluster.trim() + + $lunid = $($line.LunID) + $lunid = $lunid.trim() + + $ds = $($line.DatastoreName) + $ds = $ds.trim() + + $vmhba = $($line.vmhba) + $runtime = ":C0:T0:L$lunid" + $runtime = $vmhba+$runtime + $vmhost = (get-cluster $cluster | get-vmhost)[0] + $naa = (Get-SCSILun -VMhost $vmhost -LunType Disk | where Runtime -eq $runtime).CanonicalName + New-Datastore -VMHost $vmhost -Name $ds -Path $naa -vmfs -Confirm:$false + } + + $cluster = $csv.Cluster | get-unique + get-cluster $cluster | get-vmhost | Get-VMHostStorage -RescanAllHba + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script +}#End of function + +#start of function +Function ConfigDrs +{ +<# +.SYNOPSIS + Configure DRS on the cluster. +.DESCRIPTION + This will configure DRS on a specified cluster. +.NOTES + File Name : ConfigDrs.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script + +$cluster = Read-Host "name of the cluster?" +Write-Host " +choose the DRS Mode +1. FullyAutomated +2. Manual +3. PartiallyAutomated +" -ForegroundColor Blue -BackgroundColor White +$DrsLevel = Read-Host "type 1 or 2 or 3" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +if ($DrsLevel -eq 1) { $DrsLevel = "FullyAutomated" } +if ($DrsLevel -eq 2) { $DrsLevel = "Manual" } +if ($DrsLevel -eq 3) { $DrsLevel = "PartiallyAutomated" } + +Get-Cluster $cluster | Set-Cluster -DrsEnabled:$true -DrsAutomationLevel $DrsLevel -confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script +}#End of function + + +#start of function +Function VMAffinity +{ +<# +.SYNOPSIS + Create VMAffinity DRS Rule. +.DESCRIPTION + This uses custom functions to create DRS VMAffinity rules between VMs where VMs will be made to stay on the same host by the DRS. +.NOTES + File Name : VMAffinity.ps1 + Author : gajendra d ambi + Date : February 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +$cluster = Read-Host "Name of the Cluster?" +$drsrule = Read-Host "Type the Name of the DRS Rule" +$vms = Read-Host "Name of the VMs (separated by comma, no space)?" +$vms = $vms.split(',') + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +New-DrsRule –Name $drsrule -Cluster $cluster –KeepTogether $true –VM $vms + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script +}#End of function + +Function New-DrsVmGroup { +<# +.SYNOPSIS + Creates a new DRS VM group +.DESCRIPTION + This function creates a new DRS VM group in the DRS Group Manager +.NOTES + Author: Arnim van Lieshout +.PARAMETER VM + The VMs to add to the group. Supports objects from the pipeline. +.PARAMETER Cluster + The cluster to create the new group on. +.PARAMETER Name + The name for the new group. +.EXAMPLE + PS> Get-VM VM001,VM002 | New-DrsVmGroup -Name "VmGroup01" -Cluster CL01 +.EXAMPLE + PS> New-DrsVmGroup -VM VM001,VM002 -Name "VmGroup01" -Cluster (Get-CLuster CL01) +#> + + Param( + #http://www.van-lieshout.com/2011/06/drs-rules/ + #Arnim van Lieshout + [parameter(valuefrompipeline = $true, mandatory = $true, + HelpMessage = "Enter a vm entity")] + [PSObject]$VM, + [parameter(mandatory = $true, + HelpMessage = "Enter a cluster entity")] + [PSObject]$Cluster, + [parameter(mandatory = $true, + HelpMessage = "Enter a name for the group")] + [String]$Name) + + begin { + switch ($Cluster.gettype().name) { + "String" {$cluster = Get-Cluster $cluster | Get-View} + "ClusterImpl" {$cluster = $cluster | Get-View} + "Cluster" {} + default {throw "No valid type for parameter -Cluster specified"} + } + $spec = New-Object VMware.Vim.ClusterConfigSpecEx + $group = New-Object VMware.Vim.ClusterGroupSpec + $group.operation = "add" + $group.Info = New-Object VMware.Vim.ClusterVmGroup + $group.Info.Name = $Name + } + + Process { + switch ($VM.gettype().name) { + "String" {Get-VM -Name $VM | %{$group.Info.VM += $_.Extensiondata.MoRef}} + "VirtualMachineImpl" {$group.Info.VM += $VM.Extensiondata.MoRef} + "VirtualMachine" {$group.Info.VM += $VM.MoRef} + default {throw "No valid type for parameter -VM specified"} + } + } + + End { + if ($group.Info.VM) { + $spec.GroupSpec += $group + $cluster.ReconfigureComputeResource_Task($spec,$true) + } + else { + throw "No valid VMs specified" + } + } + +} + +#start of function +Function DrsHostGroup +{ +<# +.SYNOPSIS + Create DrsHostGroup DRS Rule. +.DESCRIPTION + This uses custom functions to create DRS DrsHostGroup rules between VMs where VMs will be made to stay on the same host by the DRS. +.NOTES + File Name : DrsHostGroup.ps1 + Author : gajendra d ambi + Date : February 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +$cluster = Read-Host "Name of the Cluster?" +$vmhosts = Read-Host "Type the Name of the host/hosts (separated only by a comma and no spaces)" +$vmhosts = $vmhosts.split(',') +$hostgroup = Read-Host "Type the Name of the Hostgroup" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost $vmhosts | New-DrsHostGroup -Name $hostgroup + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script +}#End of function + +#start of function +Function DrsHostGroup +{ +<# +.SYNOPSIS + Create DrsHostGroup DRS Rule. +.DESCRIPTION + This uses custom functions to create DRS DrsHostGroup rules between VMs where VMs will be made to stay on the same host by the DRS. +.NOTES + File Name : DrsHostGroup.ps1 + Author : gajendra d ambi + Date : February 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +$cluster = Read-Host "Name of the Cluster?" +$vmhosts = Read-Host "Type the Name of the host/hosts (separated only by a comma and no spaces)" +$vmhosts = $vmhosts.split(',') +$hostgroup = Read-Host "Type the Name of the Hostgroup" +Get-Cluster $cluster | Get-VMHost $vmhosts | New-DrsHostGroup -Name $hostgroup + +#End of Script +}#End of function + +#start of function +Function DRSVMToHostRule +{ +<# +.SYNOPSIS + Create DRSVMToHostRule DRS Rule. +.DESCRIPTION + This uses custom functions to create DRS DRSVMToHostRule rules between VMs where VMs will be made to stay on the same host by the DRS. +.NOTES + File Name : DRSVMToHostRule.ps1 + Author : gajendra d ambi + Date : February 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +$cluster = Read-Host "Name of the Cluster?" +$drsrule = Read-Host "Type the Name of the DRS Rule" +$vmgroup = Read-Host "Type the Name of the VM group" +$hostgroup = Read-Host "Type the Name of the Hostgroup" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +New-DrsVMToHostRule -VMGroup $vmgroup -HostGroup $hostgroup -Name $drsrule -Cluster $cluster -AntiAffine -Mandatory + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +Function VMAntiAffinity +{ +<# +.SYNOPSIS + Create VMAntiAffinity DRS Rule. +.DESCRIPTION + This uses custom functions to create DRS VMAntiAffinity rules between VMs where VMs will be made to stay on different hosts by the DRS. +.NOTES + File Name : VMAntiAffinity.ps1 + Author : gajendra d ambi + Date : February 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +$cluster = Read-Host "Name of the Cluster?" +$drsrule = Read-Host "Type the Name of the DRS Rule" +$vms = Read-Host "Name of the VMs (separated by comma, no space)?" +$vms = $vms.split(',') + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +New-DrsRule –Name $drsrule -Cluster $cluster –KeepTogether $false –VM $vms + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script +}#End of function + +Function New-DRSVMToHostRule { +<# +.SYNOPSIS + Creates a new DRS VM to host rule +.DESCRIPTION + This function creates a new DRS vm to host rule +.NOTES + Author: Arnim van Lieshout +.PARAMETER VMGroup + The VMGroup name to include in the rule. +.PARAMETER HostGroup + The VMHostGroup name to include in the rule. +.PARAMETER Cluster + The cluster to create the new rule on. +.PARAMETER Name + The name for the new rule. +.PARAMETER AntiAffine + Switch to make the rule an AntiAffine rule. Default rule type is Affine. +.PARAMETER Mandatory + Switch to make the rule mandatory (Must run rule). Default rule is not mandatory (Should run rule) +.EXAMPLE + PS> New-DrsVMToHostRule -VMGroup "VMGroup01" -HostGroup "HostGroup01" -Name "VMToHostRule01" -Cluster CL01 -AntiAffine -Mandatory +#> + + Param( + #http://www.van-lieshout.com/2011/06/drs-rules/ + #Arnim van Lieshout + [parameter(mandatory = $true, + HelpMessage = "Enter a VM DRS group name")] + [String]$VMGroup, + [parameter(mandatory = $true, + HelpMessage = "Enter a host DRS group name")] + [String]$HostGroup, + [parameter(mandatory = $true, + HelpMessage = "Enter a cluster entity")] + [PSObject]$Cluster, + [parameter(mandatory = $true, + HelpMessage = "Enter a name for the group")] + [String]$Name, + [Switch]$AntiAffine, + [Switch]$Mandatory) + + switch ($Cluster.gettype().name) { + "String" {$cluster = Get-Cluster $cluster | Get-View} + "ClusterImpl" {$cluster = $cluster | Get-View} + "Cluster" {} + default {throw "No valid type for parameter -Cluster specified"} + } + + $spec = New-Object VMware.Vim.ClusterConfigSpecEx + $rule = New-Object VMware.Vim.ClusterRuleSpec + $rule.operation = "add" + $rule.info = New-Object VMware.Vim.ClusterVmHostRuleInfo + $rule.info.enabled = $true + $rule.info.name = $Name + $rule.info.mandatory = $Mandatory + $rule.info.vmGroupName = $VMGroup + if ($AntiAffine) { + $rule.info.antiAffineHostGroupName = $HostGroup + } + else { + $rule.info.affineHostGroupName = $HostGroup + } + $spec.RulesSpec += $rule + $cluster.ReconfigureComputeResource_Task($spec,$true) + +} + +Function New-DrsHostGroup +{ +<# +.SYNOPSIS + Creates a new DRS host group +.DESCRIPTION + This function creates a new DRS host group in the DRS Group Manager +.NOTES + Author: Arnim van Lieshout +.PARAMETER VMHost + The hosts to add to the group. Supports objects from the pipeline. +.PARAMETER Cluster + The cluster to create the new group on. +.PARAMETER Name + The name for the new group. +.EXAMPLE + PS> Get-VMHost ESX001,ESX002 | New-DrsHostGroup -Name "HostGroup01" -Cluster CL01 +.EXAMPLE + PS> New-DrsHostGroup -Host ESX001,ESX002 -Name "HostGroup01" -Cluster (Get-CLuster CL01) +#> + + Param( + #http://www.van-lieshout.com/2011/06/drs-rules/ + #Arnim van Lieshout + [parameter(valuefrompipeline = $true, mandatory = $true, + HelpMessage = "Enter a host entity")] + [PSObject]$VMHost, + [parameter(mandatory = $true, + HelpMessage = "Enter a cluster entity")] + [PSObject]$Cluster, + [parameter(mandatory = $true, + HelpMessage = "Enter a name for the group")] + [String]$Name) + + begin { + switch ($Cluster.gettype().name) { + "String" {$cluster = Get-Cluster $cluster | Get-View} + "ClusterImpl" {$cluster = $cluster | Get-View} + "Cluster" {} + default {throw "No valid type for parameter -Cluster specified"} + } + $spec = New-Object VMware.Vim.ClusterConfigSpecEx + $group = New-Object VMware.Vim.ClusterGroupSpec + $group.operation = "add" + $group.Info = New-Object VMware.Vim.ClusterHostGroup + $group.Info.Name = $Name + } + + Process { + switch ($VMHost.gettype().name) { + "String" {Get-VMHost -Name $VMHost | %{$group.Info.Host += $_.Extensiondata.MoRef}} + "VMHostImpl" {$group.Info.Host += $VMHost.Extensiondata.MoRef} + "HostSystem" {$group.Info.Host += $VMHost.MoRef} + default {throw "No valid type for parameter -VMHost specified"} + } + } + + End { + if ($group.Info.Host) { + $spec.GroupSpec += $group + $cluster.ReconfigureComputeResource_Task($spec,$true) + } + else { + throw "No valid hosts specified" + } + } + +} + +#start of function +function SetDNS +{ +<# +.SYNOPSIS + Update DNS +.DESCRIPTION + This will update the DNS, domain and searchdomain for the esxi hosts. +.NOTES + File Name : SetDNS.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "This new values will replace the existing values, hence add all the values" -ForegroundColor Yellow +$dnsadd = Read-Host "DNS Addresses(separate multiple entries with a comma)?" +$dnsadd = $dnsadd.split(',') +$domain = Read-Host "domain name?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +get-cluster $cluster | get-vmhost | Get-VMHostNetwork | Set-VMHostNetwork -DnsAddress $dnsadd -DomainName $domain -SearchDomain $domain -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#Start of function +function CoreDump +{ +<# +.SYNOPSIS + configure Coredump on esxi hosts +.DESCRIPTION + This will check the version of the esxi and based on the version of it, it will set the coredump settings on the host +.NOTES + File Name : CoreDump.ps1 + Author : gajendra d ambi + Date : January 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#start of the script +#start of the function + +$DumpTarget = Read-Host "Type the DumpTarget?:" +$vmk = Read-Host "Type the vmk number?:" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + foreach ($vmhost in (get-vmhost | sort)) { + if ((get-vmhost $vmhost).version -match 5.) { + $esxcli = get-vmhost $VMHost | Get-EsxCli + $esxcli.system.coredump.network.set($null, $vmk , $DumpTarget , "6500") + $esxcli.system.coredump.network.set("true") + $esxcli.system.coredump.network.get() + } + + if ((get-vmhost $vmhost).version -match 6.) { + $esxcli = get-vmhost $vmhost | get-esxcli + $esxcli.system.coredump.network.set($null , $vmk , $null , $DumpTarget , "6500") + $esxcli.system.coredump.network.set("true") + $esxcli.system.coredump.network.get() + } + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function EsxiAdvanced +{ +<# +.SYNOPSIS + Set value to a chosen advancedsettig +.DESCRIPTION + This will ask set many of the esxi advancedsettings which are exposed in esxi>configuration>advancedsettings. + It will require 2 inputs from the user. + name of the advanced setting and value of the advancedsetting. +.NOTES + File Name : EsxiAdvanced.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$AdvSet = Read-Host "name of the advancedsetting[case sensitive]?" +$value = Read-Host "value for the advancedsetting?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + foreach ($vmhost in (Get-Cluster $cluster)) + { + Get-VMHost $vmhost | get-advancedsetting -Name $AdvSet | Set-AdvancedSetting -Value $value -Confirm:$false + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function SetIpv6 +{ +<# +.SYNOPSIS + Update Ipv6 +.DESCRIPTION + This will disable/enable Ipv6 on esxi hosts of a chosen cluster. +.NOTES + File Name : SetIpv6.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host " +1. Disable IPv6 +2. Enable IPv6 +" -ForegroundColor Blue -BackgroundColor White +$choice = Read-Host "type between 1 & 2" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +If ($choice -eq 1) { get-cluster $cluster | get-vmhost | Get-VMHostNetwork | Set-VMHostNetwork -IPv6Enabled $false } +If ($choice -eq 2) { get-cluster $cluster | get-vmhost | Get-VMHostNetwork | Set-VMHostNetwork -IPv6Enabled $true } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +function SetNTP +{ +<# +.SYNOPSIS + Update NTP +.DESCRIPTION + This will update the NTP servers to the esxi hosts. It will add one NTP server at a time. + It will not replace or overwrite any existing NTP servers. This will set the ntpd service to on. +.NOTES + File Name : SetNTP.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "This new values will replace the existing values, hence add all the values" -ForegroundColor Yellow +$ntp = Read-Host "NTP address(separate them with comma,no space..)" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$ntp = $ntp.split(',') + + foreach ($vmhost in (Get-Cluster $cluster | get-vmhost | sort)) + { + Write-Host "adding ntp server to $vmhost" -ForegroundColor Green + Add-VMHostNTPServer -NtpServer $ntp -VMHost (Get-VMHost $vmhost) -Confirm:$false + Write-Host "setting ntp policy to on on $vmhost" -ForegroundColor Green + Get-VMHostService -VMHost (Get-VMHost $vmhost) | where Key -eq "ntpd" | Restart-VMHostService -Confirm:$false + Get-VMHostService -VMHost (Get-VMHost $vmhost) | where Key -eq "ntpd" | Set-VMHostService -policy "on" -Confirm:$false + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function SetFirewall +{ +<# +.SYNOPSIS + firewall settings for esxi hosts +.DESCRIPTION + Configure firewall per host in a cluster. These is a sample firewall setting here. You can populate the rest as per your business + standards. Run + get-vmhost | Get-VmhostFirewallException + to list the available firewall settings that you can turn on or off. +.NOTES + File Name : SetFirewall.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" + + foreach ($vmhost in (Get-Cluster $cluster)) + { + Get-VMHost $vmhost | Get-VmhostFirewallException -Name "NTP Client" | Set-VMHostFirewallException -enabled:$true -Confirm:$false + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function SetEsxiPerf +{ +<# +.SYNOPSIS + Configure powersaving policy or performance policy on esxi. +.DESCRIPTION + This will configure 1 of the 3 levels of energy saving or performance setting on your esxi hosts. + 3 valid options are HighPerformance, Balanced, LowPower. +.NOTES + File Name : SetEsxiPerf.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# + +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host " +1. HighPerformance +2. Balanced +3. LowPower +" -ForegroundColor Blue -BackgroundColor White +$perf = Read-Host "one of the following is a valid choice. Type 1,2 or 3" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +if ($perf -eq 1) {$perf = "HighPerformance"} +if ($perf -eq 2) {$perf = "Balanced" } +if ($perf -eq 3) {$perf = "LowPower" } + +(Get-View (Get-Cluster $cluster | Get-VMHost | Get-View).ConfigManager.PowerSystem).ConfigurePowerPolicy($perf) + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function SetScratch +{ +<# +.SYNOPSIS + Create & configure Scratch partition on Esxi hosts +.DESCRIPTION + This will create scratch location on the local storage of the esxi hosts and then map that as the + scratch location for that host. Please note that if the local storage of your esxi blades is of different + format that '*-localstorage' then please change the line + $ds = Get-VMHost -name $vmhost | get-datastore -Name '*-localstorage' + accordingly. +.NOTES + File Name : SetScratch.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$resetloc = get-location +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host " +Leave blank if there is just one datastore, +to create scratch on a datastore with it's name matching 'localstorage' type localstorage, +" -BackgroundColor White -ForegroundColor Black +$pattern = Read-Host "?" +$pattern = "*"+$pattern+"*" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +foreach ($vmhost in (get-cluster $cluster | get-vmhost | sort)) { + $vmhost = (get-vmhost $vmhost).Name + $scratchfolder = '.locker_'+($vmhost.Split('.')[0]) + $ds = Get-VMHost -name $vmhost | get-datastore -Name $pattern + $location = ($vmhost.Split('.')[0]) + New-PSDrive -Name $location -Root \ -PSProvider VimDatastore -Datastore ($ds) -Scope global + Set-Location $location":" + ni $scratchfolder -ItemType directory -ErrorAction SilentlyContinue + Get-VMhost $vmhost | Get-AdvancedSetting -Name "ScratchConfig.ConfiguredScratchLocation" | Set-AdvancedSetting -Value "/vmfs/volumes/$ds/$scratchfolder" -confirm:$false + Set-Location $resetloc + Remove-PSDrive $location + } + get-cluster $cluster | get-vmhost | sort | Get-AdvancedSetting -Name "ScratchConfig.ConfiguredScratchLocation" | select Entity, Value | fl + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function SetSnmp +{ +<# +.SYNOPSIS + Configure SNMP +.DESCRIPTION + This will configure SNMP using powercli on esxi hosts. It uses esxcli commands into powercli. +.NOTES + File Name : SetSnmp.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$snmp = Read-Host "Type the snmp target" +$string = Read-Host "Type the snmp communities string" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + foreach ($vmhost in (get-cluster $cluster | get-vmhost | sort)) { + $esxcli = get-vmhost $vmhost | get-esxcli + $esxcli.system.snmp.set($null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,"true",$null,$null,$null,$null) + $esxcli.system.snmp.set($null,$string,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null) + $esxcli.system.snmp.set($null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,"$snmp/$string","$snmp/$string",$null) + $esxcli.system.snmp.set($null,$null,"true",$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null,$null) + $esxcli.system.snmp.get() + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function SetSyslog +{ +<# +.SYNOPSIS + Configure Syslog +.DESCRIPTION + This will configure Syslog using powercli. This only set the syslog servers and enable syslog on the esxi hosts. + You may however include additional advanced syslog configuarations like Syslog.global.defaultSize and others. + This will also create a firewall exception for the syslog. +.NOTES + File Name : SetSyslog.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$syslog = Read-Host "Syslog Target?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +foreach ($vmhost in (get-cluster $cluster | get-vmhost | sort)) { +get-vmhost $vmhost | Get-AdvancedSetting -Name Syslog.global.logHost | Set-AdvancedSetting -Value $Syslog -Confirm:$false +get-vmhost $vmhost | Get-VMHostFirewallException -Name "syslog" | Set-VMHostFirewallException -enabled:$true -Confirm:$false + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function PowerMgmt +{ +<# +.SYNOPSIS + Perform power actions on esxi +.DESCRIPTION + When we poweroff, shutdown, reboot a host we need to provide a reason to do so. This is especially + boring and time consuming if you have a lot of hosts on which you have to do this. This is to ease + that pain. It has 4 options to choose from + A. Enter Maintenance Mode + B. Exit Maintenance Mode + C. Shutdown + D. Reboot + It will ask the reason to perform that action and it will input that reason before it performs the + chosen action. +.NOTES + File Name : PowerMgmt.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host " +1.Enter Maintenance Mode +2.Exit Maintenance Mode +3.Shutdown (the hosts which are in maintenance mode) +4.Reboot (the hosts which are in maintenance mode) +" -ForegroundColor Blue -BackgroundColor White +$axn = Read-Host "Type a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$vmhosts = Get-cluster $cluster | get-vmhost +if ($axn -eq 1) {$vmhosts | set-vmhost -State Maintenance} +if ($axn -eq 2) {$vmhosts | set-vmhost -State Connected} +$vmhosts = get-cluster $cluster | get-vmhost -State Maintenance +if ($axn -eq 3) + {Write-Host "enter a reason for this action" -ForegroundColor Yellow + $reason = Read-Host "" + foreach ($vmhost in $vmhosts) { + $esxcli = get-esxcli + $esxcli.system.shutdown.poweroff($null,$reason) + } + } +if ($axn -eq 4) + {Write-Host "enter a reason for this action" -ForegroundColor Yellow + $reason = Read-Host "" + foreach ($vmhost in $vmhosts) { + $esxcli = get-esxcli + $esxcli.system.shutdown.poweroff($null,$reason) + } + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setpcscd +{ +<# +.SYNOPSIS + Configure pcscd [PC/SC Smart Card Daemon] +.DESCRIPTION + Depending upon the choice that you make + This will enable pcscd. + This will disable pcscd. + This will set pcscd policy to On which will be persistent across reboot. + This will set pcscd policy to Off which will be persistent across reboot. +.NOTES + File Name : Setpcscd.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "pcscd [PC/SC Smart Card Daemon] options + 1. Enable pcscd + 2. Disable pcscd + 3. pcscd Policy On + 4. pcscd Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ pcscd | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ pcscd | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ pcscd | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ pcscd | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setsfcbd +{ +<# +.SYNOPSIS + Configure sfcbd-watchdog [CIM Server] +.DESCRIPTION + Depending upon the choice that you make + This will enable sfcbd. + This will disable sfcbd. + This will set sfcbd policy to On which will be persistent across reboot. + This will set sfcbd policy to Off which will be persistent across reboot. +.NOTES + File Name : Setsfcbd.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "sfcbd-watchdog [CIM Server] options + 1. Enable sfcbd + 2. Disable sfcbd + 3. sfcbd Policy On + 4. sfcbd Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ sfcbd | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ sfcbd | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ sfcbd | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ sfcbd | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function SetTSM +{ +<# +.SYNOPSIS + Configure TSM [ESXi Shell] +.DESCRIPTION + Depending upon the choice that you make + This will enable TSM. + This will disable TSM. + This will set TSM policy to On which will be persistent across reboot. + This will set TSM policy to Off which will be persistent across reboot. +.NOTES + File Name : SetTSM.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "TSM [ESXi Shell] options + 1. Enable TSM + 2. Disable TSM + 3. TSM Policy On + 4. TSM Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ TSM | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ TSM | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ TSM | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ TSM | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setvpxa +{ +<# +.SYNOPSIS + Configure vpxa [VMware vCenter Agent] +.DESCRIPTION + Depending upon the choice that you make + This will enable vpxa. + This will disable vpxa. + This will set vpxa policy to On which will be persistent across reboot. + This will set vpxa policy to Off which will be persistent across reboot. +.NOTES + File Name : Setvpxa.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "vpxa [VMware vCenter Agent] options + 1. Enable vpxa + 2. Disable vpxa + 3. vpxa Policy On + 4. vpxa Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vpxa | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vpxa | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vpxa | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vpxa | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setvprobed +{ +<# +.SYNOPSIS + Configure vprobed [VProbe Daemon] +.DESCRIPTION + Depending upon the choice that you make + This will enable vprobed. + This will disable vprobed. + This will set vprobed policy to On which will be persistent across reboot. + This will set vprobed policy to Off which will be persistent across reboot. +.NOTES + File Name : Setvprobed.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "vprobed [VProbe Daemon] options + 1. Enable vprobed + 2. Disable vprobed + 3. vprobed Policy On + 4. vprobed Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vprobed | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vprobed | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vprobed | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vprobed | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setntpd +{ +<# +.SYNOPSIS + Configure ntpd [NTP Daemon] +.DESCRIPTION + Depending upon the choice that you make + This will enable ntpd. + This will disable ntpd. + This will set ntpd policy to On which will be persistent across reboot. + This will set ntpd policy to Off which will be persistent across reboot. +.NOTES + File Name : Setntpd.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "ntpd [NTP Daemon] options + 1. Enable ntpd + 2. Disable ntpd + 3. ntpd Policy On + 4. ntpd Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ ntpd | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ ntpd | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ ntpd | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ ntpd | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setvmsyslogd +{ +<# +.SYNOPSIS + Configure vmsyslogd [Syslog Server] +.DESCRIPTION + Depending upon the choice that you make + This will enable vmsyslogd. + This will disable vmsyslogd. + This will set vmsyslogd policy to On which will be persistent across reboot. + This will set vmsyslogd policy to Off which will be persistent across reboot. +.NOTES + File Name : Setvmsyslogd.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "vmsyslogd [Syslog Server] options + 1. Enable vmsyslogd + 2. Disable vmsyslogd + 3. vmsyslogd Policy On + 4. vmsyslogd Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vmsyslogd | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vmsyslogd | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vmsyslogd | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ vmsyslogd | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setlwsmd +{ +<# +.SYNOPSIS + Configure lwsmd [Active Directory Service] +.DESCRIPTION + Depending upon the choice that you make + This will enable lwsmd. + This will disable lwsmd. + This will set lwsmd policy to On which will be persistent across reboot. + This will set lwsmd policy to Off which will be persistent across reboot. +.NOTES + File Name : Setlwsmd.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "lwsmd [Active Directory Service] options + 1. Enable lwsmd + 2. Disable lwsmd + 3. lwsmd Policy On + 4. lwsmd Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ lwsmd | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ lwsmd | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ lwsmd | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ lwsmd | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function SetSSH +{ +<# +.SYNOPSIS + Configure TSM-SSH [SSH] +.DESCRIPTION + Depending upon the choice that you make + This will enable TSM-SSH. + This will disable TSM-SSH. + This will set TSM-SSH policy to On which will be persistent across reboot. + This will set TSM-SSH policy to Off which will be persistent across reboot. +.NOTES + File Name : SetSSH.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "TSM-SSH [SSH] options + 1. Enable TSM-SSH + 2. Disable TSM-SSH + 3. TSM-SSH Policy On + 4. TSM-SSH Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ TSM-SSH | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ TSM-SSH | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ TSM-SSH | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ TSM-SSH | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setxorg +{ +<# +.SYNOPSIS + Configure xorg [X.Org Server] +.DESCRIPTION + Depending upon the choice that you make + This will enable xorg. + This will disable xorg. + This will set xorg policy to On which will be persistent across reboot. + This will set xorg policy to Off which will be persistent across reboot. +.NOTES + File Name : Setxorg.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "xorg [X.Org Server] options + 1. Enable xorg + 2. Disable xorg + 3. xorg Policy On + 4. xorg Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ xorg | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ xorg | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ xorg | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ xorg | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setsnmpd +{ +<# +.SYNOPSIS + Configure snmpd [SNMP Server] +.DESCRIPTION + Depending upon the choice that you make + This will enable snmpd. + This will disable snmpd. + This will set snmpd policy to On which will be persistent across reboot. + This will set snmpd policy to Off which will be persistent across reboot. +.NOTES + File Name : Setsnmpd.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "snmpd [SNMP Server] options + 1. Enable snmpd + 2. Disable snmpd + 3. snmpd Policy On + 4. snmpd Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ snmpd | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ snmpd | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ snmpd | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ snmpd | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function SetDCUI +{ +<# +.SYNOPSIS + Configure DCUI [Direct Console UI] +.DESCRIPTION + Depending upon the choice that you make + This will enable DCUI. + This will disable DCUI. + This will set DCUI policy to On which will be persistent across reboot. + This will set DCUI policy to Off which will be persistent across reboot. +.NOTES + File Name : SetDCUI.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "DCUI [Direct Console UI] options + 1. Enable DCUI + 2. Disable DCUI + 3. DCUI Policy On + 4. DCUI Policy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ DCUI | Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ DCUI | stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ DCUI | Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ DCUI | Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function Setlbtd +{ +<# +.SYNOPSIS + Configure lbtd[Load-Based Teaming Daemon] +.DESCRIPTION + Depending upon the choice that you make + This will enable lbtd. + This will disable lbtd. + This will set lbtdpolicy to On which will be persistent across reboot. + This will set lbtdpolicy to Off which will be persistent across reboot. +.NOTES + File Name : SetLbtd.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of script# +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +Write-Host "lbtd[Load-Based Teaming Daemon] options + 1. Enable lbtd + 2. Disable lbtd + 3. lbtdPolicy On + 4. lbtdPolicy Off + " -BackgroundColor White -ForegroundColor Blue #options to choose from + $a = Read-Host "Choose a number from 1 to 4" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + + if ($a -eq 1) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ lbtd| Start-VMHostService -Confirm:$false} + if ($a -eq 2) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ lbtd| stop-VMHostService -Confirm:$false} + if ($a -eq 3) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ lbtd| Set-VMHostService -Policy On -Confirm:$false} + if ($a -eq 4) {get-cluster $cluster | get-vmhost | get-vmhostservice | where Key -EQ lbtd| Set-VMHostService -Policy Off -Confirm:$false} + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function VMotionOff +{ +<# +.SYNOPSIS + Enable vMotion +.DESCRIPTION + Enable vMotion across the Cluster +.NOTES + File Name : VMotionOff.ps1 + Author : gajendra d ambi + Date : Feb 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#start of script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VMHostNetworkAdapter | where PortGroupname -EQ $pg | Set-VMHostNetworkAdapter -VMotionEnabled $false -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function VmotionOn +{ +<# +.SYNOPSIS + Enable vMotion +.DESCRIPTION + Enable vMotion across the Cluster +.NOTES + File Name : VmotionOn.ps1 + Author : gajendra d ambi + Date : Feb 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#start of script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VMHostNetworkAdapter | where PortGroupname -EQ $pg | Set-VMHostNetworkAdapter -VMotionEnabled $true -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function FaultToleranceOn +{ +<# +.SYNOPSIS + Enable vMotion +.DESCRIPTION + Enable vMotion across the Cluster +.NOTES + File Name : FaultToleranceOn.ps1 + Author : gajendra d ambi + Date : Feb 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#start of script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VMHostNetworkAdapter | where PortGroupname -EQ $pg | Set-VMHostNetworkAdapter -FaultToleranceLoggingEnabled $true -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function VsanTrafficOn +{ +<# +.SYNOPSIS + Enable VsanTrafficOn +.DESCRIPTION + Enable vMotion across the Cluster +.NOTES + File Name : VsanTrafficOn.ps1 + Author : gajendra d ambi + Date : Feb 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#start of script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VMHostNetworkAdapter | where PortGroupname -EQ $pg | Set-VMHostNetworkAdapter -VsanTrafficEnabled $true -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function ManagementTrafficOn +{ +<# +.SYNOPSIS + Enable vMotion +.DESCRIPTION + Enable vMotion across the Cluster +.NOTES + File Name : ManagementTrafficOn.ps1 + Author : gajendra d ambi + Date : Feb 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#start of script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VMHostNetworkAdapter | where PortGroupname -EQ $pg | Set-VMHostNetworkAdapter -ManagementTrafficEnabled $false -Confirm:$false +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function ManagementTrafficOff +{ +<# +.SYNOPSIS + Enable vMotion +.DESCRIPTION + Enable vMotion across the Cluster +.NOTES + File Name : ManagementTrafficOff.ps1 + Author : gajendra d ambi + Date : Feb 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#start of script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VMHostNetworkAdapter | where PortGroupname -EQ $pg | Set-VMHostNetworkAdapter -ManagementTrafficEnabled $false -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function ManagementTrafficOff +{ +<# +.SYNOPSIS + Enable vMotion +.DESCRIPTION + Enable vMotion across the Cluster +.NOTES + File Name : ManagementTrafficOff.ps1 + Author : gajendra d ambi + Date : Feb 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#start of script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VMHostNetworkAdapter | where PortGroupname -EQ $pg | Set-VMHostNetworkAdapter -ManagementTrafficEnabled $false -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +function VsanTrafficOff +{ +<# +.SYNOPSIS + Enable VsanTrafficOff +.DESCRIPTION + Enable vMotion across the Cluster +.NOTES + File Name : VsanTrafficOff.ps1 + Author : gajendra d ambi + Date : Feb 2016 + recommended : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#start of script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VMHostNetworkAdapter | where PortGroupname -EQ $pg | Set-VMHostNetworkAdapter -VsanTrafficEnabled $false -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +Function HostVds +{ +<# +.SYNOPSIS + Add Esxi host to distributed switch. +.DESCRIPTION + This will create a csv file whcih is opened in excel. Once you popuate the details, you have to save & close it. + Hit return/enter to proceed and the script will + add the esxi hosts to a chosen dvswitch. +.NOTES + File Name : HostVds.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +Write-Host " +A CSV file will be opened (open in excel/spreadsheet) +populate the values, +save & close the file, +Hit Enter to proceed +" -ForegroundColor Blue -BackgroundColor White +$csv = "$PSScriptRoot/HostVds.csv" +get-process | Select-Object dvSwitch,hostname,vmnic | Export-Csv -Path $csv -Encoding ASCII -NoTypeInformation +Start-Process $csv +Read-Host "Hit Enter/Return to proceed" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$csv = Import-Csv $csv + foreach ($line in $csv) + { + $dvs = $($line.dvSwitch) + $vmhost = $($line.hostname) + $vmnic = $($line.vmnic) + Get-VDSwitch -Name $dvs | Add-VDSwitchVMHost -VMHost $vmhost + $vmhostNetworkAdapter = Get-VMHost $vmhost | Get-VMHostNetworkAdapter -Physical -Name $vmnic + Get-VDSwitch $dvs | Add-VDSwitchPhysicalNetworkAdapter -VMHostNetworkAdapter $vmhostNetworkAdapter + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function AddDpg +{ +<# +.SYNOPSIS + Add dvportgroups to a dvswitch. +.DESCRIPTION + This will create a csv file whcih is opened in excel. Once you popuate the details, you have to save & close it. + Hit return/enter to proceed and the script will + add the dvportgroups to a chosen dvswitch. +.NOTES + File Name : AddDpg.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> + +#Start of Script +Write-Host " +A CSV file will be opened (open in excel/spreadsheet) +populate the values, +save & close the file, +Hit Enter to proceed +" -ForegroundColor Blue -BackgroundColor White + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$csv = "$PSScriptRoot/AddDpg.csv" +get-process | Select-Object dvSwitch,dvPortgroup,VlanId,NumberOfPorts | Export-Csv -Path $csv -Encoding ASCII -NoTypeInformation +Start-Process $csv +Read-Host "Hit Enter/Return to proceed" + +$csv = Import-Csv $csv + foreach ($line in $csv) + { + $dvs = $($line.dvSwitch) + $dpg = $($line.dvPortgroup) + $vlan = $($line.VlanId) + $ports = $($line.NumberOfPorts) + Get-VDSwitch -Name $dvs | New-VDPortgroup -Name $dpg -VlanId $vlan -NumPorts $ports + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function CreateVds +{ +<# +.SYNOPSIS + Create VDS. +.DESCRIPTION + This will create a vds on a chosen datacenter.. +.NOTES + File Name : CreateVds.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$dc = Read-Host "name of the datacenter?" +$ul = Read-Host "number of uplinks?" +$dvs = Read-Host "name of the dvSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +New-VDSwitch -Name $dvs -Location $dc -NumUplinkPorts $ul -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black +#End of Script# +}#End of function + +#start of function +Function Setef +{ +<# +.SYNOPSIS + Set ExplicitFailover on VDS. +.DESCRIPTION + This will set the loadbalancing on the vds as ExplicitFailover. +.NOTES + File Name : Setef.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$dvs = Read-Host "name of the dvSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-VDSwitch -Name $dvs | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -LoadBalancingPolicy ExplicitFailover -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function Setlbsm +{ +<# +.SYNOPSIS + Set LoadBalanceSrcMac on VDS. +.DESCRIPTION + This will set the loadbalancing on the vds as LoadBalanceSrcMac. +.NOTES + File Name : Setlbsm.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$dvs = Read-Host "name of the dvSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-VDSwitch -Name $dvs | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -LoadBalancingPolicy LoadBalanceSrcMac -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function SetLbip +{ +<# +.SYNOPSIS + Set LoadBalanceIP on VDS. +.DESCRIPTION + This will set the loadbalancing on the vds as LoadBalanceIP. +.NOTES + File Name : SetLbip.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$dvs = Read-Host "name of the dvSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-VDSwitch -Name $dvs | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -LoadBalancingPolicy LoadBalanceIP -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function Setlbsi +{ +<# +.SYNOPSIS + Set LoadBalanceSrcId on VDS. +.DESCRIPTION + This will set the loadbalancing on the vds as LoadBalanceSrcId. +.NOTES + File Name : Setlbsi.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$dvs = Read-Host "name of the dvSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-VDSwitch -Name $dvs | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -LoadBalancingPolicy LoadBalanceSrcId -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function Setllb +{ +<# +.SYNOPSIS + Set LoadBalanceLoadBased on VDS. +.DESCRIPTION + This will set the loadbalancing on the vds as LoadBalanceLoadBased. +.NOTES + File Name : Setllb.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$dvs = Read-Host "name of the dvSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-VDSwitch -Name $dvs | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -LoadBalancingPolicy LoadBalanceLoadBased -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +function ShootVmkPg +{ +<# +.SYNOPSIS + Remove vmkernel portgroup +.DESCRIPTION + This will remove the virtual machine portgroup of all the hosts of a cluster/clusters. +.NOTES + File Name : ShootVmkPg.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "Name of the portgroup?" + foreach ($vmhost in (get-cluster $cluster | get-vmhost | sort)) + { + $vmk = Get-VMHostNetworkAdapter -VMHost $vmhost | where PortgroupName -eq $pg + Write-Host "removing vmkernel from the $pg on $vmhost" + Remove-VMHostNetworkAdapter -Nic $vmk -confirm:$false + + Write-Host "removing $pg on $vmhost" + get-vmhost $vmhost | get-virtualportgroup -Name $pg | Remove-VirtualPortGroup -Confirm:$false + }#End of Script +}#End of function + +#start of function +Function ShootVmPg +{ +<# +.SYNOPSIS + Remove virtual machine portgroup +.DESCRIPTION + This will remove the virtual machine portgroup of all the hosts of a cluster/clusters. +.NOTES + File Name : ShootVmPg.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "Name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualPortGroup -Name $pg | Remove-VirtualPortGroup -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function Pglbip +{ +<# +.SYNOPSIS + update virtual machine portgroup's loadbalancing to LoadBalanceIP on vSwitch. +.DESCRIPTION + This will update virtual machine portgroup's loadbalancing to LoadBalanceIP on a chosen standard portgroup of hosts of a chosen cluster. +.NOTES + File Name : Pglbip.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "Name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualPortGroup -Name $pg | Get-NicTeamingPolicy | Set-NicTeamingPolicy -LoadBalancingPolicy LoadBalanceIP -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function CreateVss +{ +<# +.SYNOPSIS + Create standard vSwitch. +.DESCRIPTION + This will create a standard vSwitch of hosts of a chosen cluster. +.NOTES + File Name : CreateVss.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "name of the vSphere standard Switch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | New-VirtualSwitch -Name $vss -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function Pglbsi +{ +<# +.SYNOPSIS + update virtual machine portgroup's loadbalancing to LoadBalanceSrcId on vSwitch. +.DESCRIPTION + This will update virtual machine portgroup's loadbalancing to LoadBalanceSrcId on a chosen standard portgroup of hosts of a chosen cluster. +.NOTES + File Name : Pglbsi.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "Name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualPortGroup -Name $pg | Get-NicTeamingPolicy | Set-NicTeamingPolicy -LoadBalancingPolicy LoadBalanceSrcId -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function Pglbsm +{ +<# +.SYNOPSIS + update virtual machine portgroup's loadbalancing to LoadBalanceSrcMac on vSwitch. +.DESCRIPTION + This will update virtual machine portgroup's loadbalancing to LoadBalanceSrcMac on a chosen standard portgroup of hosts of a chosen cluster. +.NOTES + File Name : Pglbsm.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "Name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualPortGroup -Name $pg | Get-NicTeamingPolicy | Set-NicTeamingPolicy -LoadBalancingPolicy LoadBalanceSrcMac -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function PgVlan +{ +<# +.SYNOPSIS + update virtual machine portgroup's Vlan on vSwitch. +.DESCRIPTION + This will update virtual machine portgroup's Vlan on a chosen portgroup of hosts of a chosen cluster. +.NOTES + File Name : PgVlan.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "Name of the portgroup?" +$vlan = Read-Host "New Vlan?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualPortGroup -Name $pg | Set-VirtualPortGroup -VLanId $vlan -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function Pgef +{ +<# +.SYNOPSIS + update virtual machine portgroup's loadbalancing to ExplicitFailover on vSwitch. +.DESCRIPTION + This will update virtual machine portgroup's loadbalancing to ExplicitFailover on a chosen standard portgroup of hosts of a chosen cluster. +.NOTES + File Name : Pgef.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$pg = Read-Host "Name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualPortGroup -Name $pg | Get-NicTeamingPolicy | Set-NicTeamingPolicy -LoadBalancingPolicy ExplicitFailover -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function PgRename +{ +<# +.SYNOPSIS + update virtual machine portgroup's name on vSwitch. +.DESCRIPTION + This will update virtual machine portgroup's name on a chosen standard vSwitch of hosts of a chosen cluster. +.NOTES + File Name : PgRename.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$oldpg = Read-Host "Old Name of the portgroup?" +$newpg = Read-Host "New Name of the portgroup?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualPortGroup -Name $oldpg | Set-VirtualPortGroup -Name $newpg -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssPmOn +{ +<# +.SYNOPSIS + Allow promiscous mode +.DESCRIPTION + This will allow promiscous mode on a vswitch. +.NOTES + File Name : VssPmOn.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "Name of the vSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualSwitch -Name $vss | Get-SecurityPolicy | Set-SecurityPolicy -AllowPromiscuous $true -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssPmOff +{ +<# +.SYNOPSIS + Allow promiscous mode +.DESCRIPTION + This will allow promiscous mode on a vswitch. +.NOTES + File Name : VssPmOff.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "Name of the vSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualSwitch -Name $vss | Get-SecurityPolicy | Set-SecurityPolicy -AllowPromiscuous $false -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssVmkPg +{ +<# +.SYNOPSIS + update vmkernel portgroup on vSwitch. +.DESCRIPTION + This will update vmkernel portgroup on a chosen standard vSwitch of hosts of a chosen cluster. +.NOTES + File Name : VssVmkPg.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "name of the vSphere standard Switch?" +$pg = Read-Host "Name of the portgroup?" +$vmk = Read-Host "vmk number? ex:- vmk9" +$ip = Read-Host "starting ip address?" +$mask = Read-Host "subnet mask" +$vlan = Read-Host "Vlan?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +$a = $ip.Split('.')[0..2] + + #first 3 octets of the ip address + $b = [string]::Join(".",$a) + + #last octet of the ip address + $c = $ip.Split('.')[3] + $c = [int]$c + + foreach ($vmhost in (get-cluster $cluster | get-vmhost | sort)) { + get-vmhost $vmhost | get-virtualswitch -Name $vss | New-VirtualPortGroup -Name $pg -VLanId $vlan -Confirm:$false + $esxcli = get-vmhost $vmhost | Get-EsxCli + $esxcli.network.ip.interface.add($null, $null, "$vmk", $null, "1500", $null, "$pg") + $esxcli.network.ip.interface.ipv4.set("$vmk", "$b.$(($c++))", "$mask", $null, "static") + } + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssPorts +{ +<# +.SYNOPSIS + update portgroups on vSwitch. +.DESCRIPTION + This will update portgroups on a chosen standard vSwitch of hosts of a chosen cluster. +.NOTES + File Name : VssPorts.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "name of the vSphere standard Switch?" +$ports = Read-Host "number of ports?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | Get-VMHost | Get-VirtualSwitch -Name $vss | Set-VirtualSwitch -NumPorts $ports -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssFtOff +{ +<# +.SYNOPSIS + Allow promiscous mode +.DESCRIPTION + This will allow promiscous mode on a vswitch. +.NOTES + File Name : VssFtOff.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "Name of the vSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualSwitch -Name $vss | Get-SecurityPolicy | Set-SecurityPolicy -ForgedTransmits $false -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssVmPg +{ +<# +.SYNOPSIS + update virtual machine portgroup on vSwitch. +.DESCRIPTION + This will update virtual machie portgroup on a chosen standard vSwitch of hosts of a chosen cluster. +.NOTES + File Name : VssVmPg.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "name of the vSphere standard Switch?" +$pg = Read-Host "Name of the portgroup?" +$vlan = read-host "VLAN?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualSwitch -Name $vss | New-VirtualPortGroup -Name $pg -VLanId $vlan -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssMcOff +{ +<# +.SYNOPSIS + Allow promiscous mode +.DESCRIPTION + This will allow promiscous mode on a vswitch. +.NOTES + File Name : VssMcOff.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "Name of the vSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualSwitch -Name $vss | Get-SecurityPolicy | Set-SecurityPolicy -MacChanges $false -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssMcOn +{ +<# +.SYNOPSIS + Allow promiscous mode +.DESCRIPTION + This will allow promiscous mode on a vswitch. +.NOTES + File Name : VssMcOn.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "Name of the vSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualSwitch -Name $vss | Get-SecurityPolicy | Set-SecurityPolicy -MacChanges $true -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssFtOn +{ +<# +.SYNOPSIS + Allow promiscous mode +.DESCRIPTION + This will allow promiscous mode on a vswitch. +.NOTES + File Name : VssFtOn.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "Name of the vSwitch?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-cluster $cluster | Get-VMHost | Get-VirtualSwitch -Name $vss | Get-SecurityPolicy | Set-SecurityPolicy -ForgedTransmits $true -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#start of function +Function VssMtu +{ +<# +.SYNOPSIS + update Mtu on vSwitch. +.DESCRIPTION + This will update Mtu on a chosen standard vSwitch of hosts of a chosen cluster. +.NOTES + File Name : VssMtu.ps1 + Author : gajendra d ambi + Date : March 2016 + Prerequisite : PowerShell v4+, powercli 6+ over win7 and upper. + Copyright - None +.LINK + Script posted over: github.com/gajuambi/vmware +#> +#Start of Script +$cluster = Read-Host "name of the cluster[type * to include all clusters]?" +$vss = Read-Host "name of the vSphere standard Switch?" +$mtu = Read-Host "mtu?" + +$stopWatch = [system.diagnostics.stopwatch]::startNew() +$stopWatch.Start() + +Get-Cluster $cluster | get-vmhost | Get-Virtualswitch -Name $vss | Set-VirtualSwitch -Mtu $mtu -Confirm:$false + +$stopWatch.Stop() +Write-Host "Elapsed Runtime:" $stopWatch.Elapsed.Hours "Hours" $stopWatch.Elapsed.Minutes "minutes and" $stopWatch.Elapsed.Seconds "seconds." -BackgroundColor White -ForegroundColor Black + #End of Script# +}#End of function + +#------------------------------End of Collection of Functions of automation------------------------# + +#------------------------------Start of Collection of Menu Functions-------------------------------# + +#Start of NicMenu +function NicMenu +{ + do { + do { + Write-Host "`NicMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. vSwitch + B. portgroup + " #options to choose from + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abxyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { NicStatusVss } + "B" { NicStatusPg } + + "X" { vCenterMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} #end of NicMenu + +#Start of StandHostsMenu +function StandHostsMenu +{ + do { + do { + Write-Host "`StandHostsMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. Connect to standalone hosts + B. Create virtual Standard Switch + C. Create virtual Machine Portgroup + D. Create VMkernel Portgroup + E. Rename Portgroups + F. Add Nics to vSwitch + G. Remove VM portgroup + H. Remove VMkernel portgroup" #options to choose from + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdefghxyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { shGetShHosts } + "B" { shNewVss } + "C" { shNewVMPg } + "D" { shNewVMkernelPg } + "E" { shRenamePg } + "F" { shAddNic } + "G" { shShootVmPg } + "H" { shShootVmkPg } + + "X" { vCenterMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} +#end of StandHostsMenu + +#Start of vdsLoadBalancingMenu +function vdsLoadBalancingMenu +{ + do { + do { + Write-Host "Make sure you are connected to a vCenter" -ForegroundColor Yellow + Write-Host "`nvdsLoadBalancingMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. LoadBalanceIP + B. LoadBalanceLoadBased + C. LoadBalanceSrcMac + D. LoadBalanceSrcId + E. ExplicitFailover" #options to choose from + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdexyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { SetLbip } + "B" { Setllb } + "C" { Setlbsm } + "D" { Setlbsi } + "E" { Setef } + "X" { vdsMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} +#end of vdsLoadBalancingMenu + +#Start of VMKservicesMenu +function VMKservicesMenu +{ + do { + do { + Write-Host "Make sure you are connected to a vCenter" -ForegroundColor Yellow + Write-Host "`nVMKservicesMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. Enable VMotion + B. Enable VsanTraffic + C. Enable FaultTolerance + D. Enable ManagementTraffic + E. Disable VMotion + F. Disable VsanTraffic + G. Disable FaultTolerance + H. Disable ManagementTraffic" #options to choose from + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdefghxyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { VmotionOn } + "B" { VsanTrafficOn } + "C" { FaultToleranceOn } + "D" { ManagementTrafficOn } + "E" { VMotionOff } + "F" { VsanTrafficOff } + "G" { FaultToleranceOff } + "H" { ManagementTrafficOff } + "X" { HostMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} +#end of VMKservicesMenu + +#Start of vdsMenu +function vdsMenu +{ + do { + do { + Write-Host "Make sure you are connected to a vCenter" -ForegroundColor Yellow + Write-Host "`nvdsMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. Create VDS + B. Create dvPortgroup + C. Add hosts to VDS + D. Load balancing + E. (L3)TCP/IP stack" #options to choose from + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdexyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { CreateVds } + "B" { AddDpg } + "C" { HostVds } + "D" { vdsLoadBalancingMenu } + "E" { Write-Host This feature is not available yet } + "X" { vCenterMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} +#end of vdsMenu + +#Start of VssMenu +Function VssMenu +{ + do { + do { + Write-Host -BackgroundColor White -ForegroundColor Black "`nVssMenu" + Write-Host " + A. Create vSwitch + B. Update NumPorts + C. Update Nic + D Update MTU + E. Create VM Portgroup + F. Create VMkernel Portgroup + G. Rename Portgroup + H. Update Portgroup's Vlan + I. LoadBalanceIP + J. LoadBalanceSrcMac + K. LoadBalanceSrcId + L. ExplicitFailover + M. Delete VM Portgroup + N. Enable AllowPromiscuous + O. Enable ForgedTransmits + P. Enable MacChanges + Q. Disable AllowPromiscuous + R. Disable ForgedTransmits + S. Disable MacChanges + T. Delete VMkernel Portgroup + U. Sync portgroup with vSwitch(inherit all properties of vswitch to portgroup) + V. L3 vMotion Portgroup + " #options to choose from... + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit + " -BackgroundColor White -ForegroundColor Black + + $user = [Environment]::UserName + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdefghijklmnopqrstuvxyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { CreateVss } + "B" { VssPorts } + "C" { NicMenu } + "D" { VssMtu } + "E" { VssVmPg } + "F" { VssVmkPg } + "G" { PgRename } + "H" { PgVlan } + "I" { Pglbip } + "J" { Pglbsm } + "K" { Pglbsi } + "L" { Pgef } + "M" { ShootVmPg } + "N" { VssPmOn } + "O" { VssFtOn } + "P" { VssMcOn } + "Q" { VssPmOff } + "R" { VssFtOff } + "S" { VssMcOff } + "T" { ShootVmkPg } + "U" { PgSync } + "V" { l3vmotion } + "X" { vCenterMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} #End of VssMenu + +#Start of MainMenu +function MainMenu +{ + do { + do { + $version = '2016Aug' + Write-Host -BackgroundColor Black -ForegroundColor Cyan "`nvTool $version" + Write-Host -BackgroundColor White -ForegroundColor Black "`nMain Menu" + Write-Host " + A. vCenter + B. Standalone Hosts" #options to choose from... + + write-host " + Z - Exit" -ForegroundColor Yellow #exits the script + + $user = [Environment]::UserName + $choice = Read-Host "Hi $user, choose one of the above" #Get user's entry + $ok = $choice -match '^[abz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { vCenterMenu } + "B" { StandHostsMenu } + } + } until ( $choice -match "Z" ) + #if ($choice -eq "z") { exit } +} +#end of MainMenu + +#Start of DrsRulesMenu +function DrsRulesMenu +{ + do { + do { + Write-Host "Make sure you are connected to a vCenter" -ForegroundColor Yellow + Write-Host "`nDrsRulesMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. VMAffinity + B. VMAntiAffinity + C. DrsVmGroup + D. DrsHostGroup + E. DRSVMToHostRule + " #options to choose from + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdexyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { VMAffinity } + "B" { VMAntiAffinity } + "C" { DrsVmGroup } + "D" { DrsHostGroup } + "E" { DRSVMToHostRule } + "X" { ClusterMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} +#end of DrsRulesMenu + +#Start of ClusterMenu +function ClusterMenu +{ + do { + do { + Write-Host "Make sure you are connected to a vCenter" -ForegroundColor Yellow + Write-Host "`nClusterMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. Create Cluster + B. Add Hosts + C. Configure HA + D. Configure DRS + E. DRS rules + F. Create vApp + G. Add Datastores" #options to choose from + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdefgxyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { CreateCluster } + "B" { AddHosts } + "C" { ConfigHA } + "D" { ConfigDrs } + "E" { DrsRulesMenu } + "F" { CreateVapp } + "G" { AddDatastores } + "X" { vCenterMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} +#end of ClusterMenu + +#Start of HostServicesMenu +function HostServicesMenu +{ + do { + do { + Write-Host "Make sure you are connected to a vCenter" -ForegroundColor Yellow + Write-Host "`nHostServicesMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. DCUI [Direct Console UI] + B. TSM [ESXi Shell] + C. TSM-SSH [SSH] + D. lbtd [Load-Based Teaming Daemon] + E. lwsmd [Active Directory Service] + F. ntpd [NTP Daemon] + G. pcscd [PC/SC Smart Card Daemon] + H. sfcbd-watchdog [CIM Server] + I. snmpd [SNMP Server] + J. vmsyslogd [Syslog Server] + K. vprobed [VProbe Daemon] + L. vpxa [VMware vCenter Agent] + M. xorg [X.Org Server] + " #options to choose from + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdefghijklmxyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { SetDCUI } + "B" { SetTSM } + "C" { SetSSH } + "D" { SetLbtd } + "E" { Setlwsmd } + "F" { Setntpd } + "G" { Setpcscd } + "H" { Setsfcbd } + "I" { Setsnmpd } + "J" { Setvmsyslogd } + "K" { Setvprobed } + "L" { Setvpxa } + "M" { Setxorg } + "X" { HostMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} +#end of HostServicesMenu + +#Start of HostMenu +function HostMenu +{ + do { + do { + Write-Host "Make sure you are connected to a vCenter" -ForegroundColor Yellow + Write-Host "`nHostMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. SNMP + B. Syslog settings + C. DNS settings + D. NTP settings + E. Any Advanced setting + F. Firewall Settings + G. Scratch partition + H. Performance settings + I. Core dump settings + J. Power Management (shutdown, reboot, maintenance) + k. Enable/disable services + L. IPv6 + M. VMKernel Services + N. WinSSH (Run SSH commands on esxi from directly from windows) + + W. Others" #[Others menu is to include miscellaneous settings as per business needs] #options to choose from + + Write-Host " + X. Previous Menu + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdefghijklmnwxyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { SetSnmp } + "B" { SetSyslog } + "C" { SetDNS } + "D" { SetNTP } + "E" { EsxiAdvanced } + "F" { SetFirewall } + "G" { SetScratch } + "H" { HostPerf } + "I" { CoreDump } + "J" { PowerMgmt } + "K" { HostServicesMenu } + "L" { SetIpv6 } + "M" { VMKservicesMenu } + "N" { WinSSH } + "W" { Write-Host you chose others. This is not implemented yet } + "X" { vCenterMenu } + "Y" { MainMenu } + } + } until ( $choice -match "Z" ) +} +#end of HostMenu + +#Start of vCenterMenu +function vCenterMenu +{ + do { + do { + Write-Host "Make sure you are connected to a vCenter" -ForegroundColor Yellow + Write-Host "`nvCenterMenu" -BackgroundColor White -ForegroundColor Black + Write-Host " + A. Cluster + B. Host + C. vSwitch + D. dvSwitch" #options to choose from + + Write-Host " + Y. Main Menu + Z. Exit" -BackgroundColor Black -ForegroundColor Green #return to main menu + + $choice = Read-Host "choose one of the above" #Get user's entry + $ok = $choice -match '^[abcdyz]+$' + if ( -not $ok) { write-host "Invalid selection" -BackgroundColor Red } + } until ( $ok ) + switch -Regex ($choice) + { + "A" { ClusterMenu } + "B" { HostMenu } + "C" { VssMenu } + "D" { vdsMenu } + "Y" { HostMenu } + } + } until ( $choice -match "Z" ) +} +#end of vCenterMenu + +#------------------------------End of Collection of Menu Functions-------------------------------# + +PcliPshell +MainMenu +##End of Script##