Saturday, 9 May 2020

The WVD Log in process and Active Directory topologies explained

Working at Microsoft as a Windows Virtual Desktop Global Black Belt, a couple of question that I often get asked is "what Active Directory topologies does Windows Virtual Desktop support?", and "how does the user login process work"? This article should hopefully answer both for you.

The TL DR answer is that WVD does not impose any specific Active Directory topology requirements of its own, and will work in any supported topology that you have deployed. However, there are some things that you need to consider when designing a WVD deployment.

As it stands today, access into the Windows Virtual Desktop service and onto the WVD session host, requires authenticating firstly against Azure Active Directory (AAD) and secondly against either Active Directory (AD DS) or Azure Active Directory Domain Services (AAD DS). In addition, there is a service called the "Identity Matching" service that ensures that the actual user is the same person logging in at both points.

The highest level requirement is that the user accounts need to be in both AD and AAD.

Tuesday, 5 May 2020

Visually presenting Windows Virtual Desktop monitoring information in Power BI

This article has sat in my drafts for over a month, only getting very infrequent updates. But I am getting lots of questions from customers on this so decided to just finish it now, particularly as our new "Spring Release" has entered public preview.

The question I get asked frequently is "how do I visualise Windows Virtual Desktop logging and monitoring information"?

So a new PaaS role of Windows Virtual Desktop has been the new Diagnostics service, from which you can get a whole host of - well, diagnostics. As part of the Spring Release of Windows Virtual Desktop we have now made it easier to connect every Windows Virtual Desktop ARM object to three services for the storage of those diagnostics - more on that later. One of those three services: Log Analytics can be easily integrated with another service called Power BI for the visualisation of a whole host of data sources. The official Windows Virtual Desktop documentation on this is here.

This article discusses how to create a Log Analytics Workspace, how to connect the Windows Virtual Desktop ARM objects and how to integrate Log Analytics with Power BI to visualise that data. This article assumes you know about Windows Virtual Desktop already, and is written in the context of the Spring 2020 release.

Thursday, 30 April 2020

Windows Virtual Desktop Spring Update enters Public Preview

On the 30th of April the Spring Update Release of Windows Virtual Desktop (WVD) entered Public Preview.

This means anyone can go to the Azure Portal and deploy a WVD Workspace and test the new capability. This article discusses the new updates and capabilities in this new release, as well as changes and other items you need to consider when deploying Spring Update WVD deployments.

"Spring Update"

First thing - the name, "Spring Update". WVD is now a first class Azure service (more on that below). Azure does not have versions. It is a platform that gets constant updates continually dropped in. This is the same with WVD. As such this is the set of updates being applied in the Spring. WVD receives many continuous updates, however major changes such as this shift to ARM are bundled into a larger periodical update. Expect future continuous updates to be dropped into platform in the future in a similar manner, with some larger updates getting some kind of seasonal naming.

WVD is now an ARM service

Up to this point WVD has not been an Azure Resource Manager service. But rather the WVD objects have all existed within a separate database. With the Spring Update all WVD objects now are ARM resources in their own right. Azure Resource Manager is the service that sits between the user and the underlying Azure Fabric and is responsible for the provisioning and management of all Azure services. This is achieved by "Resource Providers". Each Azure service has a resource provider i.e. Compute Resource Provider, that ARM can interact with to construct a Virtual Machine for example. More information on ARM is here.

Monday, 30 March 2020

How to deploy Linux in WVD when you can't deploy Linux in WVD

In my role as a Windows Virtual Desktop Global Black Belt at Microsoft working with customers deploying WVD, I often get asked can we deploy Linux in WVD?

The answer is no, but yes.

The official answer is we don't support Linux. In fact, this is the official list of operating systems that we support:

So how can you run Linux in WVD?
Well this is a feature of Azure and Windows 10, not specifically WVD.

Tuesday, 17 March 2020

What are the top methods to deploy, expand or update a Windows Virtual Desktop Host Pool

Due to the Covid-19 pandemic we are seeing a significant increase in working from home, as well as massive demand for new Windows Virtual Desktop host pools where organisations are increasing the infrastructure footprint in order to support these additional users.

You may well be being asked to either deploy new WVD Host pools or more likely expand host pools you already have with new Session Host VM's. You will also likely be considering, how do I update the Session host VM's in my host pool with new VM's after I update my image?

We have a number of ways to deploy, expand and update WVD host pool, and this post simply brings those together into one place, to make it easy for you to make a choice of which one works best for you.

