Best VMworld 2016 sessions?

If you can make VMworld at Barcelona this year, you might want to know what sessions are great. I didn’t go to Vegas (and won’t be going to Barcelona this year), but have seen quite a lot of content from this year’s sessions.

So, my five favourites so far:

NET7857R – Reference Design for SDDC with NSX and vSphere
This is actually a two-parter, but I am going to cheat and include it as one. An overview of the NSX components, deployment considerations, single vCenter or multi-vCenter, DC topologies, considerations around VTEPs and VDS uplinks, and edge design. Part two covers sizing and considerations for small, medium, large implementations. Also covers multi-tenancy and security design life-cycle, polices, service composer, and a real world example of micro-segmentation. A couple of great presentations.
NET8193R – The Architectural Future of Network Virtualization
The keynote talked about some great upcoming applications of network virtualization, and this presentation goes into them. It starts by discussing the current NSX implementation and the planes, then a bit about clustering and log availability, and the exciting bit, about control planes now, high-performance architecture, control planes in the future, and NSX for public clouds.
SDDC8472 – An IT Architect’s Guide to the Software-Defined Data Center
Looks at the goals of the SDDC, and the components that make it up. Discusses VMware Validated Designs, the objectives, and the design decisions that go into them. Overview of a couple of deployment topologies, and some good links to videos.
INF9947-S – Spotlight on vSphere- Today, Tomorrow, and Beyond
A good presentation about the areas of focus for the vSphere development team, progress around 3D graphics with vSphere and VDI, containers, and ESXi upgrades without reboots. Also the future of the vSphere client and the HTML5 client, and an overview of where they are going with automation. Then a bit about predictive operations.
NET8675r – The Practical Path to NSX
A bit more detail than the previous session, with detail around micro-segmentation, a little bit around VDI, and practical steps about getting started. Also covers the benefits of automation (and blueprints!), and a quick look at cross-datacentre and even cross-cloud connectivity. Some good steps to help you get on the path to network virtualisation.

A fairly heavy slant towards NSX, but there was a massive amount of NSX content, and it is pretty exciting!







Leave a comment

Filed under Uncategorized

Migrating from Outlook Notes

Migrating from Outlook Notes

There are plenty of decent note solutions around such as Evernote and (even better) OneNote. If you have a lot of notes stored in Outlook though, you may struggle to get them to OneNote (or Evernote) without have them as an attachment. This code can be used to read the contents of the note and send it as a message. Since those note programs typically have an email address where notes can be sent to, this can be an easy way of getting your notes from Outlook into your new program of choice.

$email = ""

#Connect to Outlook
$Outlook = New-Object -ComObject Outlook.Application

#Connect to notes
$OutlookNotes = $Outlook.session.GetDefaultFolder(12)

foreach ($note in $outlooknotes.items)
$body = $note.body
$subject = $note.subject
$Mail = $Outlook.CreateItem(0)
$Mail.To = $email
$Mail.Subject = $subject
$Mail.Body =$body

Leave a comment

Filed under Uncategorized

Server Core 2012 fundamentally broken?

Trying to add a GUI back to server core (in a lab environment) highlighted that some fundamental issues with update are still broken.

Basically a Core installation won’t copy the installation files locally like a GUI install (to save space). All well and good as you can get the source files from the installation media. Well, unless you have applied any updates, in which case, you are in for a world of pain as the media will be out of date.

The article below explains the issue and how to get around it, but basically, I would just install the full-fat version of Server and then remove the GUI.

A shame, and hopefully something that they fix in Windows Server 2016.

Leave a comment

Filed under Uncategorized

Installing Starwind VSAN on VMware

Starwind have a vSAN product which allows you to get some of the benefits of a SAN (such as HA, DRS, etc) without the expense. There is no free lunch, it does this using sync’ed local disk, but it well worth a look. It also free for small installations (two server, up to 130GB).

To test this, I have a physical host with two networks configured, “InternalNetwork”, a VMPG with no NICs assigned, and “ExternalNetwork” which does have a NIC assigned to allow outbound communication where required. On this are nested two ESX hosts, with 32GB RAM, 2 vCPU’s, and four NICs each.

You also need to download a licence for Starwind (a licensekey.swk files) and the Starwind software. Upon registered, you will be sent an email containing the details.

You will also need a couple of ESXi hosts obviously and a vCenter and Domain Controller.

Boot from the ESXi image, VMware-VIMSetup-all-5.5.0-1750795-20140201-update01.iso and perform an install, configure a partition, select password, etc. Reboot when finished.

When the hosts come up, configure an IP address for each one. I am going to use and

Connect them to a Virtual Center instance (installation not covered here, but it could be a virtual appliance, or installation on a Windows physical server or VM). I use a VM on the “internalNetwork” (10.10.10/24) that the hosts are on.

Add a datacenter and create a cluster, and put the two hosts in the cluster.

