Inside System Center #2: OpsMgr Dashboarding – Show Notes

In this episode, we had a panel to discuss the host of dashboarding options for System Center 2012 R2 Operations Manager. This is a video podcast, so be sure to check out the demos of each vendor presented in this episode! 

Watch the episode at


Resources related to Savision courtesy of Cameron Fuller (@CFullerMVP)

Savision whitepaper: “Is OpsMgr Still relevant in the Cloud?::
Blog post series on OpsMgr and mobile: “Taking my OpsMgr with me”:
Blog post on the new Dashboards product: “Kicking the tires”:
Savision whitepaper: “The Road to the Cloud”: (not specifically mentioned but relevant to the conversation)

Squared Up

Resource links for Squared Up, courtesy of Tao Yang (@MrTaoYang)
Squared Up Perf Data:

Visio Dashboard for existing DA:

Collecting Data to OMS example (I think I mentioned it in the beginning):

Also, the Visio maps I used in the demo today can be downloaded for free from here:

Opslogix (ProView)

Resource links for Opslogix ProView, courtesy of Pete Zerger (@pzerger)

ProView homepage –

Getting Started Videos

Keep an eye out for new episodes of the Inside System Center podcast twice a month on the Inside Podcast Networks website at


Running Windows 8.1 Phone Emulator Outside of Visual Studio 2013 and 2015

I wanted to use the Windows Phone 8.1 Emulator for testing and demo without  Visual Studio 2013 or 2015 RC. So in this article, I have captured some details to supplement the available info found in miscellaneous (and now dated) blogs written for the Visual Studio 2012 time frame. Perhaps most significantly, we are going to install the Windows 8.1 update, which makes the experience MUCH nicer than the Windows Phone 8.0 Emulator (others have written about) when working outside Visual Studio. Please make sure you read all the way to the end, as there are a couple of phone navigation tips near the end you will want to know about.

Installation and Configuration

Note that I am running Windows 8.1 with the latest updates. You will almost certainly find this is equally applicable on Windows 10 as well.

The steps are as follows:

Make sure Hyper-V on your Windows 8.x or Windows 10 PC. The emulator is basically a VHD that runs as a Hyper-V VM.

Ensure that you have downloaded and installed the latest version of Windows Phone 8.0 SDK from –

Next, download and install the Windows Phone 8.1 Update and Emulators at

To launch the emulator from the command line, you will need the path to the xde.exe command line executable. The default path on my 64-bit Windows 8.1 system is “C:\Program Files (x86)\Microsoft XDE\8.1”. You can search for xde.exe on your system if the same is not true for you.

At a command prompt, change to the directory containing xde.exe mentioned in the previous step.

To launch with the default settings (512 MB memory, 640×480 resolution)
xde /vhd “C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.1\Emulation\Images\Flash.update1.vhd”

If you want greater resources (memory, screen resolution), you could use the following syntax, which will launch with 1 GB memory and 720 x 1280 screen resolution (really big!), which is great for demos.
XDE.exe /vhd “C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.1\Emulation\Images\Flash.update1.vhd” /video “720×1280” /memsize 1024 /language 409 /creatediffdisk “%Temp%\dd.720×1280.1024.vhd”  Continue reading “Running Windows 8.1 Phone Emulator Outside of Visual Studio 2013 and 2015”

Inside the MS Cloud Episode 5 – Azure IaaS v2 (resources and downloads)

In this episode, we do some show-and-tell with Azure Resource Manager, the next generation of template-based deployment for Microsoft Azure. If you are new to Azure IaaS v2, there is some how-to in this session you may find helpful.

Software Resources
The following are the software-related items mentioned in the show.

NOTE: A couple of viewers pointed out that you can use the FREE version of Visual Studio, Visual Studio Community Edition if you qualify. It is free for open source projects, academic research, training, education and small professional teams. If you fall into this category, you can get Visual Studio 2015 Community Edition at

Videos (Build and Ignite Sessions)
The following are the MS Build and Ignite Conference sessions mentioned in this episode:

Watch the Episode 
Video version of episode 5 available at


Enabling Notepad++ as an Editor for Azure Resource Manager Templates

When you begin working with Azure Resource Manager templates, you will immediately need a JSON  editor to work with the Azure Resource Manager template language. While your best option is Visual Studio (more on this in another post), it is not free and may not be an option if you do not have an MSDN subscription or generous employer. NOTE: Individuals, small teams, and others who qualify can also use Visual Studio Community Edition, which is free for non-commercial use or open source projects, academic research, training, education. More on that at