This guide is split into three sections:

  • Section 1 - Deploying a new host pool
  • Section 2 - Expanding (scaling out) an existing host pool.
  • Section 3 - Updating or replacing session hosts in an existing host pool.

This lists them in terms of simplicity to deploy.

How to deploy a Windows Virtual Desktop host pool using Infrastructure as code from Azure DevOps

If like me you have come from an infrastructure background and always built servers, virtual machines etc. manually, then the thought of doing all that hard work via code does not always come naturally.

Building out a gold image was a time intensive process with lots of manual steps plus deploying that at scale needed tools like Citrix MCS, or tools within the Hypervisor or others.

But if you have done anything in the public cloud you will have heard of “Infrastructure as Code! and if you have done anything in Azure then you will likely have heard of Azure DevOps, which provides people to have continuous integration, testing and delivery, the ability to deploy code, or whole applications with the press of a button.

But how can this apply to a Virtual Desktop capability when you are deploying hundreds or thousands of Azure IaaS VM's as part of a Windows Virtual Desktop deployment? Well not coming from a development background, but working at Microsoft as a Windows Virtual Desktop Global Black Belt, and importantly always hearing about Azure DevOps I thought it was time to see how one could use ADO to automate the steps that have always been somewhat manual but were nonetheless always required when doing large virtual desktop deployments.

There must be a way to bring the power of DevOps to the Virtual Desktop capability, I thought. Turns out there is and in fact there are multiple ways. Hence this article is designed for traditional Infrastructure people to learn the basics - (genuinely the basics here - there is a lot more to learn) to deploy that infrastructure via code - repeatedly.

This is not an exclusive work but rather a community effort with lots of information I have compiled from various sources, in particular, thanks to Jack Rudin whose article on this is really the main basis for this.

This article makes the massive assumption that you are an EUC expert with an Infrastructure background and you already know WVD and the ways that you can deploy a host pool, and the plumbing required for this, including having a WVD Service Principal. However, it assumes that you don't know much about DevOps.

Monday, 2 March 2020

Create a corporate URL for the Windows Virtual Desktop Website, Part 2 Azure Front Door

In Part one of this topic I showed how you could redirect a corporate URL to the WVD URL, so that your users would only need to remeber or bookmark a familar URL. That was using a few lines of code and an Azure Function app:

This post shows how to acheive the same thing but using Azure Front Door to do so.

To set this up in Azure Front Door then follow these steps.

The first requirement is to have a Web App. If your just starting follow this simple guide and create yourself a free F1 App Service Plan.

Once that is created copy the URL for your web and then you can now create your Azure Front Door and URL Redirect Rule.

In Add a Resource in the Azure portal search for Front Door
Click on Create, choose or create a Resource Group

Thursday, 13 February 2020

Create a corporate URL for the Windows Virtual Desktop Website, Part 1 Azure Function App

The current Windows Virtual Desktop HTML5 client is currently accessed using a Microsoft URL which is reasonably long and also is the exact same for every customer:

This isn't ideal if you work for an enterprise and want your users to be using a corporate URL in order to access what are corporate applications and data from the Windows Virtual Desktop service.

What would be better is to use a URL that looks something like

There are two very simple methods to achieve this, the first is using an Azure Function App, the second is to use Azure Front Door - more details on AFD are at the end of this article.

An Azure Function App will require a tiny bit of code but can be free to use, whilst Azure Front door does not require any coding at all for this capability, but will always have a cost.

This article describes how to do this using a Function App, and will guide you through how to set this up. One of the great things about Function Apps is that the first 1,000,000 executions are free which is very handy.

First thing you will need is an Azure Subscription and have access to your corporate DNS in order to create a CNAME record.

A Function App is a serverless application that allows you to run small pieces of code without the need for any infrastructure.

Wednesday, 22 January 2020

How to dynamically update session hosts in an existing host pool

Do you have an existing Windows Virtual Desktop where you want to replace the session host virtual machines with new images? 

You could build a new host pool with the new session host VM's and present the new icon to users and get them to test and then switch them over. That's not ideal as users need to launch this new desktop which could lead to confusion. 

However what you can now do is use an "update" ARM template to dynamically replace the VM's in the existing host pool with no other changes being made to it and no or very little user interaction. 

This template actually builds any number of new session hosts into the same host pool, and then will either deallocate or delete the existing VM's. If you choose delete it will delete the VM's and related storage which means there will be no residual costs related to the VM's. It also deletes all other infrastructure components. It will also send a message to all conencted user sessions.

Have a look at this video which goes through the process: 

The ARM template is stored in this Github repo.