Once the hosts have been added, you need to create a couple of VM’s, one on each host, and each one with a couple of NICs assigned, which will host the virtual SAN. These should be Windows Server 2012. Each VM should have a second disk configured which will be used to provide the VSAN services (which will then be re-shared to ESXi). So my first SAN VM is on VMFS-1 which has ~400GB free, so I will add a disk to the VM to use that.

Really, you might get better performance also adding this to a second virtual SCSI adapter, but we can do that later.

Then install the OS on each VM, and then Vmtools.

On each of your virtual SAN’s, by running diskmgmt.msc, you should then have an unknown disk of 400GB, which is the one we created on the VMFS volume earlier.

Bring the disk online, initialise it with a GPT table, and create a partition.

Each of your virtual SANs will then need to be configured with a computer name and IP address (.15 and .16 in my case for the first adapter in each VM, and and for the second, although the second could be on a completely different network depending on your topology).

This is probably a good time to join each server to your domain.

On each run the Starwind-v8.exe file to do the install accepting the default (unless you don’t want the management console for instance), until you get prompted for the key. At that point choose the key and follow the rest of the install (choosing not to configure the SMI-S agent).

When finished, launch the admin console, and choose “yes” to set the default location to your newly created empty drive (e:) in my case.

From there, you need to select “Add Device” (probably best not to use the “advanced” version at this point, and give it a size. I am going to make mine 128GB, and call it SAN1-1. If you go to E:, you will also see the disk image files that you just created.

At that point, you can then configure replication between the two. This is replicating SAN1-1 to SAN2.

Drill down to the imagefile, and choose “replication manager”. Choose synchronous replication and enter the address of the other vSAN. Note that if you made your SAN diskimages much bigger than 128GB, you migt hit a licence limit… When you get the “Network Options for Replication” option, you need to select “Change Network Settings” and choose your adapters for heatbeat and sync.

When the wizard has finished, you will get confirmation:

At that point, the initial synchronization will take place, and you can connect the newly replicated volume to your ESXi hosts.

To connect to the hosts, go back to your vSphere client, and for each host, add the software iSCSI adapter (from Configuraton>Storage Adapters).

Edit the properties of your iSCSI adapter and point it to the SAN VM on that host (as each host has vSAN VM installed locally).

We haven’t actually configured any security here, but StarWind supports CHAP, as does ESXi.

Once both hosts are seeing the vSAN with a STARWIND iSCSI Disk visible, you can go to configuration>Storage, click “add storage” and create a new volume.

You should see any local unused device (perhaps the boot device) and your new STARWIND iSCSI disk. Select that partition, format it, and give it a datastore name.

You now have a VMFS volume were you can place a VM, and take advantage of HA, DRS, etc!

Leave a comment

Filed under Microsoft, VMware

Creating a clone from a snapshot on Vmware vSphere

There are times when you need something from a snapshot of a VM, but might not want to rollback to the snapshot to get it. This could be because the VM is in production and you cannot interrupt it, or you are extremely risk averse, or various other reasons.

The work around, is to create a clone of the snapshot. This will allow the existing VM to run uninterrupted, while a new clone is created.

I use the following Powershell/PowerCLI code to do that, and then disable the virtual NIC. After all, you don’t want the clone VM coming up with the same name and IP as your production VM, that would defeat the purpose of doing the clone in the first place. Just note that it doesn’t really have any troubleshooting or error catching.

$vmname = "myserver"
$VMCluster = "Production Cluster"
$VMResourcePool = "Pre-Production"
$VMdatastore = "VMFS-DATA-1"
$SnapshotNum = 0

$vm = get-vm -name $vmname | get-view
$clonename = "Clone_" + $
$clonefolder = $vm.parent

$cloneSpec = new-object Vmware.Vim.VirtualMachineCloneSpec

$cloneSpec.Location = new-object Vmware.Vim.VirtualmachinerelocateSpec
$CloneSpec.Location.Pool = (get-cluster $VMCluster | get-resourcepool $VMResourcePool | get-view).MoRef
$CloneSpec.Location.Host = (get-vm -name $vmname | get-vmhost | get-view).MoRef
$CloneSpec.Location.Datastore = (get-datastore -name $VMdatastore | get-view).MoRef
$cloneSpec.Snapshot = $vm.Snapshot.RootSnapshotList[$SnapshotNum].snapshot

$cloneSpec.Location.DiskMoveType = [Vmware.Vim.VirtualMachineRelocateDiskMoveOptions]::moveAllDiskBackingsAndDisallowSharing

write-host ("Creating clone - " + $clonename)
$vm.CloneVM_Task($cloneFolder, $cloneName, $cloneSpec)
Do {
$task = (get-task | where {$_.Name -eq "CloneVM_Task" -and $_.State -eq "Running"})
If ($task -ne $null) {Write-host ("Waiting for clone to complete - " + $task.percentcomplete[0] +"%")}
Start-sleep -s 5
While ($task -ne $null)
$VMadapter = get-vm -name $Clonename | get-networkadapter | set-networkadapter -startconnected:$false -confirm:$false
Write-host $VMadapter + "disabled."

Most of the information for putting this together was taken from here:

Leave a comment

Filed under Microsoft, Powershell, VMware

Adding drivers to a Windows 8.1 install.wim file

I have a Windows 8.1 Enterprise image (32-bit) and wanted to install the vendor specific (Dell) drivers into it, so I can use the image on a new device without having to manually faff around loading them separately. I downloaded the driver cab (5830-win8.1-A00-9Y5Y5.CAB) and attempted to run it on a Windows 8 (8.0) PC without any luck. 

I did the following:

  1. Open Powershell with Administrator rights.
  2. Made a folder called c:\image
  3. Made a folder called c:\drivers and copied the contents of the CAB to that location
  4. Ran “mount-windowsimage -path c:\image -imagepath e:\sources\install.wim -index 1”
  5. Ran “add-windowsdriver -path c:\image -driver .\drivers”


At that point it falls over with errors like the following:

add-windowsdriver : DismOpenSession failed. Error code = 0xc0000135

At line:1 char:1
+ add-windowsdriver -path c:\images -driver c:\drivers -logpath c:\log\drivers …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:)[Add-WindowsDriver], COMException

+ FullyQualifiedErrorId : Microsoft.Dism.Commands.AddWindowsDriverCommand


The solution? ou need a Windows 8.1 machine to modify the image (not 8.0), and instead of the CAB file, I used the extracted contents of the .EXE files:


Of course, I will need to wait until I actually get the tablet to test, but at least the Windows image appears to incorporate the drivers correctly.

Leave a comment

Filed under Uncategorized

Vmware 5.1 and SSO errors

There are a lot of problems on mentioned on the VMware groups, and on the internet about the farce that is VMware’s java based SSO.

After battling with it for hours, we could login to the Virtual Center server as domain\ssoadmin, and then start the VMware Client and if the checkbox to use “windows credentials” was checked, we could login. If the checkbox not checked, and we tried to specify the username/password. It would fail with the helpful

Cannot complete login due to an incorrect user name or password.

Even logging on with another account and specifying domain\ssoadmin was no help either, we got the same message every time.

The viclient log was full of errors like:

[viclient:SoapTran:P: 3] 2013-07-04 09:28:33.153  Invoke 4 Finish Login on SessionManager:SessionManager [] - Serial:0.011, Server:010.665 [ERROR]
Vmomi.Fault.InvalidLogin: Cannot complete login due to an incorrect user name or password.
at VirtualInfrastructure.ManagedObject.InvokeMethod(MethodName, Object[])
at Vmomi.SessionManager.Login(String, String, String)
at VmomiSupport.VcServiceImpl.LoginNormally(LoginSpec)
at VmomiSupport.VcServiceImpl.Login(LoginSpec)
at VirtualInfrastructure.LoginMain.Process(BackgroundWorker, DoWorkEventArgs)
at VirtualInfrastructure.LoginWorkerImpl.Worker_DoWork(Object, DoWorkEventArgs)
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object)
[viclient:SoapMsg :P: 3] 2013-07-04 09:28:33.162  RMI Request Vmomi.SessionManager.Login - 4

