I have been looking at further ways to automate alot of the work that we do within our testing environment at work. This is mainly due to the fact that I want to keep our testing set in a standardized format, while removing the dependency on a SME resource to monitor the tests / set them up.

A majority of the time we end up using full clones for all testing due to the fact that we want to test de-dupe along with performance. This means that all scripts that I will post moving forward will reference that model.

Upon further reading I found out that View PowerCLI is different from traditional PowerCLI since it can only be executed locally on the connection server opposed to remotely.

First thing we need to do is figure out a standard script that will serve multiple purposes. Here is the one that I use.

This script does the following:

  • Loads the View PowerCLI snapin
  • Asks you what you want the PoolID to be
  • Asks you what you want the Pool Display Name to be
  • Asks you what cluster you would like the VMs to be placed in
  • Asks you how many desktops you want to create

For this to work in your environment then there are going to be a few things that you need to change

Lab is the name of the Datacenter which has a hidden sub folder of vm. This is going to be the same in all environments. The sub folder is then Testing and that is where I am dumping these desktops. Here is how you would have to change it if the folder structure was as follows


The same goes for the portion of the script where we are defining where the resource pools are

There are 2 folders in this line that aren’t visible but actually exist and it’s host and Resources

The variable $CObject is the name of the cluster where you want to put the VMs SO you really only need to change these lines if you are throwing the VMs in a resource pool below the cluster object

Template path is pretty straight forward. This is just the folder structure that is below the datacenter object and this too has a hidden folder of vm after the object.

Datastore paths are somewhat interesting . I have a standard naming convention of VDI_LUNID for all of my desktops BUT it might be different for your environment depending on how you do it. These datastores have to be present in the cluster object where you are putting the desktops

In the example above I only show one datastore but you can specify multiples by just doing the following

I haven’t really tested how well it works but it shouldn’t be any different than specifying multiple datastores within the pool settings.

Since we found that the script works with what I pasted above we should enable the Connection Server to accept remote Powershell tasks from other domain machines.

Open a Powershell administrative window and run the following

So now that, that works we could just save the script at the root of C:\ as FULL.ps1 since the next script that I will be referencing is a launcher menu that executes it based on the name and location.

Now here is the current menu that I am using that is based all in Powershell that I found somewhere online. If this is yours or you know who made it please let me know so I can give you credit.

So we can see that this when executed will prompt us for VMware View or Citrix.


This top level menu is based off of these lines here

When Selecting VMware View you will get the following sub menu


This sub menu is based off of this code here

I will select Create a pool which brings me here


This is based off of this section here

So since I only have the option for Full Clone it will call the function named FULL this function is really what is going to authenticate against the CS and run the script. I should mention that this user that you are specifying in the invoke-command task needs to be an administrative user in the View Admin UI. If the user isn’t then you will get a Not Authorized generic error that will just piss you off as much as it did me.

Here is the function as above in the script

This is literally the only way I have found this to actually work. If you don’t have a pre-defined testing set that you are using I believe that you can actually specify your commands directly within the { } of the script block but it would be interesting since you would have to load the snapin prior to the execution on the destination.

The one thing that I need to do is have it actually provide somewhat of feedback when it creates the desktops by doing some form of Get from the CS but I am still learning this.  This entire thing isn’t done but I have seen people talking about it lately so I just wanted to provide something that I would have found helpful as I was sifting through documentation attempting to figure this out on my own.  If you have any ways that you think that this could be done better let me know! You can always contact me on twitter @kalenarndt and I will adjust it accordingly. I always love to see how things can be done more efficiently.

So on Dec 31st I scheduled my VCAP-DTA5 and figured it wouldn’t be that bad compared to other exams I have taken……I was pretty wrong.

First thing is that I went through the blueprint and it looked extremely straight forward on what was going to be tested and how many questions there actually were. I will start off saying that I love the practical labs but with only 23 questions they only give you 3 hours. You may think….well 3 hours that’s a ton of time for 23 questions! You sir are wrong. If you have ever taken any of the practical VCAPs after 4.x you will know that 23 questions only means there are 23 common questions with sub questions for each. So this means you are doing something around like 30ish with all the steps.

The take away is…..KNOW EVERYTHING and work efficiently. If you are stuck waiting for the lab to actually render a page (I will go over this in a bit) then you should move forward and write down what the other question want you to do while you wait. 

My main complaint was the speed of the lab. Since Pearson isn’t running a local environment for this you are at the mercy of their testing internet to RDP into the lab you are going to be working on. If it is slow raise your hand immediately. They can only do so much but just have them report it. Now if the internet speed is fine you still have a few things to worry about. I am pretty sure this is a nested environment. I only think this is true because the speed is a huge issue. I have virtualized View before in a nested environment and it performed at just about the same rate. You are going to need to make sure that you know exactly where things are in the ui and what they want you to accomplish. I personally spent a majority of my time waiting for the lab either in the View flex UI or waiting for tabs to actually render. Please note that my testing center was having massive internet problems and when they moved me (for the 4th time -.-) it finally was a bit better.

Time management is something that you need to focus on here. Don’t guess where things are or what things are in the blueprint…deploy it prior. 

I didn’t actually study for the test prior to taking it. You may think….what the hell is wrong with you? I used to fix View all day every day when I was at VMware so I felt extremely confident since I used to be in support. The other part of that statement is wow there were things in support that I had fixed but I hadn’t actually implemented.The night before I would go through each part of the blueprint with a test Connection Server / Security Server. I would review each part of the blueprint and see how fast I could complete each portion and then move on from that. This test actually tests the broad range of things you can do in a View environment and should know how to do in an environment.

I was very surprised that my labs didn’t break like they had in previous tests. All of my problems were with the Pearson Vue workstations which were usually hard locks, slow internet, hard locks, and an odd comment lock issue.


  • Use this to determine what you don’t know: http://mylearn.vmware.com/register.cfm?course=187168
  • Build a lab environment and just run through the blueprint section by section to see how fast you can do it and learn what you don’t already know
  • Time Management
  • Submit Feedback to VMware! The comment button is there for a reason.It won’t hurt their feelings and it will help them understand the challenges that you face.
  • Don’t freak out if something bad happens in the exam. Raise your hand and let them know! They may give you additional time for their end being horrible.
  • Did you pass or not? I am still waiting on my results.

Let me know if you have any additional questions or feedback for me.



So a few weeks ago I attempted the VCAP5-DTD and I am on the fence about the whole ordeal. I will first say that I do not like any of the design exams as you generally have to stop thinking logically for some of the questions.

Here are a few materials that I used when I was studying:

Chris Bekket’s Study Guide

VMware’s Blueprint

VCAP5-DTD Design Simulator

Make sure that you go through this a few times because it helps with how they want the design questions laid out and how to handle a few of the infrastructure pieces

Implementing VMware Horizon View 5.2

  • I bought this book a while back and I went through it prior to this test and it was great even though it covers 5.2. Most if not all concepts are the same but you need to keep in mind that the configuration maximums have changed along with feature sets.

The product documentation is a great place to start digging in especially the architecture design guide

Make sure that your storage knowledge is up to par for this test and your underlying vsphere knowledge. I would also look at the Storage guide for View 5.1 and this is also covered in the book above.

It isn’t clear what version that this exam is on. This may not be a big deal when you are comparing 5.0 to 5.1 since the configuration maximums didn’t change but between 5.1 and 5.2 it is a totally different ball game. I finally caved and stuck to my guns and studied for it based on 5.1 since the exam is fairly old and VMware takes a good amount of time to upgrade their tests when new versions come out.