new1234.jpg

Archive

Posts Tagged ‘PowerCLI’

VMware: Install vSphere 5 update 1 with PowerCLI

March 22nd, 2012 1 comment

Today I’ve updated my vSphere 5 hosts witch patch 1 released one week ago. Before I started the build number was VMware ESXi 5.0.0 469512:

image

To update the host I used PowerCLI, the code:

Get-VMHost esx02.vmpros.lan | Set-VMHost -State Maintenance
$DataStore = Get-VMHost esx02.vmpros.lan | Get-Datastore ESX02_VMFS01
Copy-DatastoreItem C:\vmpros\patch1\ $DataStore.DatastoreBrowserPath -Recurse
Get-VMHost esx02.vmpros.lan | Install-VMHostPatch -Hostpath "/vmfs/volumes/ESX02_VMFS01/patch1/metadata.zip"

The script will upload the content of the update-from-esxi5.0-5.0_update01.zip located at your local computer (which running  PowerCLI) to the selected datastore. Then the update installation will start.

Update installation process:

image

WARNING: The update completed successfully, but the system needs to be rebooted for the changes to be effective.

Read more…

sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn

VMware: Upload local files to datastore with PowerCLI

March 22nd, 2012 1 comment

I’m upgrading some hosts in my lab with vSphere 5 patch 1, I need to upload the zip packages from my laptop to my datastore.. it would be nice to do this via PowerCLI

The code:

$DataStore = Get-VMHost esx02.vmpros.lan | Get-Datastore ESX02_VMFS01
Copy-DatastoreItem C:\vmpros\patch1\ $DataStore.DatastoreBrowserPath -Recurse

image

Result:

image

sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn

Categories: VMware Tags: , , ,

VMware: Migrate vSphere hosts to new ip subnet, new DNS servers, new gateway and rejoin vCenter server with PowerCLI

January 30th, 2012 12 comments

Last month I’ve wrote a script for a company that is merging with a new company in a different datacenter, that means new ip-addresses, new subnet, new gateway, new DNS servers and rejoin vCenter server.. my part was to migrate all (60) VMware vSphere hosts to the new subnet and rejoin the vSphere vCenter cluster… without downtime!

Function:

#Connect to vCenter server
— Specify host
— Enter Host Standby mode
— Move all VM’s to other hosts in cluster
— Re-balance with DRS
— Disconnect host
— Remove host from cluster

#Connect to ESXi Server
— Add new VMKernel Management Network with new range in vSwitch0
— Enable Management option for new VMkernel
— Configure NIC Teaming policy
— Configure new DNS servers
— Configure new VMkernel gateway
— Reboot host

#MANUAL ACTION: Update DNS records at configured DNS servers

#Connect to vCenter server
— Add new record in vCenter server host file with new host ipaddress Management VMkernel
— Add host with new VMkernel Management Network
— Delete old VMkernel from vSwitch0
— Exit Host Standby mode
— Rebalance cluster with DRS

#Script finished
— Next host…>


The script
:

#====================================================================#
#   SCRIPT:       VMware_vSphere_IP_Redesign_v.1.0.ps1               #
#   AUTHOR:       S.Daems - VMpros.nl                                #
#   CREATED:      22/01/2012                                         #
#   MODIFIED:     30/01/2012                                         #
#   VERSION:      v.1.0                                              #
#                                                                    #
#====================================================================#
#   CHANGELOG:                                                       #
#                                                                    #
#    v.1.0                                                           #
#     - Script created                                               #
#                                                                    #
#====================================================================#
#   FUNCTION:                                                        #
#                                                                    #
#   #Connect to vCenter server                                       #
#     Specify host                                                   #
#     Enter Host Standby mode                                        #
#     Move all VM's to other hosts in cluster                        #
#     Re-balance with DRS                                            #
#     Disconnect host                                                #
#     Remove host from cluster                                       #
#                                                                    #
#   #Connect to ESXi Server                                          #
#     Add new VMKernel Management Network with new range in vSwitch0 #
#     Enable Management option for new VMkernel                      #
#     Configure NIC Teaming policy                                   #
#     Configure new DNS servers                                      #
#     Configure new VMkernel gateway                                 #
#     Reboot host                                                    #
#                                                                    #
#   #MANUAL ACTION: Update DNS records at configured DNS servers     #
#                                                                    #
#   #Connect to vCenter server                                       #
#     Add new record in vCenter server host file with new host ip-   #
#     address Management VMkernel                                    #
#     Add host with new VMkernel Management Network                  #
#     Delete old VMkernel from vSwitch0                              #
#     Exit Host Standby mode                                         #
#     Rebalance cluster with DRS                                     #
#                                                                    #
#   #Script finished                                                 #
#     Next host...>                                                  #
#                                                                    #
#====================================================================#
#   NOTE:                                                            #
#                                                                    #
#     - Run this script first in a test environment                  #
#     - Make sure youre ESXi host - vSwitch0 have multiple pNIC's    #
#       and can access both networks/gateway's                       #
#     - Don't forgot to update vCenter Cluster das.isolationaddress2 #
#       if vCenter is configured in a new subnet                     #
#     - Don't forgot to update DNS (A) records at your DNS servers   #
#       with with new ESXi host Management ip-addresses              #
#     - Check if the correct pNIC's are configured for NIC Teaming   #
#     - Check if the correct VMkernel is selected for gateway config #
#     - This script is written with VMware vSphere PowerCLI 5.0.0    #
#                                                                    #
#====================================================================#
#   CUSTOM DEFINITIONS                                               #
#====================================================================#
$vCenterServer = "vCENTER SERVER NAME BY DNS"
$vCenterUsername = "vCENTER DOMAIN\USERNAME"
$vCenterPassword = "vCENTER PASSWORD"
$vCenterDatacenter = "vCENTER DATACENTER NAME"
$vCenterCluster = "vCENTER CLUSTERNAME"
$ESXiHost = "ESXi HOSTS BY DNS"
$RootUser = "ROOT USER ACCOUNT TO CONFIGURE/CONNECT HOST"
$RootPassword = "ROOT PASSWORD TO CONFIGURE/CONNECT HOST"
$Old_MGMT_Network = "ORIGINAL MANAGEMENT VMKERNEL NAME"
$New_MGMT_Network = "NEW MANAGEMENT VMKERNEL IPADDRESS"
$New_MGMT_Subnet = "NEW MANAGEMENT VMKERNEL SUBNET"
$New_VMK_Gateway = "NEW MANAGEMENT VMKERNEL GATEWAY"
$New_DNS01 = "NEW PRIMARY DNS SERVER TO CONFIGURE"
$New_DNS02 = "NEW SECUNDARY DNS SERVER TO CONFIGURE"
New-VICredentialStoreItem -Host "$vCenterServer" -User "$vCenterUsername" -Password "$vCenterPassword" | out-null
New-VICredentialStoreItem -Host "$ESXiHost" -User "$RootUser" -Password "$RootPassword" | out-null
Write-Host "Script will start..." -foregroundcolor yellow

#====================================================================#
#   FASE 1  - vCENTER: MAINTENANCE AND REMOVE HOST FROM vCENTER      #
#====================================================================#
Write-Host "Connect to vCenter Server" -foregroundcolor green
#====================================================================#
Connect-VIServer "$vCenterServer" | out-null
Sleep 10
#====================================================================#
Write-Host "Enter host in Maintenance mode" -foregroundcolor green
#====================================================================#
Set-VMHost "$ESXiHost" -State "Maintenance" -RunAsync | out-null
#====================================================================#
Write-Host "Disconnect host from vCenter Server" -foregroundcolor green
#====================================================================#
Set-VMHost "$ESXiHost" -State "Disconnected" -RunAsync | out-null
#====================================================================#
Write-Host "Tell DRS to re-balance VMs including the rejoined host" -foregroundcolor green
#====================================================================#
Get-DrsRecommendation -Cluster "$vCenterCluster" | where {$_.Reason -eq "Host is entering maintenance mode"} | Apply-DrsRecommendation | out-null
#====================================================================#
Write-Host "Remove host from vCenter Server" -foregroundcolor green
#====================================================================#
Remove-VMHost "$ESXiHost" -Confirm:$false | out-null
#====================================================================#
Write-Host "Disconnect from vCenter Server" -foregroundcolor green
#====================================================================#
Disconnect-VIServer -Confirm:$False | out-null

