Prepping for Azure Exam 70-533/Learning from 20533—Pulling My Head Out

I’ve decided I need to become better/more comfortable with Azure. Like it or not, it’s probably not going anywhere. I can either stick my head in the ground or get with the program. I’ve kind of been stalling, so I think it’s time I took the latter option. Adapt or die. So I’m going to tackle the new Azure Infrastructure exam, 70-533.

Earlier this week Microsoft released course 20533-Implementing Microsoft Azure Infrastructure Solutions, so I’m going to use that, along with the links from the blog entry from a few days ago, as my starting point. As I go through the process of learning about Azure and preparing for this exam I will share some of my thoughts on the course and eventually the exam here. I’m not sure how long this is going to take, nor how many entries I’ll make, but the hardest part is always the starting.

So away we go . . .

First Things First

Like I do for any exam that I want to pass I start out by reviewing the official exam page, which you can find here. While Microsoft has made the shift back to more closely aligning courses to exams, it still isn’t a perfect match and at the end of the day, what is on the exam details page is what matters if you’re sitting the exam. A quick look at this one shows me that the exam topics are broken into the six broad categories listed below Without doing much digging yet, I can already see that my experience with virtualization and with IIS should put me in good stead, at least at a foundational level. I’ve been using AD since before it was called AD, so I should be in decent shape there as well. I suspect that I’m going to need to spend a more time dealing with the cloud services and virtual networking sections. Time will tell, but that’s my first impression.


Exam Categories

  • Implement websites
  • Implement virtual machines
  • Implement cloud services
  • Implement storage
  • Implement an Azure Active Directory
  • Implement virtual networks

Normally at this point in time I might go and have a look to see if MeasureUp or SelfTestSoftware have any official sample exams that might be of use to me. (I know that there is quite a bit of debate over the use and value of sample exams, as well as whether or not it is “fair” to use them. A detailed discussion of that topic is probably a post for another day, but I will say this: If they are useful to you, and they are from a legitimate, authorized source (i.e. no braindumps), then I have no problem with using them as PART of your exam preparation. They don’t replace knowing the product/technology being tested, but they can help you make sure you know it in THE WAY that you need to know it to be successful in the exam environment.) Given the relative newness of this exam and exam stream I’m guessing that neither of the authorized sample exam partners will have anything yet.

Two minutes later: Nope. No sample exams. To be honest I doubt that there will ever be any from either of these partners. There are Microsoft exams that have a broader audience than the Azure exams likely will have (at least at the moment) that have been out for years that don’t have any sample exams from these providers. Little obscure products like Lync 2013, Exchange 2013 and SharePoint 2013. Perhaps you’ve heard of them . . . But I digress . . .

I’ve gotten my copy of the 20533 course materials, and now I’m ready to quickly compare the course objectives to the exam objectives. The quick onceover looks about as I expected, at least at a surface level they seem to be reasonably well-aligned. I won’t really know until I start to dig in.

Bring on the Azure!

Advertisements

Using PowerShell to Register MOC VMs

A few weeks ago my friend Telmo blogged about a very elegant solution for handling the VMs that MOC courses use. I was really impressed with what he came up with.  If you are an MCT then I would definitely recommend reading that post. Thanks Telmo!

You can find it here: http://telmosampaio.wordpress.com/2013/09/01/bulk-import-vms-for-moc-classes

That made me think about some simpler scripts that I have written that may also be of use for registering VMs for any environment. I did make some tweaks to use it specifically for registering MOC VMs, but these scripts are easily portable for any environment where you want or need to bulk import VMs.

The code below gives you a script that will do two main tasks:

1. Create some standardized private virtual switches in Hyper-V. The names match the names that the vast majority of MOC VMs use. So there are more switches in there than you would likely need, but it is easily adjusted to modify the name and number of switches being created.

2. Enumerate and import all the VMs that are found in a given path. For this to work you need to feed the name of the parent folder path where all of the VMs reside. If you forget to specify a path when you run the script, there is a basic inline help that is triggered explaining the syntax.
I put a 5 second delay between each import. I have found that if I don’t then I sometimes get strange errors on the VM imports. It feels like the script is running faster than the Hyper-V administration services can process the requests. When I put in a 5 second delay, that problem basically disappears.

I’ve put the code in here twice, one version for Windows 2008 (& R2) Hyper-V servers and a version that will run on Windows Server 2012.

Windows Server 2008 Hyper-V
(requires that the Hyper-V PowerShell module from codeplex has been installed. I didn’t get fancy by doing a check, I just load it up in the first line.)

import-module HyperV
If (!$args){
” “
“Usage of the script is as follows:”
“<path>\importvm.ps1 <VM parent folder>”
” “
“<VM Parent folder> is the path to the directory that holds the Hyper-V virtual machine directories.”
“This script will automatically register all VMs that are in that path and create two private virtual switches if required.”
}
else{
#Create the private network switches
“Create the ‘Private Network’ and ‘Private Network 2’ virtual switches if required”
$switchlist = get-vmswitch | where {$_.Name -ilike “Private Network*”}
If (!$switchlist){
new-vmprivateswitch “Private Network”
“Private Network has been created.”
new-vmprivateswitch “Private Network 2”
“Private Network 2 has been created”
new-vmprivateswitch “Private Network A”
“Private Network Ahas been created.”
new-vmprivateswitch “Private Network B”
“Private Network B has been created”
}
else{
“Private Network switches may already exist. Confirm that the one you require is in the list below.”
“If it is not, you may need to create it manually.”
$switchlist
}
#List the folders in the Drives directory for the course and map them to an array.
$vms = get-childitem $args | where {$_.mode -eq “d—-“}
#Parse the array and import each VM
foreach ($vm in $vms){
import-vm -path $vm.FullName
start-sleep -Seconds 5
}
get-vm | format-table Name,State,Status -AutoSize

}

Windows Server 2012

If (!$args)
{
” “
“Usage of the script is as follows:”
“<path>\importvm.ps1 <VM parent folder>”
” “
“<VM Parent folder> is the path to the directory that holds the Hyper-V virtual machine directories.”
“This script will automatically register all VMs that are in that path and create two private virtual switches if required.”
}
 
else
{
#Create the private network switches
“Create the Microsoft Learning virtual switches if required”
$switchlist = get-vmswitch -SwitchType Private | where {$_.Name -ilike “Private Network*”}
If (!$switchlist)
{
new-vmswitch “Private Network” -SwitchType Private
“Private Network has been created.”
new-vmswitch “Private Network 2” -SwitchType Private
“Private Network 2 has been created.”
new-vmswitch “Private Network A” -SwitchType Private
“Private Network A has been created.”
new-vmswitch “Private Network B” -SwitchType Private
“Private Network B has been created.”
}
else
{
“Private Network switches may already exist. Confirm that the one you require is in the list below.”
“If it is not, you may need to create it manually.”
$switchlist
}
#List the folders in the Drives directory for the course and map them to an array.
$vms = Get-ChildItem $args -Recurse | where Name -ilike “*.exp”
 
#Parse the array and import each VM
foreach ($vm in $vms)
{
“`nImporting {0}” -f $VM.FullName
import-vm -path $vm.FullName
start-sleep -Seconds 5
}
 
get-vm | format-table Name,State,Status -AutoSize
 
 
}
 

Hopefully, this will get you started down the path to scripting more of your common Hyper-V tasks.

Cheers,

James