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##