#====================================================================#
#   FASE 2 - HOST: RE-CONFIGURE MANAGEMENT NETWORK                   #
#====================================================================#
Write-Host "Connect directly to ESXi host" -foregroundcolor green
#====================================================================#
Connect-VIServer "$ESXiHost" | out-null
Sleep 10
#====================================================================#
Write-Host "Configure new management network" -foregroundcolor green
#====================================================================#
Get-VMHost "$ESXiHost" | New-VMHostNetworkAdapter -VirtualSwitch "vSwitch0" -PortGroup "MGMT Network" -IP "$New_MGMT_Network" -SubnetMask "$New_MGMT_Subnet" -ManagementTrafficEnabled:$true -Confirm:$false | out-null
#====================================================================#
Write-Host "Configure vSwitch0 - MGMT NIC Teaming Policy" -foregroundcolor green
#====================================================================#
Get-VMHost "$ESXiHost" | Get-VirtualPortGroup -name "MGMT Network" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive vmnic0 | out-null
Get-VMHost "$ESXiHost" | Get-VirtualPortGroup -name "MGMT Network" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicStandby vmnic2 | out-null
#====================================================================#
Write-Host "Configure new DNS servers" -foregroundcolor green
#====================================================================#
Get-VMHost "$ESXiHost" | Get-VMHostNetwork | Set-VMHostNetwork -DnsAddress "$New_DNS01","$New_DNS02" | out-null
#====================================================================#
Write-Host "Change VMkernel Gateway" -foregroundcolor green
#====================================================================#
$net = Get-VMHostNetwork
$net | Set-VMHostNetwork -VMKernelGateway "$New_VMK_Gateway" -VMKernelGatewayDevice "vmk2" | out-null
#====================================================================#
Write-Host "Reboot ESXi Host" -foregroundcolor green
#====================================================================#
Restart-VMHost -VMHost "$ESXiHost" -Confirm:$false | out-null
#====================================================================#
Write-Host "Disconnect from ESXi host" -foregroundcolor green
#====================================================================#
Disconnect-VIServer -Confirm:$False | out-null
Write-Host "Update DNS (A) records at you're Domain Controller with new ESXi ipaddress, otherwise the script will fail..!!" -foregroundcolor white
Write-Host "Update DNS (A) records at you're Domain Controller with new ESXi ipaddress, otherwise the script will fail..!!" -foregroundcolor white
Write-Host "Update DNS (A) records at you're Domain Controller with new ESXi ipaddress, otherwise the script will fail..!!" -foregroundcolor white
Sleep 360

#====================================================================#
#   FASE 3  - vCENTER: EXIT MAINTENANCE AND RE-ADD HOST TO vCENTER   #
#====================================================================#
Write-Host "Connect to vCenter Server" -foregroundcolor green
#====================================================================#
Connect-VIServer "$vCenterServer" | out-null
Sleep 10
#====================================================================#
Write-Host "New Management Network to vCenter Server host file" -foregroundcolor green
#====================================================================#
$hostsPath = “$env:windir\System32\drivers\etc\hosts”
$hosts = get-content $hostsPath
$string = “$New_MGMT_Network             $ESXiHost”
$hosts = $hosts + $string
$hosts | Out-File $hostsPath -enc ascii
#====================================================================#
Write-Host "Add ESXi host to vCenter Server" -foregroundcolor green
#====================================================================#
Add-VMHost "$ESXiHost" -location (Get-Datacenter -name "$vCenterDatacenter" | Get-Cluster -name "$vCenterCluster") -user root -password $RootPassword -force | out-null
#====================================================================#
Write-Host "Remove old Management Network from host" -foregroundcolor green
#====================================================================#
#$vNic = Get-VMHostNetworkAdapter -VMHost $ESXiHost | where {$_.PortgroupName -eq $Old_MGMT_Network} | out-null
#Remove-VMHostNetworkAdapter -Nic $vNic | out-null
#====================================================================#
Write-Host "Exit host from Maintenance mode" -foregroundcolor green
#====================================================================#
Set-VMHost "$ESXiHost" -State "Connected" -RunAsync | out-null
#====================================================================#
Write-Host "Tell DRS to re-balance VMs including the rejoined host" -foregroundcolor green
#====================================================================#
Get-DrsRecommendation -Cluster "$vCenterCluster" | where {$_.Reason -eq "Host is entering maintenance mode"} | Apply-DrsRecommendation | out-null
#====================================================================#
Write-Host "Disconnect from vCenter Server" -foregroundcolor green
#====================================================================#
Disconnect-VIServer -Confirm:$False | out-null