One free option is to leverage Notepad++. While Notepad++ does not support JSON out-of-box, there is a fairly good JSON plug-in for Notepad++ available at You install this plug-in like most others for Notepad++…by simply copying a .dll to the \plugins folder and re-launch Notepad++.

Now you can open an existing template from the samples available online. To enable the functionality Notepad++ json plugin, start by selecting your json template with Control+A, or Edit–> Select All.

Then, select Plugins –> JSON Viewer –> Show JSON Viewer.








This will parse the template and present it in the JSON Viewer in a left navigation pane.













While this is not ideal, it does provide some basic functionality for validating JSON syntax as you piece together new deployments from existing ARM JSON templates.

Inside the MS Cloud Episode 4 – Hybrid Identity with EMS

If you are interested in learning more about Microsoft’s Enterprise Mobility Suite, and come spend an hour with Azure expert and PowerShell automation Guru Wes Kroesbergen. Wes works with SoftChoice, billion dollar+ LAR, where he specializes in EMS deployment for clients of all sizes.

When it comes to EMS, my buddy Wes knows his stuff! He brings both technical expertise and real-world experience to what I think was an interesting session.

Watch epdisode 4 at

Inside System Center Podcast #1- Show Notes

In this episode of “Inside System Center”, we discuss the announcements around System Center 2016 and pondered the future of Microsoft’s management stack based on announcements from MS Ignite 2015 in Chicago. If you are not yet up to speed on the technical details behind the latest announcements from the Ignite conference, this is one you should listen to.

Podcast Download Details

Audio only edition at

You can find the video version of episode 1 of Inside System Center at

Show Notes

In short, the announcements in Chicago show us the System Center team has charted a long term course for a cloud called Azure. No doubt the journey will be interesting.

Below are a few of the key resources mentioned in the podcast that will bring you up to speed quickly.

Windows Server & System Center Futures—Bring Azure to your Datacenter (Platform Vision & Strategy)

Introducing Microsoft Operations Management Suite 

Now Available – System Center 2016 Technical Preview 2

System Center 2016 Tech Preview 2 Released

System Center Orchestrator Migration Toolkit

Microsoft Azure Stack with a strong ARM

Azure IaaS for Azure Stack

Sample Azure Automation Runbooks from My #MVPvConf Session

I’ve had some requests for the Azure Automation runbooks I used in my Azure Automation webhooks demo in my MVP Virtual Conference session. To ensure they are easily accessible, I have published them to the Microsoft Technet Gallery. The runbook titles and links are listed below.

Start All VMs in Specified Azure Resource Group

Stop All VMs in Specified Azure Resource Group

The session recording should be available on the Channel 9 website ( in the next few days.

Quick Tip: Using Azure Resource Manager PowerShell Cmdlets in Azure Automation

This tip addresses a problem you are sure to have if attempting to work with the Azure Resource Manager (ARM) PowerShell cmdlets within Azure Automation in May 2015. I should preface by sharing that I believe this situation may change as the story evolves with Azure Resource Manager (ARM) and PowerShell, as the Azure Automation team may still be working on optimizing the user experience.

The Problem

When you attempt to use Get-AzureVM and some other cmdlets in the ARM PowerShell module, they fail due to incorrect parameters. If like me, you test your runbooks in Visual Studio or the PowerShell ISE before copying into Azure Automation, this error will be confusing.

There are two issues here:

  • The ARM PowerShell module is not present in Azure Automation by default.
  • The ARM cmdlets (which support much of the Azure IaaS v2 functionality announced at Build and MS Ignite, such as JSON deployment templates) and the Azure Service Management cmdlets (used in most Azure IaaS v1 operations) functionality have cmdlets with the same names, but different parameters.

Step 1: Zip and Import the Azure Resource Manager PowerShell Module

If you installed the latest Azure PowerShell cmdlets, the default path on a 64-bit OS (as of May 2015) is shown below.

C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager

Zip up this directory and all the files and folders in it, which will include AzureResourceManager.psd1. As you zip the folder, the file name should default to

Step 2: Upload the Module to Azure Automation

To upload the ARM PowerShell module in the Azure Preview Portal, which is designed to support the new Azure IaaS v2 capabilities, perform the following steps:

1) Login to the Azure Preview Portal at
2) Select Browse from the left navigation pane.
3) Then select Automation Accounts, followed by your Azure Automation account.
4) Next, click on Assets, then Modules
5) Click on Add a module and browse to the zip file containing the ARM module you zipped in the previous task.
6) Select Open, then OK to upload.


