Vladan Seget has posted some links to training resources for VCP on vSphere 4.
It doesn’t look like I’ll have time to do the upgrade course this year, which means, as a VCP ion VI3, I won’t be eligible to bypass the “What’s New” course (see below).

The VCP on VI4 certification is now available.
Registration for the VCP4 exam will open on August 14th. The first exam date available will be August 25th.
Dr Tobias Weltner has released a free comprehensive eBook on PowerShell.
Something to put on your eBook reader.
I’m in the middle of preparing for a migration from VI3 to vSphere 4 just now (hence the lack of substantial updating on this site).
As part of this process, I was just about to start writing a script to export our customisation specifications, when Arnim van Lieshout’s post appeared in my VMware Planet V12N RSS feed.
Export and import customization profiles using Powershell | Arnim van Lieshout.
It failed on a couple of customisations, but by adding…
Write-Host Exporting $CustomizationProfile.name
…after the ForEach loop started, it was easy to see that it was customisations with “/” and “*” characters that were causing the errors.
I love this script from Alan Renouf:-
[F]ind the offending snapshot, find the person who created it, get their email address from AD and send them an email reminding them of their mortal sin.
Our IndependentNonPersistent drives here prevent us from using snapshots, but I’m working on a “utilisation checking” script, that should help us cull some neglected machines and I might integrate some of Al’s AD interrogation into that.
Virtu-Al » PowerCLI: SnapReminder.
VMware have launched a new community site for code examples, and there’s a section on VMware vSphere PowerCLI (formerly VI Toolkit).
They seem to be picking the best scripts from the regular contributors to the forums, so it’s a good place to have a look for examples. They’re rated by users, and tend to be slightly better documented than the ones posted in the forums (which tend to be appended and amended as the thread progresses).
Virtual Geek has an interesting article on VMware I/O queues, “micro-bursting”, and multipathing.
Looks intimidating at first glance, but it’s suprisingly straightforward.
Excellent white paper from Xtravirt detailing advantages and disadvantages of linked-clones, thin-provisioning, and data-deduplication in order to pack more VMs onto your storage.
Storage Oversubscription Technologies | Xtravirt (registration required).
Eric Siebert at vSphere-Land.com points out that VMware have published a 120-page vSphere Evaluator’s Guide that’s chock-full of information about the new features (including a nice little demo of PowerCLI).
Definitely worth checking out.
I wrote this today to remove occurrences of the string “Tmpl” anywhere in the name of the template, and then to re-name the template with “Tmpl” as a prefix. It had a higher purpose than keeping everything nice and neat, but it’s rather specific to our environment so I won’t bother going into the details.
# Get all templates $objTemplates = Get-Template # Loop through the templates ForEach ($objTemplate in $objTemplates){ # Set the $StrInterimTemplateName variable to the template name, replacing the string "Tmpl" with an empty string $StrInterimTemplateName = ($objTemplate.Name -replace("Tmpl","")) # As the string we've just removed might be anywhere in the name, we need to replace double spaces with single $StrInterimTemplateName = ($StrInterimTemplateName -replace(" "," ")) # And also remove trailing spaces from the start, or the end of the string $StrInterimTemplateName = $StrInterimTemplateName.Trim() # Display on screen what we're doing (as the "Set-Template" with -WhatIf isn't very clear Write-Host Changing `[($objTemplate.Name)`] to `[ Tmpl $StrInterimTemplateName `] # Change the Template Name to the $StrInterimTemplateName variable preceeded by "Tmpl", uncomment the #-WhatIf if testing Set-Template -Template $objTemplate -Name "Tmpl $StrInterimTemplateName" #-WhatIf }
Despite being quite specific in it’s current form, this could easily be modified to rename virtual machines (or indeed any other PowerShell object).
While I suspect there’s a more elegant way to do this in fewer steps, it’s not particularly hacky.