#====================================================================#
#   FASE 4  - SCRIPT FINISHED                                        #
#====================================================================#
Write-Host "Script finished, please check error log..." -foregroundcolor yellow
#====================================================================#

The script is finished:

image

Custom settings:

$vCenterServer = "vCENTER SERVER NAME BY DNS"
$vCenterUsername = "vCENTER DOMAIN\USERNAME"
$vCenterPassword = "vCENTER PASSWORD"
$vCenterDatacenter = "vCENTER DATACENTER NAME"
$vCenterCluster = "vCENTER CLUSTERNAME"
$ESXiHost = "ESXi HOSTS BY DNS"
$RootUser = "ROOT USER ACCOUNT TO CONFIGURE/CONNECT HOST"
$RootPassword = "ROOT PASSWORD TO CONFIGURE/CONNECT HOST"
$Old_MGMT_Network = "ORIGINAL MANAGEMENT VMKERNEL NAME"
$New_MGMT_Network = "NEW MANAGEMENT VMKERNEL IPADDRESS"
$New_MGMT_Subnet = "NEW MANAGEMENT VMKERNEL SUBNET"
$New_VMK_Gateway = "NEW MANAGEMENT VMKERNEL GATEWAY"
$New_DNS01 = "NEW PRIMARY DNS SERVER TO CONFIGURE"
$New_DNS02 = "NEW SECUNDARY DNS SERVER TO CONFIGURE"


sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn

VMware: Easy menu to find VM network adapter by MAC address

November 1st, 2011 6 comments

Last week I need to locate some traffic from physical switches to my virtual environment.. I need to find out which MAC address belong to which virtual machine (+ adapter).. time to script this include menu

#====================================================================#
#   SCRIPT:        Find_VM_by_MAC_address_menu.ps1                   #
#   FUNCTION:      Find VM (+ adapter) by MAC address with easy menu #
#   OWNER:         Sander Daems                                      #
#   CREATED:       11/01/2011                                        #
#   MODIFIED:      11/01/2011                                        #
#   VERSION:       v.1.0                                             #
#====================================================================#
#   CHANGELOG:                                                       #
#                                                                    #
#    v.1.0                                                           #
#	 - Created script;                                               #
#                                                                    #
#====================================================================#
#   HOST - CUSTOM DEFINITIONS                                        #
#====================================================================#
Write-Host "Let's find that damn address" -foregroundcolor green
#====================================================================#
$cluster = read-host "Select Cluster name"
$macaddress = read-host "Select MAC Address to find"
#====================================================================#
#   Script                                                           #
#====================================================================#
Get-Cluster $cluster | Get-VM | Get-NetworkAdapter | Where-Object {$_.MacAddress -eq "$macaddress"} | Format-List -Property *
#====================================================================#

image

sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn

VMware: List all RDM disks in Hosts and Virtual Machines via PowerCLI

August 3rd, 2011 13 comments

To prepare a SAN to SAN migration I need to list all virtual machines with RAW Device Mappings, I found a very nice script at Pastebin (I’ve this you’re script, please comment to receive the credits), the script:

$report = @()
$vms = Get-VM | Get-View
foreach($vm in $vms){
     foreach($dev in $vm.Config.Hardware.Device){
          if(($dev.gettype()).Name -eq "VirtualDisk"){
               if(($dev.Backing.CompatibilityMode -eq "physicalMode") -or
               ($dev.Backing.CompatibilityMode -eq "virtualMode")){
                    $row = "" | select VMName, VMHost, HDDeviceName, HDFileName, HDMode, HDsize, HDDisplayName
                    $row.VMName = $vm.Name
                    $esx = Get-View $vm.Runtime.Host
                    $row.VMHost = ($esx).Name
                    $row.HDDeviceName = $dev.Backing.DeviceName
                    $row.HDFileName = $dev.Backing.FileName
                    $row.HDMode = $dev.Backing.CompatibilityMode
                    $row.HDSize = $dev.CapacityInKB
                    $row.HDDisplayName = ($esx.Config.StorageDevice.ScsiLun | where {$_.Uuid -eq $dev.Backing.LunUuid}).DisplayName
                    $report += $row
               }
          }
     }
}
$report

image

Ps. the script can take a while to list…

sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn

Categories: VMware Tags: , , , , ,

VMware: Update VMware Tools without a reboot by PowerCLI

July 29th, 2011 13 comments

Upgrade VMware Tools, all virtual machines in cluster:

Get-Cluster "Productie" | Get-VM | Update-Tools –NoReboot

Upgrade VMware Tools, located in folder:

Get-Cluster "Productie" | Get-Folder "Beheer servers" | Get-VM | Update-Tools –NoReboot

Upgrade VMware Tools, selected virtual machine:

Get-Cluster "Productie" | Get-VM "BHR-SVR11" | Update-Tools –NoReboot

Get VMware-Tools versions:

Get-View -ViewType VirtualMachine | select Name, @{ Name=”ToolsVersion”;
Expression={$_.config.tools.toolsVersion}}

image

More information: VMware , VMware

sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn

VMware: Configure new vSphere 4 host with PowerCLI

July 5th, 2011 No comments

I’ve created a PowerCLI script that can be used to configure a vSphere 4 host with a custom configuration. And you can select in the menu to configure the host (option 1) + you can select (option 2) to add the host into a cluster on a vCenter Server. I’ll update this post with new configurations/versions, I’m still a PowerCLI beginner so.. please comment if you have any tips or suggestions.

Menu:

1. Configure new vSphere host:

– Connect vSphere host;
– Enter maintenance;
– Set the hostname and domain name;
– Configure DNS settings;
– Configure NTP Server;
– Configure Support User;
– Enable the software iSCSI initiator;
– Delete the default VM Network;
– Configure vSwitch0 – Management / vMotion (incl. failover en load balancing);
– Configure vSwitch1 – Network;
– Configure vSwitch2 – iSCSI (incl.VMkernels + failover en load balancing);
– Configure iSCSI target address;
– Exit Maintenance Mode

2. Configure new vSphere host to vCenter Server

– Connect vCenter server;
– Add vSphere Host to vCenter server;
– Re-Balance Cluster

0. Quit

The script: [updated: 07/07/2011 – v.1.5]