Give Azure Automation a few minutes to consume the module and extract the cmdlets. You will see a message in the Notifications area when the operation is complete.

New Problem

Once you upload the ARM PowerShell module, you have a new problem: the ARM and Azure Service Management (ASM) PowerShell modules have quite a few key cmdlets with the same names. Since the ASM cmdlets are present by default, those cmdlets seem to be called first, even after you have uploaded the ARM module to your Azure Automation subscription.

Workaround: Specify the path when calling ARM cmdlets

This simply means that when you wish to call a cmdlet in the ARM PowerShell Module, you must specify the path, like so


So to call Start-AzureVM from the ARM PowerShell module, you would type AzureResourceManager\Get-AzureVM

To see a working illustration of this concept, you can view and use a sample runbook I provided in the Microsoft Technet Gallery at the URL below:

I hope this helps. If you’ve encountered other challenges working with the ARM cmdlets and Azure IaaS v2 in Azure Automation, I would be interested to hear about your experience in the Comments section below.

Inside the Microsoft Cloud Podcast #1 – Show Notes

It’s official, we have just finished recording episode 1 of the Inside the Microsoft Cloud Podcast! We kicked things off with a recap of the a announcements from the Microsoft Build conference last week, along with a look at what to expect from the Microsoft Ignite conference in Chicago this week.

Watch the podcast on YouTube at Show notes are below.

Build Announcements

Build Day 1

Build Day 2


MVP Virtual Summit

Surface Pro 4 Rumor Mill

Git Integration

GitHub Integration

MS Announcement

The E-Book

Git Integration for Visual Studio

Git Integration for PowerShell ISE

Automating Dev Box Creation


JSON (JavaScript Object Notation)

Azure IaaS Templates


Cinco de Mayo

How to stop and start Azure VMs in bulk

Starting and stopping Azure VMs in bulk is pretty easy in PowerShell, but you want to filter your VMs based on the correct property. VMs have a Status property that includes StoppedDeallocated, Stopped, RoleReady, etc. If you are attempting to identify VMs based on status, your PowerShell will have to write your script to filter on multiple criteria.

A better option is to use the PowerState property. Your VMs are going to have a PowerState of “Started” or “Stopped”, so turning them on (or off) in bulk based on this property is quite simple. You could take these one-liners into simple Windows scheduled tasks to turn your development and test environments down after quitting time and bring them back online before the team gets into the office the next morning, reducing your Azure spend on non-production compute resources.

Below are a handful of one-liners and a description of the nuances of each.

This first one-liner will shut down every VM in your subscription, but you will be prompted on the last / only VM in a cloud service with an “continuing will result in a new IP address for your deployment” message, and further direction that using the -StayProvisioned parameter will ensure your VM will keep it’s IP address. However, when you use that parameter, the VM remains provisioned, so you also keep getting billed. For test and dev environments, dynamic DNS registration and short time-to-live (TTL) on DNS records should be good enough to allow you to simply shutdown and deallocate to save dollars.

Get-AzureVM |  Where-Object {$_.powerstate -eq ‘Started’} | Stop-AzureVM

If you add the -Force parameter to the end of the one-liner (as shown below), the VMs are stopped and deallocated (meaning you are only being billed for the storage they consume) without the prompt.

Get-AzureVM |  Where-Object {$_.powerstate -eq ‘Started’} | Stop-AzureVM -Force

Replace the -Force parameter with -StayProvisioned as shown below and the annoying prompt is still avoided, but your VMs wind up in with a status of “Stopped” instead of “StoppedDeallocated”. This means the VMs will come back online with the same IP address, but the billing does not stop between power off and the next power on.

Get-AzureVM |  Where-Object {$_.powerstate -eq ‘Started’} | Stop-AzureVM -StayProvisioned

To start the VMs up again, you can simply reverse the flow with a couple of small changes, as shown below.

Get-AzureVM |  Where-Object {$_.powerstate -eq ‘Stopped’} | Start-AzureVM

Naturally, you can add multiple criteria to the Where-Object filtering to filter based on VM name, cloud service name and other properties to shut down specific subsets of your VMs. In a future post we will look at scheduled tasks, time-based actions and moving this process into Azure’s PowerShell Workflow based orchestration engine, Azure Automation.