PowerCli to Increase Hardware on Multiple VMs

The other night I had a task of upgrading 22 VMs with additional vCPUs and memory.  I also had a maintenance window of 60 minutes to get this completed.  So I wasn’t going to do this more than once, so I just wrote a simple PowerCli script that would handle this process for me.

$servers = "VMServer01","VMServer02","VMServer03","VMServer04","VMServer05"

foreach ($server in $servers){
Shutdown-VMGuest $server -confirm:$false
Do {
sleep -Seconds 5
$Status = (Get-vm $server).powerstate
If($status -eq "PoweredOff")
{"$Server has been powered off adding hardware"}
"$server is still powered on looping until off"
While ($Status -eq "PoweredOn")

$VMname = get-vm $server
$spec=New-Object –Type VMware.Vim.VirtualMAchineConfigSpec –Property @{“NumCoresPerSocket” = $cores}

$VMname | Set-VM -MemoryGB 28 -NumCpu $TotalvCPU -Confirm:$false

Sleep -Seconds 5
Start-VM $server -Confirm:$false

So this script starts off identifying the servers that the work is going to be performed on.… Continue reading

New Method for Installing PowerCLI

New Method for Installing PowerCLI

Starting with the newest version of PowerCLI, 6.5.1, the method for installation has changed from the typical MSI file to using the PowerShell Gallery.

Step 1. Uninstall PowerCLI

The first step is to uninstall PowerCLI from your system.  To do this use Add/Remove Programs.

Uninstall PowerCLI via Add/Remove Programs

Before Installing the New PowerCLI, the old installation needs to be removed.  … Continue reading

PowerShell to Configure iSCSI and MPIO

At work we have started to make a push to get as many servers off of RDM (Raw Device Mapping) drives in the virtual environment as we can. We use the RDM drives with MSCS (Microsoft Server Cluster Service) with SQL, but we do have a few application failover cluster as well. With this change we have an influx of iSCSI (Internet Small Computer Systems Interface) drive configurations along with  MPIO (Multipath I/O) configured.  … Continue reading

Loading Modules from Remote Server with PowerShell

Have you ever found yourself trying to run a command, and found out that you need to have modules loaded that are only installed on a remote server. I know I have many times, and trying to found the right module to download at times is nearly impossible.

So starting with PowerShell version 3.0, there is a now way to import a module from a remote machine.  … Continue reading

Building VMs using OSCustomizationSpec

With the release of Windows Server 2016, we did a complete overhaul of all of our VM templates.  The current way that I was building VMs (link to article) and configuring the NICs (link to article) stopped working because we increased the security footprint in the templates.  So I was stuck figuring out how to revamp my build script.  … Continue reading

Automation with Ecobee3, and Alexa

Ecobee3 Thermostat with Sensor

With all of the home automation articles floating around the web these days, I thought that I would take some steps to get my house some updates.  About 4 months back I had the HVAC system in my house replaced, but we didn’t opt for the installers to add a smart thermostat.  … Continue reading

Using PowerCLI to Find Datastore with Missing VM

PowerCLI to Find Datastore with missing VM

During the last maintenance window at work, we starting having issues with vCenter, so to resolve the issues vCenter services were restarted.  After the vCenter services came back up, I noticed one of the servers on a host had lost it connection.  To make things worse, the datastore for the VM changed from the human readable format to location name.… Continue reading

New PowerCLI Release: PowerCLI 6.5 R1

PowerCLI 6.5 R1

VMware just release a new version of PowerCLI just today.  Like every new release, they have packed with one with a ton of new features, and updates to the existing cmdlets to help with automation and daily operations.

Updated Cmdlets

Move-VM – This cmdlet has been updated to support the ability to vMotion machines between vCenters.  … Continue reading

Get vMotion IPs from all VMHost

I was recently asked to gather the vMotion IPs for all of the hosts in our environment. We have about 80 or so VM Hosts, so this was a job for PowerCli.  Below is the script.

$Report = @()

$Clusters = Get-Cluster | Sort Name

ForEach ($Cluster in $Clusters){
    $VmHosts = $Cluster | Get-VmHost | Where {$_.ConnectionState -eq “Connected”} | Sort Name
        ForEach ($VmHost in $VmHosts){
            $Report += Get-VMHostNetworkAdapter -VMHost $VmHost.Name -VMKernel | Where {$_.VMotionEnabled -eq “True”} | select VmHost,IP
$Report | Export-Csv C:\Scripts\Logs\vMotionIPs.csv -NoTypeInformation -UseCulture
vMotion IPs Gather from the Script
vMotion IPs
vMotion IPs gather with PowerCLI

First there needs to be a place to put all of the information that is going to be collected.  … Continue reading

Issues with PowerShell Modules and Duplicate Cmdlets

At the end of the day I always take my laptop with me as I never know when I’ll get a call about server issues.  So my PowerShell sessions remain open all of the time, with all of the modules loaded.  Granted I do save my scripts that I work on frequently, and I had a problem before losing a few scripts without having a recent save.  … Continue reading