#====================================================================#
#   SCRIPT:        Configure_new_ESXi_Host_Menu.ps1                  #
#   FUNCTION:      Configure fresh installed host                    #
#   CREATED:       05/07/2011                                        #
#   MODIFIED:      07/07/2011                                        #
#   VERSION:       v.1.5                                             #
#====================================================================#
#   CHANGELOG:                                                       #
#                                                                    #
#    v.1.5                                                           #
#	 - Added answer field to configure host;                         #
#	 - Added start menu: config host and add to vCenter server       #
#	 - Hide config output, show's only when failure;                 #
#                                                                    #
#====================================================================#
# START MENU                                                         #
#====================================================================#
do {

Write-Host "Please make your choise:" -foregroundcolor yellow
Write-Host " 1. Configure new vSphere host"
Write-Host " 2. Configure new vSphere host to vCenter Server"
Write-Host " 0. Quit"
Write-Host " "
$response = Read-Host "Select 0-2"
Write-Host " "

switch ($response)
{
1 {
#====================================================================#
#   HOST = CUSTOM DEFINITIONS                                        #
#====================================================================#
$ESX_host = read-host "Select ESXi host by DNS to connect"
$newhostname = read-host "Select hostname to configure"
$newdomainname = read-host "Select domain name to configure"
$root_user = "root"
$root_password = read-Host "Select root password to connect"
$new_user = read-host "Select extra username to configure"
$new_user_password = read-Host "Select extra password to configure"
$dns01 = read-host "Select Primary DNS to configure"
$dns02 = read-host "Select Secundary DNS to configure"
$VMK01 = read-host "Select iSCSI VMkernel01 to configure"
$VMK02 = read-host "Select iSCSI VMkernel02 to configure"
$iSCSIsub = read-host "Select iSCSI Subnet Mask to configure"
$iSCSItarget = read-host "Select iSCSI target to configure"
$vMotiontcp = read-host "Select vMotion VMkernel to configure"
$vMotionsub = read-host "Select vMotion Subnet Mask to configure"
$NTPServer01 = "0.pool.ntp.org"
$NTPServer02 = "1.pool.ntp.org"
Write-Host "vSphere Host-configuration will begin..." -foregroundcolor Green
#====================================================================#
Write-Host "Connect to the target ESXi Host" -foregroundcolor green
#====================================================================#
Connect-VIServer "$ESX_host" -User "$root_user" -Password "$root_password"
Sleep 10
#--------------------------------------------------------------------#
Write-Host "Enter Maintenance mode" -foregroundcolor green | out-null
#--------------------------------------------------------------------#
Get-VMHost | Set-VMHost -State maintenance | out-null
#--------------------------------------------------------------------#
#
#
#====================================================================#
# ***CONFIGURE HOST SETTINGS***                                      #
#====================================================================#
Write-Host "Set the hostname and domain name" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VMHostNetwork | Set-VMHostNetwork -DomainName $newdomainname -HostName $newhostname | out-null
Sleep 10
#--------------------------------------------------------------------#
Write-Host "Configure DNS settings" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VMHostNetwork | Set-VMHostNetwork -DnsAddress $dns01 | out-null
#--------------------------------------------------------------------#
Write-Host "Configure NTP Server" -foregroundcolor green
#--------------------------------------------------------------------#
Add-VmHostNtpServer -NtpServer "$NTPServer01" , "$NTPServer02" | out-null
#--------------------------------------------------------------------#
Write-Host "Configure Support User" -foregroundcolor green
#--------------------------------------------------------------------#
New-VMHostAccount -Id "$new_user" -password "$new_user_password" -Description "Tech Support" -AssignGroups root -GrantShellAccess | out-null
#--------------------------------------------------------------------#
#
#
#====================================================================#
# ***CONFIGURE NETWORK***                                            #
#====================================================================#
Write-Host "Delete the default VM Network" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VirtualPortGroup -Name "VM Network" | Remove-VirtualPortGroup -Confirm:$false | out-null
#--------------------------------------------------------------------#
Write-Host "Configure vSwitch0 - Management / vMotion" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VirtualSwitch -Name vSwitch0 | Set-VirtualSwitch -Nic vmnic0,vmnic1 -Confirm:$false | out-null
New-VMHostNetworkAdapter -PortGroup vMotion -VirtualSwitch vSwitch0 -IP "$vMotiontcp" -SubnetMask "$vMotionsub" -vMotionEnabled:$true -Confirm:$false | out-null
get-virtualportgroup -name vMotion | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive vmnic1 | out-null
get-virtualportgroup -name vMotion | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicStandby vmnic0 | out-null
get-virtualportgroup -name "Management Network" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive vmnic0 | out-null
get-virtualportgroup -name "Management Network" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicStandby vmnic1 | out-null
#--------------------------------------------------------------------#
Write-Host "Configure vSwitch1 - Network" -foregroundcolor green
#--------------------------------------------------------------------#
New-VirtualSwitch -Name vSwitch1 -Nic vmnic2,vmnic3 -Confirm:$false | out-null
Get-VirtualSwitch -Name vSwitch1 |Set-VirtualSwitch -NumPorts "256" -Confirm:$false | out-null
Get-VirtualSwitch -Name vSwitch1 | New-VirtualPortGroup -Name "VLAN-100-Production" -VLANID 100 | out-null
Get-VirtualSwitch -Name vSwitch1 | New-VirtualPortGroup -Name "VLAN-200-Management" -VLANID 200 | out-null
Get-VirtualSwitch -Name vSwitch1 | New-VirtualPortGroup -Name "VLAN-300-DMZ" -VLANID 300 | out-null
#--------------------------------------------------------------------#
Write-Host "Configure vSwitch2 - iSCSI" -foregroundcolor green
#--------------------------------------------------------------------#
New-VirtualSwitch -Name vSwitch2 -Nic vmnic4,vmnic5 | out-null
New-VMHostNetworkAdapter -PortGroup "iSCSI01" -VirtualSwitch vSwitch2 -IP "$VMK01" -SubnetMask "$iSCSIsub" | out-null
New-VMHostNetworkAdapter -PortGroup "iSCSI02" -VirtualSwitch vSwitch2 -IP "$VMK02" -SubnetMask "$iSCSIsub" | out-null
get-virtualportgroup -name "iSCSI01" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive vmnic4 | out-null
get-virtualportgroup -name "iSCSI01" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicStandby vmnic5 | out-null
get-virtualportgroup -name "iSCSI02" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive vmnic5 | out-null
get-virtualportgroup -name "iSCSI02" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicStandby vmnic4 | out-null
#--------------------------------------------------------------------#
#
#
#====================================================================#
# ***CONFIGURE STORAGE***                                            #
#====================================================================#
Write-Host "Configure iSCSI target address" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VMHost | Get-VMHostHba -Type iScsi | New-IScsiHbaTarget -Address "$iSCSItarget" | out-null
#--------------------------------------------------------------------#
Write-Host "Configure iSCSI initiator" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VMHostStorage | Set-VMHostStorage -SoftwareIScsiEnabled $True | out-null
#--------------------------------------------------------------------#
#
#
#====================================================================#
# ***FINISHING CONFIGURATION***                                      #
#====================================================================#
Write-Host "Exit Maintenance Mode" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VMHost | Set-VMHost -State connected | out-null
#--------------------------------------------------------------------#
#
#
Write-Host "vSphere Host-configuration has finished.." -foregroundcolor yellow
break;
}
2 {
#====================================================================#
#   vCenter - CUSTOM DEFINITIONS                                     #
#====================================================================#
$vCenterServer = read-host "Select vCenter server to connect"
$vCenterAdministrator = read-host "Select vCenter Administrator"
$vCenterPassword = read-host "Select vCenter Administrator password"
$cluster = read-host "Select Cluster to add host"
Write-Host "vSphere Host will be added in vCenter server..." -foregroundcolor Green
#====================================================================#
Write-Host "Connect to the target vCenter server" -foregroundcolor green
#====================================================================#
Connect-VIServer "$vCenterServer" -User "$vCenterAdministrator" -Password "$vCenterPassword"
#====================================================================#
Add-VMHost $ESX_host -Force -Location (Get-Cluster "$cluster") -User root -Password "$root_password" | out-null
#====================================================================#
#
#
#====================================================================#
# ***FINISHING CONFIGURATION***                                      #
#====================================================================#
Write-Host "Tell DRS to re-balance VMs including the new host" -foregroundcolor green
#====================================================================#
Get-DrsRecommendation -Cluster (Get-Cluster "$cluster") -Refresh | out-null
#====================================================================#
#
#
Write-Host "Host is added to vCenter Server.." -foregroundcolor yellow
break;
}
}

}
while ($response -ne "0")