I then looked in the imstrace.log file, and found errors like this:

com.rsa.common.ConnectionException: Error connecting to the identity source
Caused by: javax.naming.NamingException: getInitialContext failed. javax.resource.spi.ResourceAdapterInternalException: Unable to create a managed connection 'ldap://server.domain.INT:3268' with 'GSSAPI' Reason: javax.resource.spi.ResourceAdapterInternalException: Unable to create managed connection GSSAPI [Root exception is javax.resource.spi.ResourceAdapterInternalException: Unable to create a managed connection 'ldap://server.domain.INT:3268' with 'GSSAPI' Reason: javax.resource.spi.ResourceAdapterInternalException: Unable to create managed connection GSSAPI]
Caused by: javax.resource.spi.ResourceAdapterInternalException: Unable to create a managed connection 'ldap://server.domain.INT:3268' with 'GSSAPI' Reason: javax.resource.spi.ResourceAdapterInternalException: Unable to create managed connection GSSAPI
Caused by: javax.resource.spi.ResourceAdapterInternalException: Unable to create managed connection GSSAPI
Caused by: javax.naming.AuthenticationException: GSSAPI [Root exception is GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)]]
Caused by: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)]
Caused by: GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)

As that domain was one that I wasn’t going to use for verification, I logged on to the VMware Web Client using the admin@System-Domain account, went to Administration>Sign-On and Discovery>Configuration, and just removed the domain. Alternatively, I could have manually corrected the connection string.

Still a lot of security errors to work though with this abortion of a product that is SSO, but at least login works better. Now to try and get SRM working again..

Leave a comment

Filed under SRM, VMware