image

sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn

VMware: Change Alarm-Actions with PowerCLI

July 4th, 2011 5 comments

I’m working on a project for a company that is running a big cloud datacenter, the organization is 24/7 and some of my colleagues need to monitor the environment week by week (standby shifts). Once a week we need to change some alarm actions to send the Alarm notifications to a different email address.. because it’s a lot of work to do this by hand I tried to script this.

You must change the email address value in the script.. and automatically change the rest of the definitions.

$MailToRandom1 = "alert_random@vmpros.nl"

Here’s my script:

#====================================================================#
#   SCRIPT:        Change_Alarm_Datacenter.ps1                       #
#   FUNCTION:      Modify multiple Alarm definitions in vCenter      #
#   CREATED:       10/06/2011                                        #
#   VERSION:       v.1.1                                             #
#====================================================================#
#   CHANGELOG:                                                       #
#                                                                    #
#    v.1.1                                                           #
#    - Deleted email body                                            #
#    - Added Alarm definition                                        #
#    - Added changelog                                               #
#                                                                    #
#    v.1.0                                                           #
#    - First Release                                                 #
#                                                                    #
#====================================================================#
# Note: You only have to change the "MailToRandom1" value in "Custom #
#         Definitions" to change the alarm action                    #
#====================================================================#
# Connect vCenter server;
#--------------------------------------------------------------------#
$vCenterServer = "vcenter-server"
$user = "username"
$pass = "password"

if ( $DefaultVIServers.Length -lt 1 )
{
  Connect-VIServer -Server $vCenterServer -Protocol https -User $user -Password $pass -WarningAction SilentlyContinue | Out-Null
}

#--------------------------------------------------------------------#
# Custom Definitions;
#--------------------------------------------------------------------#
$actType = "SendEmailAction"
$MailToRandom1 = "alert_random@vmpros.nl"
$MailToDefault1 = "alert1@vmpros.nl"
$MailToDefault2 = "alert2@vmpros.nl"
$actAlarm1 = "Machine suspended"
$actAlarm2 = "Datastore usage"
$actAlarm3 = "Snapshot alarm"
$actSubject = "Get-AlarmDefinition"
#--------------------------------------------------------------------#
# Delete Alarm Trigger;
#--------------------------------------------------------------------#
Get-AlarmDefinition -Name "$actAlarm1" , "$actAlarm2" , "$actAlarm3" | Get-AlarmAction | Remove-AlarmAction -Confirm:$false
#--------------------------------------------------------------------#
# Create Alarm Trigger;
#--------------------------------------------------------------------#
Get-AlarmDefinition -Name "$actAlarm1" , "$actAlarm2" , "$actAlarm3" | New-AlarmAction -Email -To "$MailToRandom1" , "$MailToDefault1" , "$MailToDefault2"
Get-AlarmDefinition -Name "$actAlarm1" , "$actAlarm2" , "$actAlarm3" | Get-AlarmAction | New-AlarmActionTrigger -StartStatus "Green" -EndStatus "Yellow"
#--------------------------------------------------------------------#
# Disconnect vCenter server;
#--------------------------------------------------------------------#
Disconnect-VIServer -Server $vCenterServer -Force:$true -Confirm:$false
#--------------------------------------------------------------------#

sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn

VMware: List VMFS version and blocksize of all datastores with PowerCLI

June 14th, 2011 1 comment

For a SAN to SAN migration I need to list all our datastores and blocksizes, It couldn’t be easier to do this with a script. LucD has written a great script to list VMFS Name, VMFS Version and VMFS Blocksize

New-VIProperty -Name VMFSVersion -ObjectType Datastore `      -Value {           param($ds)           $ds.ExtensionData.Info.Vmfs.Version      } `      -BasedONextensionProperty ‘Info’ `      -Force

New-VIProperty -Name VMFSBlockSizeMB -ObjectType Datastore `      -Value {           param($ds)           $ds.ExtensionData.Info.Vmfs.BlockSizeMB      } `      -BasedONextensionProperty ‘Info’ `      -Force

Get-Datastore | Select Name,VMFSVersion,VMFSBlockSizeMB

Output:

image

Credits goto: Luc Dekens

sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn