Azure Virtual Desktop
Azure Virtual Desktop
Azure Virtual Desktop is a desktop and app virtualization service that runs on the cloud.
Here's what you can do when you run Azure Virtual Desktop on Azure:
Set up a multi-session Windows 10 deployment that delivers a full Windows 10 with scalability
Virtualize Microsoft 365 Apps for enterprise and optimize it to run in multi-user virtual scenarios
Provide Windows 7 virtual desktops with free Extended Security Updates
Bring your existing Remote Desktop Services (RDS) and Windows Server desktops and apps to any
computer
Virtualize both desktops and apps
Manage Windows 10, Windows Server, and Windows 7 desktops and apps with a unified management
experience
Introductory video
Learn about Azure Virtual Desktop, why it's unique, and what's new in this video:
https://www.youtube.com/embed/NQFtI3JLtaU
For more videos about Azure Virtual Desktop, see our playlist.
Key capabilities
With Azure Virtual Desktop, you can set up a scalable and flexible environment:
Create a full desktop virtualization environment in your Azure subscription without running any gateway
servers.
Publish as many host pools as you need to accommodate your diverse workloads.
Bring your own image for production workloads or test from the Azure Gallery.
Reduce costs with pooled, multi-session resources. With the new Windows 10 Enterprise multi-session
capability, exclusive to Azure Virtual Desktop and Remote Desktop Session Host (RDSH) role on Windows
Server, you can greatly reduce the number of virtual machines and operating system (OS) overhead while
still providing the same resources to your users.
Provide individual ownership through personal (persistent) desktops.
You can deploy and manage virtual desktops:
Use the Azure portal, Azure Virtual Desktop PowerShell and REST interfaces to configure the host pools,
create app groups, assign users, and publish resources.
Publish full desktop or individual remote apps from a single host pool, create individual app groups for
different sets of users, or even assign users to multiple app groups to reduce the number of images.
As you manage your environment, use built-in delegated access to assign roles and collect diagnostics to
understand various configuration or user errors.
Use the new Diagnostics service to troubleshoot errors.
Only manage the image and virtual machines, not the infrastructure. You don't need to personally manage
the Remote Desktop roles like you do with Remote Desktop Services, just the virtual machines in your Azure
subscription.
You can also assign and connect users to your virtual desktops:
Once assigned, users can launch any Azure Virtual Desktop client to connect to their published Windows
desktops and applications. Connect from any device through either a native application on your device or the
Azure Virtual Desktop HTML5 web client.
Securely establish users through reverse connections to the service, so you never have to leave any inbound
ports open.
Requirements
There are a few things you need to set up Azure Virtual Desktop and successfully connect your users to their
Windows desktops and applications.
We support the following operating systems, so make sure you have the appropriate licenses for your users
based on the desktop and apps you plan to deploy:
OS REQ UIRED L IC EN SE
Windows 10 Enterprise multi-session or Windows 10 Microsoft 365 E3, E5, A3, A5, F3, Business Premium
Enterprise Windows E3, E5, A3, A5
Windows 7 Enterprise Microsoft 365 E3, E5, A3, A5, F3, Business Premium
Windows E3, E5, A3, A5
Windows Server 2012 R2, 2016, 2019, 2022 RDS Client Access License (CAL) with Software Assurance
Your infrastructure needs the following things to support Azure Virtual Desktop:
An Azure Active Directory.
A Windows Server Active Directory in sync with Azure Active Directory. You can configure this using Azure
AD Connect (for hybrid organizations) or Azure AD Domain Services (for hybrid or cloud organizations).
A Windows Server AD in sync with Azure Active Directory. User is sourced from Windows Server AD
and the Azure Virtual Desktop VM is joined to Windows Server AD domain.
A Windows Server AD in sync with Azure Active Directory. User is sourced from Windows Server AD
and the Azure Virtual Desktop VM is joined to Azure AD Domain Services domain.
An Azure AD Domain Services domain. User is sourced from Azure Active Directory, and the Azure
Virtual Desktop VM is joined to Azure AD Domain Services domain.
An Azure subscription, parented to the same Azure AD tenant, that contains a virtual network that either
contains or is connected to the Windows Server Active Directory or Azure AD DS instance.
User requirements to connect to Azure Virtual Desktop:
The user must be sourced from the same Active Directory that's connected to Azure AD. Azure Virtual
Desktop does not support B2B or MSA accounts.
The UPN you use to subscribe to Azure Virtual Desktop must exist in the Active Directory domain the VM is
joined to.
The Azure virtual machines you create for Azure Virtual Desktop must be:
Standard domain-joined or Hybrid AD-joined. Azure AD-joined virtual machines are available in preview.
Running one of the following supported OS images.
NOTE
If you need an Azure subscription, you can sign up for a one-month free trial. If you're using the free trial version of
Azure, you should use Azure AD Domain Services to keep your Windows Server Active Directory in sync with Azure Active
Directory.
For a list of URLs you should unblock for your Azure Virtual Desktop deployment to work as intended, see our
Required URL list.
Azure Virtual Desktop includes the Windows desktops and apps you deliver to users and the management
solution, which is hosted as a service on Azure by Microsoft. Desktops and apps can be deployed on virtual
machines (VMs) in any Azure region, and the management solution and data for these VMs will reside in the
United States. This may result in data transfer to the United States.
For optimal performance, make sure your network meets the following requirements:
Round-trip (RTT) latency from the client's network to the Azure region where host pools have been deployed
should be less than 150 ms. Use the Experience Estimator to view your connection health and recommended
Azure region.
Network traffic may flow outside country/region borders when VMs that host desktops and apps connect to
the management service.
To optimize for network performance, we recommend that the session host's VMs are located in the Azure
region that is closest to the user.
You can see a typical architectural setup of Azure Virtual Desktop for the enterprise in our architecture
documentation.
IMPORTANT
Azure Virtual Desktop doesn't support the RemoteApp and Desktop Connections (RADC) client or the Remote Desktop
Connection (MSTSC) client.
To learn more about URLs you must unblock to use the clients, see the Safe URL list.
Next steps
If you're using Azure Virtual Desktop (classic), you can get started with our tutorial at Create a tenant in Azure
Virtual Desktop.
If you're using the Azure Virtual Desktop with Azure Resource Manager integration, you'll need to create a host
pool instead. Head to the following tutorial to get started.
Create a host pool with the Azure portal
What's new in Azure Virtual Desktop?
3/7/2022 • 36 minutes to read • Edit Online
Azure Virtual Desktop updates regularly. This article is where you'll find out about:
The latest updates
New features
Improvements to existing features
Bug fixes
This article is updated monthly. Make sure to check back here often to keep up with new updates.
Client updates
Check out these articles to learn about updates for our clients for Azure Virtual Desktop and Remote Desktop
Services:
Windows
macOS
iOS
Android
Web
FSLogix updates
Curious about the latest updates for FSLogix? Check out What's new at FSLogix.
February 2022
Here's what changed in February 2022:
Network data for Azure Virtual Desktop user connections
You now collect network data (both round trip time and available bandwidth) throughout a user’s connection in
Azure Virtual Desktop with Azure Log Analytics. For more information, see our blog post.
Unassigning and reassigning personal desktops now generally available
The feature that lets you reassign or unassign personal desktops is now generally available. You can unassign or
reassign desktops using the Azure portal or REST API. For more information, see our blog post.
Teams media optimizations for macOS now in public preview
Teams media optimizations for redirecting audio and video during calls and meetings to a local macOS machine
are now in public preview. To use this feature, you'll need to update your Azure Virtual Desktop macOS client to
version 10.7.7 or later. For more information, see our blog post or Use Microsoft Teams on Azure Virtual
Desktop.
January 2022
Here's what changed in January 2022:
FSLogix version 2201 public preview
FSLogix version 2201 is now in public preview. For more information, see our blog post or the FSLogix release
notes.
Migration tool now generally available
The PowerShell commands that migrate metadata from Azure Virtual Desktop (classic) to Azure Virtual Desktop
are now generally available. To learn more about migrating your existing deployment, see Migrate automatically
from Azure Virtual Desktop (classic) or our blog post.
Increased application group limit
We've increased number of Azure Virtual Desktop application groups you can have on each Azure Active
Directory (Azure AD) tenant from 200 to 500. For more information, see our blog post.
Updates to required URLs
We've updated the required URL list for Azure Virtual Desktop to accomodate Azure Virtual Desktop agent
traffic. For more information, see our blog post.
December 2021
Here's what changed in December 2021:
Azure portal updates
You can now automatically create trusted launch virtual machines through the host pool creation process
instead of having to manually create and add them to a host pool after deployment. To access this feature, select
the Vir tual machines tab while creating a host pool. Learn more at Trusted launch for Azure virtual machines.
Azure Active Directory Join VMs with FSLogix profiles on Azure Files
Azure AD-joined session hosts for FSLogix profiles on Azure Files in Windows 10 and 11 multi-session is now in
public preview. We've updated Azure Files to use a Kerberos protocol for Azure AD that lets you secure folders in
the file share to individual users. This new feature also allows FSLogix to function within your deployment
without an Active Directory Domain Controller. For more information, check out our blog post.
Azure Virtual Desktop pricing calculator updates
We've made some significant updates to improve the Azure Virtual Desktop pricing experience on the Azure
pricing calculator, including the following:
You can now calculate costs for any number of users greater than zero.
The calculator now includes storage and networking or bandwidth costs.
We've added new info messages for clarity.
Fixed bugs that affected storage configuration.
For more information, see the pricing calculator.
November 2021
Here's what changed in November 2021:
Azure Virtual Desktop for Azure Stack HCI
Azure Virtual Desktop for Azure Stack HCI is now in public preview. This feature is for customers who need
desktop virtualization for apps that have to stay on-premises for performance and data security reasons. To
learn more, see our blog post and the Azure Virtual Desktop for Azure Stack HCI documentation.
Autoscale public preview
We're pleased to introduce the new autoscale feature, which lets you stop or start session hosts automatically
based on a schedule you set. Autoscale lets you optimize infrastructure costs by configuring your shared or
pooled desktops to only charge for the resources you actually use. You can learn more about the autoscale
feature by reading our documentation and watching our Azure Academy video.
Azure Virtual Desktop starter kit for Power Automate
Your organization can now use the Azure Virtual Desktop starter kit to manage its robotic process automation
(RPA) workloads. Learn more by reading our documentation.
Tagging with Azure Virtual Desktop
We recently released new documentation about how to configure tags for Azure Virtual Desktop to track and
manage costs. For more information, see Tag Azure Virtual Desktop resources.
October 2021
Here's what changed in October 2021:
Azure Virtual Desktop support for Windows 11
Azure Virtual Desktop support for Windows 11 is now generally available for single and multi-session
deployments. You can now use Windows 11 images when creating host pools in the Azure portal. For more
information, see our blog post.
RDP Shortpath now generally available
Remote Desktop Protocol (RDP) Shortpath for managed networks is now generally available. RDP Shortpath
establishes a direct connection between the Remote Desktop client and the session host. This direct connection
reduces dependency on gateways, improves the connection's reliability, and increases the bandwidth available
for each user session. For more information, see our blog post.
Screen capture protection updates
Screen capture protection is now supported on the macOS client and the Azure Government and Azure China
clouds. For more information, see our blog post.
Azure Active Directory domain join
Azure Active Directory domain join for Azure Virtual Desktop VMs is now available in the Azure Government
and Azure China clouds. Microsoft Endpoint Manager (Intune) is currently only supported in the Azure Public
cloud. Learn more at Deploy Azure AD-joined virtual machines in Azure Virtual Desktop.
Breaking change in Azure Virtual Desktop Azure Resource Manager template
A breaking change has been introduced into the Azure Resource Manager template for Azure Virtual Desktop. If
you're using any code that depends on the change, then you'll need to follow the directions in our blog post to
address the issue.
Autoscale (preview) public preview
Autoscale for Azure Virtual Desktop is now in public preview. This feature natively turns your virtual machines
(VMs) in pooled host pools on or off based on availability needs. Scheduling when your VMs turn on and off
optimizes deployment costs, and this feature also offers flexible scheduling options based on your needs. Once
you've configured the required custom Role-Based Access Control (RBAC) role, you can start configuring your
scaling plan. For more information, see Autoscale (preview) for Azure Virtual Desktop host pools.
September 2021
Here's what changed in September 2021.
Azure portal updates
You can now use Azure Resource Manager templates for any update you want to apply to your session hosts
after deployment. You can access this feature by selecting the Vir tual machines tab while creating a host pool.
You can also now set host pool, app group, and workspace diagnostic settings while creating host pools instead
of afterwards. Configuring these settings during the host pool creation process also automatically sets up
reporting data for Azure Virtual Desktop Insights.
Azure Active Directory domain join
Azure Active Directory domain join is now generally available. This service lets you join your session hosts to
Azure Active Directory. Domain join also lets you autoenroll into Intune as part of Microsoft Endpoint Manager.
You can access this feature in the Azure public cloud, but not the Government cloud or Azure China. For more
information, see our blog post.
Azure China
Azure Virtual Desktop is now generally available in the Azure China cloud. For more information, see our blog
post.
Automatic migration module tool
With the automatic migration tool, you can move your organization from Azure Virtual Desktop (classic) to
Azure Virtual Desktop with just a few PowerShell commands. This feature is currently in public preview, and you
can find out more at Automatic migration.
August 2021
Here's what changed in August 2021:
Windows 11 (Preview) for Azure Virtual Desktop
Windows 11 (Preview) images are now available in the Azure Marketplace for customers to test and validate
with Azure Virtual Desktop. For more information, see our announcement.
Multimedia redirection is now in public preview
Multimedia redirection gives you smooth video playback while watching videos in your Azure Virtual Desktop
web browser and works with Microsoft Edge and Google Chrome. Learn more at our blog post.
Windows Defender Application Control and Azure Disk Encryption support
Azure Virtual Desktop now supports Windows Defender Application Control to control which drivers and
applications are allowed to run on Windows virtual machines (VMs), and Azure Disk Encryption, which uses
Windows BitLocker to provide volume encryption for the OS and data disks of your VMs. For more information,
see our announcement.
Signing into Azure AD using smart cards are now supported in Azure Virtual Desktop
While this isn't a new feature for Azure AD, Azure Virtual Desktop now supports configuring Active Directory
Federation Services to sign in with smart cards. For more information, see our announcement.
Screen capture protection is now generally available
Prevent sensitive information from being screen captured by software running on the client endpoints with
screen capture protection in Azure Virtual Desktop. Learn more at our blog post.
July 2021
Here's what changed in July 2021:
Azure Virtual Desktop images now include optimized Teams
All available images in the Azure Virtual Desktop image gallery that include Microsoft 365 Apps for Enterprise
now have the media-optimized version of Teams for Azure Virtual Desktop pre-installed. For more information,
see our announcement.
Azure Active Directory Domain Join for Session hosts is in public preview
You can now join your Azure Virtual Desktop virtual machines (VMs) directly to Azure Active Directory (Azure
AD). This feature lets you connect to your VMs from any device with basic credentials. You can also automatically
enroll your VMs with Microsoft Endpoint Manager. For certain scenarios, this will help eliminate the need for a
domain controller, reduce costs, and streamline your deployment. Learn more at Deploy Azure AD joined virtual
machines in Azure Virtual Desktop.
FSLogix version 2105 is now available
FSLogix version 2105 is now generally available. This version includes improved sign-in times and bug fixes that
weren't available in the public preview version (version 2105). For more detailed information, you can see the
FSLogix release notes and our blog post.
Azure Virtual Desktop in China has entered public preview
With Azure Virtual Desktop available in China, we now have more rounded global coverage that helps
organizations support customers in this region with improved performance and latency. Learn more at our
announcement page.
The getting started feature for Azure Virtual Desktop
This feature offers a streamlined onboarding experience in the Azure portal to set up your Azure Virtual Desktop
environment. You can use this feature to create deployments that meet system requirements for automated
Azure Active Directory Domain Services the simple and easy way. For more information, check out our blog
post.
Start VM on connect is now generally available
The start VM on connect feature is now generally available. This feature helps you optimize costs by letting you
turn off deallocated or stopped VMs, letting your deployment be flexible with user demands. For more
information, see Start Virtual Machine on Connect.
Remote app streaming documentation
We recently announced a new pricing option for remote app streaming for using Azure Virtual Desktop to
deliver apps as a service to your customers and business partners. For example, software vendors can use
remote app streaming to deliver apps as a software as a service (SaaS) solution that's accessible to their
customers. To learn more about remote app streaming, check out our documentation.
From July 14th, 2021 to December 31st, 2021, we're giving customers who use remote app streaming a
promotional offer that lets their business partners and customers access Azure Virtual Desktop for no charge.
This offer only applies to external user access rights. Regular billing will resume on January 1st, 2022. In the
meantime, you can continue to use your existing Windows license entitlements found in licenses like Microsoft
365 E3 or Windows E3. To learn more about this offer, see the Azure Virtual Desktop pricing page.
New Azure Virtual Desktop handbooks
We recently released four new handbooks to help you design and deploy Azure Virtual Desktop in different
scenarios:
Application Management will show you how to modernize application delivery and simplify IT management.
In Disaster Recovery, learn how to strengthen business resilience by developing a disaster recovery strategy.
Get more value from Citrix investments with the Citrix Cloud with Azure Virtual Desktop migration guide.
Get more value from existing VMware investments with the VMware Horizon with Azure Virtual Desktop
migration guide.
June 2021
Here's what changed in June 2021:
Windows Virtual Desktop is now Azure Virtual Desktop
To better align with our vision of a flexible cloud desktop and remote application platform, we've renamed
Windows Virtual Desktop to Azure Virtual Desktop. Learn more at the announcement post in our blog.
EU, UK, and Canada geographies are now generally available
Metadata service for the European Union, UK, and Canada is now in general availability. These new locations are
very important to data sovereignty outside the US. For more information, see our blog post.
The Getting Started tool is now in public preview
We created the Azure Virtual Desktop Getting Started tool to make the deployment process easier for first-time
users. By simplifying and automating the deployment process, we hope this tool will help make adopting Azure
Virtual Desktop faster and more accessible to a wider variety of users. Learn more at our blog post.
Azure Virtual Desktop pricing calculator updates
We've made some significant updates to improve the Azure Virtual Desktop pricing experience on the Azure
pricing calculator, including the following:
We've updated the service name to Azure Virtual Desktop
We also updated the layout with the following new items:
A Storage section with both managed disk and file storage bandwidth
A custom section that shows cost-per-user
You can access the pricing calculator at this page.
Single Sign-on (SSO ) using Active Directory Federation Services (AD FS )
The AD FS single-sign on feature is now generally available. This feature lets customers use AD FS to give a
single sign-on experience for users on the Windows and web clients. For more information, see Configure AD FS
single sign-on for Azure Virtual Desktop.
May 2021
Here's what's new for May 2021:
Smart card authentication
We've now officially released the Key Distribution Center (KDC) Proxy Remote Desktop Protocol (RDP)
properties. These properties enable Kerberos authentication for the RDP portion of an Azure Virtual Desktop
session, which includes permitting Network Level Authentication without a password. Learn more at our blog
post.
The web client now supports file transfer
Starting with the public preview version of the web client, version 1.0.24.7 (preview), users can now transfer files
between their remote session and local computer. To upload files to the remote session, select the upload icon in
the menu at the top of the web client page. To download files, search for Remote Desktop Vir tual Drive in
the Start menu on your remote session. After you've opened your virtual drive, just drag and drop your files into
the Downloads folder and the browser will begin downloading the files to your local computer.
Start VM on connect support updates
Start VM on connect (preview) now supports pooled host pools and the Azure Government Cloud. To learn
more, read our blog post.
Latency improvements for the United Arab Emirates region
We've expanded our Azure control plane presence to the United Arab Emirates (UAE), so customers in that
region can now experience improved latency. Learn more at our Azure Virtual Desktop roadmap.
Ending Internet Explorer 11 support
On September 30th, 2021, the Azure Virtual Desktop web client will no longer support Internet Explorer 11. We
recommend you start using the Microsoft Edge browser for your web client and remote sessions instead. For
more information, see the announcement in this blog post.
Microsoft Endpoint Manager public preview
We've started the public preview for Microsoft Endpoint Manager support in Windows 10 Enterprise multi-
session. This new feature will let you manage your Windows 10 VMs with the same tools as your local devices.
Learn more at our Microsoft Endpoint Manger documentation.
FSLogix agent public preview
We have released a public preview of the latest version of the FSLogix agent. Check out our blog post for more
information and to submit the form you'll need to access the preview.
May 2021 updates for Teams for Azure Virtual Desktop
For this update, we resolved an issue that caused the screen to remain black while sharing video. We also fixed a
mismatch in video resolutions between the session client and the Teams server. Teams on Azure Virtual Desktop
should now change resolution and bit rates based on input from the Teams server.
Azure portal deployment updates
We've made the following updates to the deployment process in the Azure portal:
Added new images (including GEN2) to the drop-down list box of "image" when creating a new Azure Virtual
Desktop session host VM.
You can now configure boot diagnostics for virtual machines when creating a host pool.
Added a tool tip to the RDP proxy in the advanced host pool RDP properties tab.
Added an information bubble for the icon path when adding an application from an MSIX package.
You can no longer do managed boot diagnostics with an unmanaged disk.
Updated the template for creating a host pool in Azure Resource Manager so that the Azure portal can now
support creating host pools with third-party marketplace images.
Single sign-on using Active Directory Federation Services public preview
We've started a public preview for Active Directory Federation Services (AD FS) support for single sign-on
(SSO) per host pool. Learn more at Configure AD FS single sign-on for Azure Virtual Desktop.
Enterprise -scale support
We've released an updated section of the Cloud Adoption framework for Enterprise-scale support for Azure
Virtual Desktop. For more information, see Enterprise-scale support for the Azure Virtual Desktop construction
set.
Customer adoption kit
We've recently released the Azure Virtual Desktop Customer adoption kit to help customers and partners set up
Azure Virtual Desktop for their customers. You can download the kit here.
April 2021
Here's what's new for April:
Use the Start VM on Connect feature (preview) in the Azure portal
You can now configure Start VM on Connect (preview) in the Azure portal. With this update, users can access
their VMs from the Android and macOS clients. To learn more, see Start VM on Connect.
Required URL Check tool
The Azure Virtual Desktop agent, version 1.0.2944.400 includes a tool that validates URLs and displays whether
the virtual machine can access the URLs it needs to function. If any required URLs are accessible, the tool will list
them so you can unblock them, if needed. Learn more at our Safe URL list.
Updates to the Azure portal UI for Azure Virtual Desktop
Here's what changed in the latest update of the Azure portal UI for Azure Virtual Desktop:
Fixed an issue that caused an error to appear when retrieving the session host while drain mode is enabled.
Upgraded the Portal SDK to version 7.161.0.
Fixed an issue that caused the resource ID missing error message to appear in the User Sessions tab.
The Azure portal now shows detailed sub-status messages for session hosts.
April 2021 updates for Teams on Azure Virtual Desktop
Here's what's new for Teams on Azure Virtual Desktop:
Added hardware acceleration for video processing of outgoing video streams for Windows 10-based clients.
When joining a meeting with both a front facing camera and a rear facing or external camera, the front facing
camera will be selected by default.
Resolved an issue that made Teams crash on x86-based machines.
Resolved an issue that caused striations during screen sharing.
Resolved an issue that prevented meeting members from seeing incoming video or screen sharing.
MSIX app attach is now generally available
MSIX app attach for Azure Virtual Desktop has now come out of public preview and is available to all users.
Learn more about MSIX app attach at our TechCommunity announcement.
The macOS client now supports Apple Silicon and Big Sur
The macOS Azure Virtual Desktop client now supports Apple Silicon and Big Sur. The full list of updates is
available in What's new in the macOS client.
March 2021
Here's what changed in March 2021.
Updates to the Azure portal UI for Azure Virtual Desktop
We've made the following updates to Azure Virtual Desktop for the Azure portal:
We've enabled new availability options (availability set and zones) for the workflows to create host pools and
add VMs.
We've fixed an issue where a host with the "Needs assistance" status appeared as unavailable. Now the host
will have a warning icon next to it.
We've enabled sorting for active sessions.
You can now send messages to or sign out specific users on the host details tab.
We've changed the maximum session limit field.
We've added an OU validation path to the workflow to create a host pool.
You can now use the latest version of the Windows 10 image when you create a personal host pool.
Generation 2 images and Trusted Launch
The Azure Marketplace now has Generation 2 images for Windows 10 Enterprise and Windows 10 Enterprise
multi-session. These images will let you use Trusted Launch VMs. Learn more about Generation 2 VMs at Should
I create a generation 1 or 2 virtual machine. To learn how to provision Azure Virtual Desktop Trusted Launch
VMs, see our TechCommunity post.
FSLogix is now preinstalled on Windows 10 Enterprise multi-session images
Based on customer feedback, we've set up a new version of the Windows 10 Enterprise multi-session image that
has an unconfigured version of FSLogix already installed. We hope this makes your Azure Virtual Desktop
deployment easier.
Azure Monitor for Azure Virtual Desktop is now in General Availability
Azure Monitor for Azure Virtual Desktop is now generally available to the public. This feature is an automated
service that monitors your deployments and lets you view events, health, and troubleshooting suggestions in a
single place. For more information, see our documentation or check out our TechCommunity post.
March 2021 updates for Teams on Azure Virtual Desktop
We've made the following updates for Teams on Azure Virtual Desktop:
We've improved video quality performance on calls and 2x2 mode.
We've reduced CPU utilization by 5-10% (depending on CPU generation) by using hardware offload of video
processing (XVP).
Older machines can now use XVP and hardware decoding to display more incoming video streams smoothly
in 2x2 mode.
We've updated the WebRTC stack from M74 to M88 for better AV sync performance and fewer transient
issues.
We've replaced our software H264 encoder with OpenH264 (OSS used in Teams on the web), which
increased the video quality of the outgoing camera.
We enabled 2x2 mode for Teams Server for the general public on March 30. 2x2 mode shows up to four
incoming video streams at the same time.
Start VM on Connect public preview
The new host pool setting, Start VM on Connect, is now available in public preview. This setting lets you turn on
your VMs whenever you need them. If you want to save costs, you'll need to deallocate your VMs by configuring
your Azure Compute settings. For more information, check out our blog post and our documentation.
Azure Virtual Desktop Specialty certification
We've released a beta version of the AZ-140 exam that will let you prove your expertise in Azure Virtual
Desktop in Azure. To learn more, check out our TechCommunity post.
February 2021
Here's what changed in February 2021.
Portal experience
We've improved the Azure portal experience in the following ways:
Bulk drain mode on hosts in the session host grid tab.
MSIX app attach is now available for public preview.
Fixed host pool overview info for dark mode.
EU metadata storage now in public preview
We're now hosting a public preview of the Europe (EU) geography as a storage option for service metadata in
Azure Virtual Desktop. Customers can choose between West or North Europe when they create their service
objects. The service objects and metadata for the host pools will be stored in the Azure geography associated
with each region. To learn more, read our blog post announcing the public preview.
Teams on Azure Virtual Desktop plugin updates
We've improved video call quality on the Azure Virtual Desktop plugin by addressing the most commonly
reported issues, such as when the screen would suddenly go dark or the video and sound desynchronized.
These improvements should increase the performance of single-video view with active speaker switching. We
also fixed an issue where hardware devices with special characters weren't available in Teams.
January 2021
Here's what changed in January 2021:
New Azure Virtual Desktop offer
New customers save 30 percent on Azure Virtual Desktop computing costs for D-series and Bs-series virtual
machines for up to 90 days when using the native Microsoft solution. You can redeem this offer in the Azure
portal before March 31, 2021. Learn more at our Azure Virtual Desktop offer page.
networkSecurityGroupRules value change
In the Azure Resource Manager nested template, we changed the default value for networkSecurityGroupRules
from an object to an array. This will prevent any errors if you use managedDisks-customimagevm.json without
specifying a value for networkSecurityGroupRules. This wasn't a breaking change and is backward compatible.
FSLogix hotfix update
We’ve released FSLogix, version 2009 HF_01 (2.9.7654.46150) to solve issues in the previous release
(2.9.7621.30127). We recommend you stop using the previous version and update FSLogix as soon as possible.
For more information, see the release notes in What's new in FSLogix.
Azure portal experience improvements
We've made the following improvements to the Azure portal experience:
You can now add local VM admin credentials directly instead of having to add a local account created with
the Active Directory domain join account credentials.
Users can now list both individual and group assignments in separate tabs for individual users and groups.
The version number of the Azure Virtual Desktop Agent is now visible in the Virtual Machine overview for
host pools.
Added bulk delete for host pools and application groups.
You can now enable or disable drain mode for multiple session hosts in a host pool.
Removed the public IP field from the VM details page.
Azure Virtual Desktop Agent troubleshooting
We recently set up the Azure Virtual Desktop Agent troubleshooting guide to help customers who have
encountered common issues.
Microsoft Defender for Endpoint integration
Microsoft Defender for Endpoint integration is now generally available. This feature gives your Azure Virtual
Desktop VMs the same investigation experience as a local Windows 10 machine. If you're using Windows 10
Enterprise multi-session, Microsoft Defender for Endpoint will support up to 50 concurrent user connections,
giving you the cost savings of Windows 10 Enterprise multi-session and the confidence of Microsoft Defender
for Endpoint. For more information, check out our blog post.
Azure Security baseline for Azure Virtual Desktop
We've recently published an article about the Azure security baseline for Azure Virtual Desktop that we'd like to
call your attention to. These guidelines include information about how to apply the Azure Security Benchmark,
version 2.0 to Azure Virtual Desktop. The Azure Security Benchmark describes the settings and practices we
recommend you use to secure your cloud solutions on Azure.
December 2020
Here's what changed in December 2020:
Azure Monitor for Azure Virtual Desktop
The public preview for Azure Monitor for Azure Virtual Desktop is now available. This new feature includes a
robust dashboard built on top of Azure Monitor Workbooks to help IT professionals understand their Azure
Virtual Desktop environments. Check out the announcement on our blog for more details.
Azure Resource Manager template change
In the latest update, we've removed all public IP address parameter from the Azure Resource Manager template
for creating and provisioning host pools. We highly recommend you avoid using public IPs for Azure Virtual
Desktop to keep your deployment secure. If your deployment relied on public IPs, you'll need to reconfigure it to
use private IPs instead, otherwise your deployment won't work properly.
MSIX app attach public preview
MSIX app attach is another service that began its public preview this month. MSIX app attach is a service that
dynamically presents MSIX applications to your Azure Virtual Desktop Session host VMs. Check out the
announcement on our blog for more details.
Screen capture protection
This month also marked the beginning of the public preview for screen capture protection. You can use this
feature to prevent sensitive information from being captured on the client endpoints. Give screen capture
protection a try by going to this page.
Built-in roles
We've added new built-in roles for Azure Virtual Desktop for admin permissions. For more information, see
Built-in roles for Azure Virtual Desktop.
Application group limit increase
We've increased the default application group limit per Azure Active Directory tenant to 200 groups.
Client updates for December 2020
We've released new versions of the following clients:
Android
macOS
Windows
For more information about client updates, see Client updates.
November 2020
Azure portal experience
We've fixed two bugs in the Azure portal user experience:
The Desktop application friendly name is no longer overwritten on the "Add VM" workflow.
The session host tab will now load if session hosts are part of scale sets.
FSLogix client, version 2009
We've released a new version of the FSLogix client with many fixes and improvements. Learn more at our blog
post.
RDP Shortpath public preview
RDP Shortpath introduces direct connectivity to your Azure Virtual Desktop session host using point-to-site and
site-to-site VPNs and ExpressRoute. It also introduces the URCP transport protocol. RDP Shortpath is designed
to reduce latency and network hops in order to improve user experience. Learn more at Azure Virtual Desktop
RDP Shortpath.
Az.DesktopVirtualization, version 2.0.1
We've released version 2.0.1 of the Azure Virtual Desktop cmdlets. This update includes cmdlets that will let you
manage MSIX App Attach. You can download the new version at the PowerShell gallery.
Azure Advisor updates
Azure Advisor now has a new recommendation for proximity guidance in Azure Virtual Desktop, and a new
recommendation for optimizing performance in depth-first load balanced host pools. Learn more at the Azure
website.
October 2020
Here's what changed in October 2020:
Improved performance
We've optimized performance by reducing connection latency in the following Azure geographies:
Switzerland
Canada
You can now use the Experience Estimator to estimate the user experience quality in these areas.
Azure Government Cloud availability
The Azure Government Cloud is now generally available. Learn more at our blog post.
Azure Virtual Desktop Azure portal updates
We've made some updates to the Azure Virtual Desktop Azure portal:
Fixed a resourceID error that prevented users from opening the "Sessions" tab.
Streamlined the UI on the "Session hosts" tab.
Fixed the "Defaults," "Usability," and "Restore defaults" settings under RDP properties.
Made "Remove" and "Delete" functions consistent across all tabs.
The portal now validates app names in the "Add an app" workflow.
Fixed an issue where the session host export data wasn't aligned in the columns.
Fixed an issue where the portal couldn't retrieve user sessions.
Fixed an issue in session host retrieval that happened when the virtual machine was created in a different
resource group.
Updated the "Session host" tab to list both active and disconnected sessions.
The "Applications" tab now has pages.
Fixed an issue where the "requires command line" text didn't display correctly in the "Application list" tab.
Fixed an issue when the portal couldn't deploy host pools or virtual machines while using the German-
language version of the Shared Image Gallery.
Client updates for October 2020
We've released new versions of the clients. See these articles to learn more:
Windows
iOS
For more information about the other clients, see Client updates.
September 2020
Here's what changed in September 2020:
We've optimized performance by reducing connection latency in the following Azure geographies:
Germany
South Africa (for validation environments only)
You can now use the Experience Estimator to estimate the user experience quality in these areas.
We released version 1.2.1364 of the Windows Desktop client for Azure Virtual Desktop. In this update, we
made the following changes:
Fixed an issue where single sign-on (SSO) didn't work on Windows 7.
Fixed an issue that caused the client to disconnect when a user who enabled media optimization for
Teams tried to call or join a Teams meeting while another app had an audio stream open in exclusive
mode.
Fixed an issue where Teams didn't enumerate audio or video devices when media optimization for
Teams was enabled.
Added a "Need help with settings?" link to the desktop settings page.
Fixed an issue with the "Subscribe" button that happened when using high-contrast dark themes.
Thanks to the tremendous help from our users, we've fixed two critical issues for the Microsoft Store
Remote Desktop client. We'll continue to review feedback and fix issues as we broaden our phased
release of the client to more users worldwide.
We've added a new feature that lets you change VM location, image, resource group, prefix name,
network config as part of the workflow for adding a VM to your deployment in the Azure portal.
IT Pros can now manage hybrid Azure Active Directory-joined Windows 10 Enterprise VMs using
Microsoft Endpoint Manager. To learn more, see our blog post.
August 2020
Here's what changed in August 2020:
We've improved performance to reduce connection latency in the following Azure regions:
United Kingdom
France
Norway
South Korea
You can use the Experience Estimator to get a general idea of how these changes will affect your users.
The Microsoft Store Remote Desktop Client (v10.2.1522+) is now generally available! This version of the
Microsoft Store Remote Desktop Client is compatible with Azure Virtual Desktop. We've also introduced
refreshed UI flows for improved user experiences. This update includes fluent design, light and dark
modes, and many other exciting changes. We've also rewritten the client to use the same underlying
remote desktop protocol (RDP) engine as the iOS, macOS, and Android clients. This lets us deliver new
features at a faster rate across all platforms. Download the client and give it a try!
We fixed an issue in the Teams Desktop client (version 1.3.00.21759) where the client only showed the
UTC time zone in the chat, channels, and calendar. The updated client now shows the remote session's
time zone instead.
Azure Advisor is now a part of Azure Virtual Desktop. When you access Azure Virtual Desktop through
the Azure portal, you can see recommendations for optimizing your Azure Virtual Desktop environment.
Learn more at Introduction to Azure Advisor.
Azure CLI now supports Azure Virtual Desktop ( az desktopvirtualization ) to help you automate your
Azure Virtual Desktop deployments. Check out desktopvirtualization for a list of extension commands.
We've updated our deployment templates to make them fully compatible with the Azure Virtual Desktop
Azure Resource Manager interfaces. You can find the templates on GitHub.
The Azure Virtual Desktop US Gov portal is now in public preview. To learn more, see our announcement.
July 2020
July was when Azure Virtual Desktop with Azure Resource Management integration became generally available.
Here's what changed with this new release:
The "Fall 2019 release" is now known as "Azure Virtual Desktop (Classic)," while the "Spring 2020 release" is
now just "Azure Virtual Desktop." For more information, check out this blog post.
To learn more about new features, check out this blog post.
Autoscaling tool update
The latest version of the autoscaling tool that was in preview is now generally available. This tool uses an Azure
automation account and the Azure Logic App to automatically shut down and restart session host VMs within a
host pool, reducing infrastructure costs. Learn more at Scale session hosts using Azure Automation.
Azure portal
You can now do the following things with the Azure portal in Azure Virtual Desktop:
Directly assign users to personal desktop session hosts
Change the validation environment setting for host pools
Diagnostics
We've released some new prebuilt queries for the Log Analytics workspace. To access the queries, go to Logs
and under Categor y , select Azure Vir tual Desktop . Learn more at Use Log Analytics for the diagnostics
feature.
Update for Remote Desktop client for Android
The Remote Desktop client for Android now supports Azure Virtual Desktop connections. Starting with version
10.0.7, the Android client features a new UI for improved user experience. The client also integrates with
Microsoft Authenticator on Android devices to enable conditional access when subscribing to Azure Virtual
Desktop workspaces.
The previous version of Remote Desktop client is now called “Remote Desktop 8." Any existing connections you
have in the earlier version of the client will be transferred seamlessly to the new client. The new client has been
rewritten to the same underlying RDP core engine as the iOS and macOS clients, faster release of new features
across all platforms.
Teams update
We've made improvements to Microsoft Teams for Azure Virtual Desktop. Most importantly, Azure Virtual
Desktop now supports audio and video optimization for the Windows Desktop client. Redirection improves
latency by creating direct paths between users when they use audio or video in calls and meetings. Less distance
means fewer hops, which makes calls look and sound smoother. Learn more at Use Teams on Azure Virtual
Desktop.
June 2020
Last month, we introduced Azure Virtual Desktop with Azure Resource Manager integration in preview. This
update has lots of exciting new features we'd love to tell you about. Here's what's new for this version of Azure
Virtual Desktop.
Azure Virtual Desktop is now integrated with Azure Resource Manager
Azure Virtual Desktop is now integrated into Azure Resource Manager. In the latest update, all Azure Virtual
Desktop objects are now Azure Resource Manager resources. This update is also integrated with Azure role-
based access control (Azure RBAC). See What is Azure Resource Manager? to learn more.
Here's what this change does for you:
Azure Virtual Desktop is now integrated with the Azure portal. This means you can manage everything
directly in the portal, no PowerShell, web apps, or third-party tools required. To get started, check out our
tutorial at Create a host pool with the Azure portal.
Before this update, you could only publish RemoteApps and Desktops to individual users. With Azure
Resource Manager, you can now publish resources to Azure Active Directory groups.
The earlier version of Azure Virtual Desktop had four built-in admin roles that you could assign to a
tenant or host pool. These roles are now in Azure role-based access control (Azure RBAC). You can apply
these roles to every Azure Virtual Desktop Azure Resource Manager object, which lets you have a full,
rich delegation model.
In this update, you no longer need to run Azure Marketplace or the GitHub template repeatedly to expand
a host pool. All you need to expand a host pool is to go to your host pool in the Azure portal and select +
Add to deploy additional session hosts.
Host pool deployment is now fully integrated with the Azure Shared Image Gallery. Shared Image Gallery
is a separate Azure service that stores VM image definitions, including image versioning. You can also use
global replication to copy and send your images to other Azure regions for local deployment.
Monitoring functions that used to be done through PowerShell or the Diagnostics Service web app have
now moved to Log Analytics in the Azure portal. You also now have two options to visualize your reports.
You can run Kusto queries and use Workbooks to create visual reports.
You're no longer required to complete Azure Active Directory (Azure AD) consent to use Azure Virtual
Desktop. In this update, the Azure AD tenant on your Azure subscription authenticates your users and
provides Azure RBAC controls for your admins.
PowerShell support
We've added new AzWvd cmdlets to the Azure PowerShell Az Module with this update. This new module is
supported in PowerShell Core, which runs on .NET Core.
To install the module, follow the instructions in Set up the PowerShell module for Azure Virtual Desktop.
You can also see a list of available commands at the AzWvd PowerShell reference.
For more information about the new features, check out our blog post.
Additional gateways
We've added a new gateway cluster in South Africa to reduce connection latency.
Microsoft Teams on Azure Virtual Desktop (Preview)
We've made some improvements to Microsoft Teams for Azure Virtual Desktop. Most importantly, Azure Virtual
Desktop now supports audio and visual redirection for calls. Redirection improves latency by creating direct
paths between users when they call using audio or video. Less distance means fewer hops, which makes calls
look and sound smoother.
To learn more, see our blog post.
Next steps
Learn about future plans at the Microsoft 365 Azure Virtual Desktop roadmap.
What's new in Azure Monitor for Azure Virtual
Desktop?
3/7/2022 • 2 minutes to read • Edit Online
This article describes the changes we make to each new version of Azure Monitor for Azure Virtual Desktop.
If you're not sure which version of Azure Monitor you're currently using, you can find it in the bottom-right
corner of your Insights page or configuration workbook. To access your workbook, go to
https://aka.ms/azmonwvdi.
Version 1.0.0
Release date: March 21st, 2021.
In this version, we made the following changes:
We introduced a new visual indicator for high-impact errors and warnings from the Azure Virtual
Desktop agent event log on the host diagnostics page.
We removed five expensive process performance counters from the default configuration. For more
information, see our blog post at Updated guidance on Azure Monitor for Azure Virtual Desktop.
The setup process for Windows Event Log for the configuration workbook is now automated.
The configuration workbook now supports automated deployment of recommended Windows Event
Logs.
The configuration workbook can now install the Log Analytics agent and setting-preferred workspace for
session hosts outside of the resource group's region.
The configuration workbook now has a tabbed layout for the setup process.
We introduced versioning with this update.
Next steps
For the general What's New page, see What's New in Azure Virtual Desktop.
To learn more about Azure Monitor for Azure Virtual Desktop, see Use Azure Monitor for Azure Virtual Desktop
to monitor your deployment.
Tutorial: Create a tenant in Azure Virtual Desktop
(classic)
3/7/2022 • 6 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop (classic), which doesn't support Azure Resource Manager Azure Virtual
Desktop objects.
Creating a tenant in Azure Virtual Desktop is the first step toward building your desktop virtualization solution.
A tenant is a group of one or more host pools. Each host pool consists of multiple session hosts, running as
virtual machines in Azure and registered to the Azure Virtual Desktop service. Each host pool also consists of
one or more app groups that are used to publish remote desktop and remote application resources to users.
With a tenant, you can build host pools, create app groups, assign users, and make connections through the
service.
In this tutorial, learn how to:
Grant Azure Active Directory permissions to the Azure Virtual Desktop service.
Assign the TenantCreator application role to a user in your Azure Active Directory tenant.
Create a Azure Virtual Desktop tenant.
NOTE
If you manage a customer and need to grant admin consent for the customer's directory, enter the following URL
into the browser and replace {tenant} with the Azure AD domain name of the customer. For example, if the
customer's organization has registered the Azure AD domain name of contoso.onmicrosoft.com, replace {tenant}
with contoso.onmicrosoft.com.
https://login.microsoftonline.com/{tenant}/adminconsent?client_id=5a0aa725-4958-4b0c-80a9-
34562e23f3b7&redirect_uri=https%3A%2F%2Ffanyv88.com%3A443%2Fhttps%2Frdweb.wvd.microsoft.com%2FRDWeb%2FConsentCallback
2. Sign in to the Azure Virtual Desktop consent page with a global administrator account. For example, if
you were with the Contoso organization, your account might be [email protected] or
[email protected].
3. Select Accept .
4. Wait for one minute so Azure AD can record consent.
5. Open a browser and begin the admin consent flow to the Azure Virtual Desktop client app.
NOTE
If you manage a customer and need to grant admin consent for the customer's directory, enter the following URL
into the browser and replace {tenant} with the Azure AD domain name of the customer. For example, if the
customer's organization has registered the Azure AD domain name of contoso.onmicrosoft.com, replace {tenant}
with contoso.onmicrosoft.com.
https://login.microsoftonline.com/{tenant}/adminconsent?client_id=fa4345a4-a730-4230-84a8-
7d9651b86739&redirect_uri=https%3A%2F%2Ffanyv88.com%3A443%2Fhttps%2Frdweb.wvd.microsoft.com%2FRDWeb%2FConsentCallback
6. Sign in to the Azure Virtual Desktop consent page as global administrator, as you did in step 2.
7. Select Accept .
6. Select the user account, choose the Select button, and then select Assign .
7. On the Azure Vir tual Desktop - Users and groups page, verify that you see a new entry with the
TenantCreator role assigned to the user who will create the Azure Virtual Desktop tenant.
Before you continue on to create your Azure Virtual Desktop tenant, you need two pieces of information:
Your Azure Active Directory tenant ID (or Director y ID )
Your Azure subscription ID
To find your Azure Active Directory tenant ID (or Director y ID ):
1. In the same Azure portal session, search for and select Azure Active Director y .
2. Scroll down until you find Proper ties , and then select it.
3. Look for Director y ID , and then select the clipboard icon. Paste it in a handy location so you can use it
later as the AadTenantId value.
After that, create a new Azure Virtual Desktop tenant associated with the Azure Active Directory tenant:
New-RdsTenant -Name <TenantName> -AadTenantId <DirectoryID> -AzureSubscriptionId <SubscriptionID>
Replace the bracketed values with values relevant to your organization and tenant. The name you choose for
your new Azure Virtual Desktop tenant should be globally unique. For example, let's say you're the Azure Virtual
Desktop TenantCreator for the Contoso organization. The cmdlet you'd run would look like this:
It's a good idea to assign administrative access to a second user in case you ever find yourself locked out of your
account, or you go on vacation and need someone to act as the tenant admin in your absence. To assign admin
access to a second user, run the following cmdlet with <TenantName> and <Upn> replaced with your tenant name
and the second user's UPN.
Next steps
After you've created your tenant, you'll need to create a service principal in Azure Active Directory and assign it
a role within Azure Virtual Desktop. The service principal will allow you to successfully deploy the Azure Virtual
Desktop Azure Marketplace offering to create a host pool. To learn more about host pools, continue to the
tutorial for creating a host pool in Azure Virtual Desktop.
Create service principals and role assignments with PowerShell
Deploy Azure Virtual Desktop with the getting
started feature
3/7/2022 • 6 minutes to read • Edit Online
The Azure portal's new getting started feature is a quick, easy way to install and configure Azure Virtual Desktop
on your deployment.
Requirements
You'll need to meet the following requirements to be able to use getting started:
An Azure Active Directory (AD) tenant.
An account with global admin permissions on Azure AD.
NOTE
The getting started feature doesn't currently support MSA, B2B, or guest accounts at this time.
NOTE
The getting started feature doesn't currently support accounts with multi-factor authentication.
NOTE
Getting started will create the validation user group in the "USERS" container. You must make sure your
validation group is synced to Azure AD. If the sync doesn't work, then pre-create the AVDValidationUsers
group in an organization unit that is being synced to Azure AD.
For subscriptions without Azure AD DS or AD DS
This section will show you how to use the getting started feature for a subscription without Azure AD DS or AD
DS. For reference, these subscriptions are sometimes called "empty" subscriptions.
To deploy Azure Virtual Desktop on a subscription without Azure AD DS or AD DS:
1. Open the Azure portal.
2. Sign in to Azure and open Azure Vir tual Desktop management , then select the Getting star ted tab.
This will open the landing page for the getting started feature.
3. In the Basic tab, select the following values:
For Subscription , select the subscription you want to deploy Azure Virtual Desktop in.
For How is your subscription configured , select Empty subscription . An "empty"
subscription is a subscription that doesn't require an identity provider like Azure AD or AD DS.
For Resource group prefix , enter the prefixes for the resource group you're going to create: -
prerequisite, -deployment, and -avd.
In Location , enter the resource location you want to use for your deployment.
For Azure admin UPN , enter the full UPN of an account with admin permissions on Azure AD
and owner permissions on the subscription.
For AD Domain join UPN , enter the full UPN for an account that will be added to AAD DC
Administrators group.
NOTE
The user name for AD Domain join UPN should be a unique one that doesn't already exist in Azure AD. The
getting started feature doesn't currently support using existing Azure AD user names for accounts without Azure
AD or AD DS.
Clean up resources
If after deployment you change your mind and want to remove Azure Virtual Desktop resources from your
environment without incurring extra billing costs, you can safely remove them by following the instructions in
this section.
If you created your resources on a subscription with Azure AD DS or AD DS, the feature will have made two
resource groups with the prefixes "-deployment" and "-avd." In the Azure portal, go to Resource groups and
delete any resource groups with those prefixes to remove the deployment.
If you created your resources on a subscription without Azure AD DS or AD DS, the feature will have made three
resource groups with the prefixes -prerequisite, -deployment, and -avd. In the Azure portal, go to Resource
groups and delete any resource groups with those prefixes to remove the deployment.
Next steps
If you'd like to learn how to deploy Azure Virtual Desktop in a more in-depth way, check out our tutorials for
setting up your deployment manually, starting with Create a host pool with the Azure portal.
Tutorial: Create a host pool
3/7/2022 • 15 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article. Any objects you create with
Azure Virtual Desktop (classic) can't be managed with the Azure portal.
Host pools are a collection of one or more identical virtual machines (VMs), also known as "session hosts,"
within Azure Virtual Desktop environments. Each host pool can contain an app group that users can interact
with as they would on a physical desktop. If you'd like to learn more about deployment architecture, check out
Azure Virtual Desktop environment. If you're an app developer using remote app streaming for Azure Virtual
Desktop, your customers or users can use your apps just like local apps on a physical device. For more
information how to use Azure Virtual Desktop as an app developer, check out our Azure Virtual Desktop remote
app streaming documentation.
NOTE
If you're an app developer using remote app streaming for Azure Virtual Desktop and your app's users are in the same
organization as your deployment, you can use your existing Azure tenant to create your host pool. If your users are
outside of your organization, then for security reasons you'll need to create separate Azure tenants with at least one host
pool for each organization. Learn more about which practices we recommend you follow to keep your deployment secure
at Architecture recommendations.
This article will walk you through the setup process for creating a host pool for an Azure Virtual Desktop
environment through the Azure portal. This method provides a browser-based user interface to create a host
pool in Azure Virtual Desktop, create a resource group with VMs in an Azure subscription, join those VMs to
either an Active Directory (AD) domain or Azure Active Directory (Azure AD) tenant, and register the VMs with
Azure Virtual Desktop.
Prerequisites
There are two different sets of requirements depending on if you're an IT professional setting up a deployment
for your organization or an app developer serving applications to customers.
Requirements for IT professionals
You'll need to enter the following parameters to create a host pool:
The VM image name
VM configuration
Domain and network properties
Azure Virtual Desktop host pool properties
You'll also need to know the following things:
Where the source of the image you want to use is. Is it from Azure Gallery or is it a custom image?
Your domain join credentials.
Requirements for app developers
If you're an app developer who's using remote app streaming for Azure Virtual Desktop to deliver apps to your
customers, here's what you'll need to get started:
If you plan on serving your organization's app to end-users, make sure you actually have that app ready. For
more information, see How to host custom apps with Azure Virtual Desktop.
If existing Azure Gallery image options don't meet your needs, you'll also need to create your own custom
image for your session host VMs. To learn more about how to create VM images, see Prepare a Windows
VHD or VHDX to upload to Azure and Create a managed image of a generalized VM in Azure.
Your domain join credentials. If you don't already have an identity management system compatible with
Azure Virtual Desktop, you'll need to set up identity management for your host pool. To learn more, see Set
up managed identities.
Final requirements
Finally, make sure you've registered the Microsoft.DesktopVirtualization resource provider. If you haven't
already, go to Subscriptions , select the name of your subscription, and then select Resource providers .
Search for DesktopVir tualization , select Microsoft.DesktopVir tualization , and then select Register .
If you're an IT professional creating a network, when you create a Azure Virtual Desktop host pool with the
Azure Resource Manager template, you can create a virtual machine from the Azure gallery, a managed image,
or an unmanaged image. To learn more about how to create VM images, see Prepare a Windows VHD or VHDX
to upload to Azure and Create a managed image of a generalized VM in Azure. (If you're an app developer, you
don't need to worry about this part.)
Last but not least, if you don't have an Azure subscription already, make sure to create an account before you
start following these instructions.
NOTE
If you're signing in to the US Gov portal, go to https://portal.azure.us/ instead.
If you're accessing the Azure China portal, go to https://portal.azure.cn/.
2. Enter Azure Vir tual Desktop into the search bar, then find and select Azure Vir tual Desktop under
Services.
3. In the Azure Vir tual Desktop overview page, select Create a host pool .
4. In the Basics tab, select the correct subscription under Project details.
5. Either select Create new to make a new resource group or select an existing resource group from the
drop-down menu.
6. Enter a unique name for your host pool.
7. In the Location field, select the region where you want to create the host pool from the drop-down menu.
The Azure geography associated with the regions you selected is where the metadata for this host pool
and its related objects will be stored. Make sure you choose the regions inside the geography you want
the service metadata to be stored in.
NOTE
If you want to create your host pool in a supported region outside the US, you'll need to re-register the resource
provider. After re-registering, you should see the other regions in the drop-down for selecting the location. Learn
how to re-register at our Host pool creation troubleshooting article.
8. Under Host pool type, select whether your host pool will be Personal or Pooled .
If you choose Personal , then select either Automatic or Direct in the Assignment Type field.
Portal
Azure CLI
To set up your virtual machine within the Azure portal host pool setup process:
1. Under Resource group , choose the resource group where you want to create the virtual machines. This
can be a different resource group than the one you used for the host pool.
2. After that, provide a Name prefix to name the virtual machines the setup process creates. The suffix will
be - with numbers starting from 0.
3. Choose the Vir tual machine location where you want to create the virtual machines. They can be the
same or different from the region you selected for the host pool. Keep in mind that VM prices vary by
region, and the VM locations should be near their users when possible to maximize performance. Learn
more at Data locations for Azure Virtual Desktop.
4. Next, choose the availability option that best suit your needs. To learn more about which option is right
for you, see Availability options for virtual machines in Azure and our FAQ.
5. Next, choose the security type that you would like to use for your virtual machines. You can choose either
Standard or Trusted Launch vir tual machines . To learn more about Trusted Launch virtual machines,
see Trusted Launch for Azure virtual machines.
If Trusted Launch virtual machines is selected, choose which Trusted Launch security features you would
like to enable.
6. Next, choose the image that needs to be used to create the virtual machine. You can choose either
Galler y or Storage blob .
If you choose Galler y , select one of the recommended images from the drop-down menu:
Windows 10 Enterprise multi-session, Version 1909
Windows 10 Enterprise multi-session, Version 1909 + Microsoft 365 Apps
Windows Server 2019 Datacenter
Windows 10 Enterprise multi-session, Version 2004
Windows 10 Enterprise multi-session, Version 2004 + Microsoft 365 Apps
If you don't see the image you want, select See all images , which lets you select either another
image in your gallery or an image provided by Microsoft and other publishers. Make sure that the
image you choose is one of the supported OS images.
You can also go to My Items and choose a custom image you've already uploaded.
If you choose Storage Blob , you can use your own image build through Hyper-V or on an Azure
VM. All you have to do is enter the location of the image in the storage blob as a URI.
The image's location is independent of the availability option, but the image’s zone resiliency determines
whether that image can be used with availability zone. If you select an availability zone while creating
your image, make sure you're using an image from the gallery with zone resiliency enabled. To learn
more about which zone resiliency option you should use, see the FAQ.
7. After that, choose the Vir tual machine size you want to use. You can either keep the default size as-is
or select Change size to change the size. If you select Change size , in the window that appears, choose
the size of the virtual machine suitable for your workload. To learn more about virtual machine sizes and
which size you should choose, see Virtual machine sizing guidelines.
8. Under Number of VMs , provide the number of VMs you want to create for your host pool.
NOTE
The setup process can create up to 400 VMs while setting up your host pool, and each VM setup process creates
four objects in your resource group. Since the creation process doesn't check your subscription quota, make sure
the number of VMs you enter is within the Azure VM and API limits for your resource group and subscription. You
can add more VMs after you finish creating your host pool.
9. Choose what kind of OS disks you want your VMs to use: Standard SSD, Premium SSD, or Standard HDD.
10. Under Network and security, select the Vir tual network and Subnet where you want to put the virtual
machines you create. Make sure the virtual network can connect to the domain controller, since you'll
need to join the virtual machines inside the virtual network to the domain. The DNS servers of the virtual
network you selected should be configured to use the IP of the domain controller.
11. Select what kind of security group you want: Basic , Advanced , or None .
If you select Basic , you'll have to select whether you want any inbound port open. If you select Yes ,
choose from the list of standard ports to allow inbound connections to.
NOTE
For greater security, we recommend that you don't open public inbound ports.
If you choose Advanced , select an existing network security group that you've already configured.
12. After that, select whether you want the virtual machines to be joined to Active Director y or Azure
Active Director y (Preview).
For Active Directory, provide an account to join the domain and choose if you want to join a
specific domain and organizational unit.
For the AD domain join UPN, enter the credentials for the Active Directory Domain admin
of the virtual network you selected. The account you use can't have multifactor
authentication (MFA) enabled. When joining to an Azure Active Directory Domain Services
(Azure AD DS) domain, the account you use must be part of the Azure AD DC
Administrators group and the account password must work in Azure AD DS.
To specify a domain, select Yes , then enter the name of the domain you want to join. If you
want, you can also add a specific organizational unit you want the virtual machines to be in
by entering the full path (Distinguished Name) and without quotation marks. If you don't
want to specify a domain, select No . The VMs will automatically join the domain that
matches the suffix of the AD domain join UPN .
For Azure Active Directory, you can select Enroll the VM with Intune to automatically make the
VM available for management after it's deployed.
13. Under Vir tual Machine Administrator account , enter the credentials for the local admin account to
be added while creating the VM. You can use this account for management purposes in both AD and
Azure AD-joined VMs.
14. Under Post update custom configuration , you can enter the location of an Azure Resource Manager
template to perform custom configurations on your session hosts after you create them. You'll need to
enter the URLs for both the Azure Resource Manager template file and the Azure Resource Manager
template parameter file.
NOTE
Azure Virtual Desktop doesn't support provisioning Azure resources in the template.
Workspace information
The host pool setup process creates a desktop application group by default. For the host pool to work as
intended, you'll need to publish this app group to users or user groups, and you must register the app group to
a workspace.
NOTE
If you're an app developer trying to publish your organization’s apps, you can dynamically attach MSIX apps to user
sessions or add your app packages to a custom VM image. See How to serve your custom app with Azure Virtual
Desktop for more information.
Portal
Azure CLI
NOTE
The review + create validation process doesn't check if your password meets security standards or if your
architecture is correct, so you'll need to check for any problems with either of those things yourself.
5. Review the information about your deployment to make sure everything looks correct. When you're
done, select Create .
This starts the deployment process, which creates the following objects:
Your new host pool.
A desktop app group.
A workspace, if you chose to create it.
If you chose to register the desktop app group, the registration will be completed.
Virtual machines, if you chose to create them, which are joined to the domain and registered with the new
host pool.
A download link for an Azure Resource Management template based on your configuration.
After that, you're all done!
NOTE
If you're using an automated process to build your environment, you'll need the latest version of the configuration JSON
file. You can find the JSON file here.
Next steps
Now that you've made your host pool, you can populate it with RemoteApp programs. To learn more about how
to manage apps in Azure Virtual Desktop, head to our next tutorial:
Manage app groups tutorial
Tutorial: Manage app groups with the Azure portal
3/7/2022 • 5 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
The default app group created for a new Azure Virtual Desktop host pool also publishes the full desktop. In
addition, you can create one or more RemoteApp application groups for the host pool. Follow this tutorial to
create a RemoteApp app group and publish individual Start menu apps.
NOTE
You can dynamically attach MSIX apps to user sessions or add your app packages to a custom virtual machine (VM)
image to publish your organization's apps. Learn more at How to host custom apps with Azure Virtual Desktop.
NOTE
If you're signing in to the US Gov portal, go to https://portal.azure.us/ instead.
If you're accessing the Azure China portal, go to https://portal.azure.cn/.
6. Select RemoteApp under Application group type , then enter a name for your RemoteApp.
NOTE
You can only register the app group to workspaces created in the same location as the host pool. Also. if you've
previously registered another app group from the same host pool as your new app group to a workspace, it will
be selected and you can't edit it. All app groups from a host pool must be registered to the same workspace.
18. Optionally, if you want to create tags to make your workspace easy to organize, select Next: Tags > and
enter your tag names.
19. When you're done, select Review + create .
20. Wait a bit for the validation process to complete. When it's done, select Create to deploy your app group.
The deployment process will do the following things for you:
Create the RemoteApp app group.
Add your selected apps to the app group.
Publish the app group published to users and user groups you selected.
Register the app group, if you chose to do so.
Create a link to an Azure Resource Manager template based on your configuration that you can download
and save for later.
IMPORTANT
You can only create 500 application groups for each Azure Active Directory tenant. We added this limit because of service
limitations for retrieving feeds for our users. This limit doesn't apply to app groups created in Azure Virtual Desktop
(classic).
NOTE
If you're signing in to the US Gov portal, go to https://portal.azure.us/ instead.
Next steps
In this tutorial, you learned how to create an app group, populate it with RemoteApp programs, and assign users
to the app group. To learn how to create a validation host pool, see the following tutorial. You can use a
validation host pool to monitor service updates before rolling them out to your production environment.
Create a host pool to validate service updates
Tutorial: Create a host pool to validate service
updates
3/7/2022 • 3 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Host pools are a collection of one or more identical virtual machines within Azure Virtual Desktop environment.
We highly recommend you create a validation host pool where service updates are applied first. Validation host
pools let you monitor service updates before the service applies them to your standard or non-validation
environment. Without a validation host pool, you may not discover changes that introduce errors, which could
result in downtime for users in your standard environment.
To ensure your apps work with the latest updates, the validation host pool should be as similar to host pools in
your non-validation environment as possible. Users should connect as frequently to the validation host pool as
they do to the standard host pool. If you have automated testing on your host pool, you should include
automated testing on the validation host pool.
You can debug issues in the validation host pool with either the diagnostics feature or the Azure Virtual Desktop
troubleshooting articles.
NOTE
We recommend that you leave the validation host pool in place to test all future updates.
Update schedule
Service updates happen monthly. If there are major issues, critical updates will be provided at a more frequent
pace.
If there are any service updates, make sure you have at least a couple of users sign in each day to validate the
environment. We recommend you regularly visit our TechCommunity site and follow any posts with
WVDUPdate or AVDUpdate to stay informed about service updates.
Next steps
Now that you've created a validation host pool, you can learn how to use Azure Service Health to monitor your
Azure Virtual Desktop deployment.
Set up service alerts
Tutorial: Set up service alerts
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
You can use Azure Service Health to monitor service issues and health advisories for Azure Virtual Desktop.
Azure Service Health can notify you with different types of alerts (for example, email or SMS), help you
understand the effect of an issue, and keep you updated as the issue resolves. Azure Service Health can also
help you mitigate downtime and prepare for planned maintenance and changes that could affect the availability
of your resources.
In this tutorial, you'll learn how to:
Create and configure service alerts.
To learn more about Azure Service Health, see the Azure Health Documentation.
Next steps
In this tutorial, you learned how to set up and use Azure Service Health to monitor service issues and health
advisories for Azure Virtual Desktop. To learn about how to sign in to Azure Virtual Desktop, continue to the
Connect to Azure Virtual Desktop How-tos.
Connect to the Remote Desktop client on Windows 7 and Windows 10
Azure Virtual Desktop environment
3/7/2022 • 3 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Azure Virtual Desktop is a service that gives users easy and secure access to their virtualized desktops and
RemoteApps. This topic will tell you a bit more about the general structure of the Azure Virtual Desktop
environment.
Host pools
A host pool is a collection of Azure virtual machines that register to Azure Virtual Desktop as session hosts
when you run the Azure Virtual Desktop agent. All session host virtual machines in a host pool should be
sourced from the same image for a consistent user experience.
A host pool can be one of two types:
Personal, where each session host is assigned to individual users.
Pooled, where session hosts can accept connections from any user authorized to an app group within the
host pool.
You can set additional properties on the host pool to change its load-balancing behavior, how many sessions
each session host can take, and what the user can do to session hosts in the host pool while signed in to their
Azure Virtual Desktop sessions. You control the resources published to users through app groups.
App groups
An app group is a logical grouping of applications installed on session hosts in the host pool. An app group can
be one of two types:
RemoteApp, where users access the RemoteApps you individually select and publish to the app group
Desktop, where users access the full desktop
By default, a desktop app group (named "Desktop Application Group") is automatically created whenever you
create a host pool. You can remove this app group at any time. However, you can't create another desktop app
group in the host pool while a desktop app group exists. To publish RemoteApps, you must create a RemoteApp
app group. You can create multiple RemoteApp app groups to accommodate different worker scenarios.
Different RemoteApp app groups can also contain overlapping RemoteApps.
To publish resources to users, you must assign them to app groups. When assigning users to app groups,
consider the following things:
We don't recommend assigning both the RemoteApp and desktop app groups in a single host pool to the
same user. Doing so will cause a single user to have two user sessions in a single host pool. Users aren't
supposed to have two active user sessions at the same time, as this can cause the following things to happen:
The session hosts become overloaded
Users get stuck when trying to login
Connections won't work
The screen turns black
The application crashes
Other negative effects on end-user experience and session performance
A user can be assigned to multiple app groups within the same host pool, and their feed will be an
accumulation of both app groups.
Workspaces
A workspace is a logical grouping of application groups in Azure Virtual Desktop. Each Azure Virtual Desktop
application group must be associated with a workspace for users to see the remote apps and desktops
published to them.
End users
After you've assigned users to their app groups, they can connect to a Azure Virtual Desktop deployment with
any of the Azure Virtual Desktop clients.
Next steps
Learn more about delegated access and how to assign roles to users at Delegated Access in Azure Virtual
Desktop.
To learn how to set up your Azure Virtual Desktop host pool, see Create a host pool with the Azure portal.
To learn how to connect to Azure Virtual Desktop, see one of the following articles:
Connect with Windows 10 or Windows 7
Connect with a web browser
Connect with the Android client
Connect with the macOS client
Connect with the iOS client
Get started with the Azure Virtual Desktop Agent
3/7/2022 • 4 minutes to read • Edit Online
In the Azure Virtual Desktop Service framework, there are three main components: the Remote Desktop client,
the service, and the virtual machines. These virtual machines live in the customer subscription where the Azure
Virtual Desktop agent and agent bootloader are installed. The agent acts as the intermediate communicator
between the service and the virtual machines, enabling connectivity. Therefore, if you're experiencing any issues
with the agent installation, update, or configuration, your virtual machines won't be able to connect to the
service. The agent bootloader is the executable that loads the agent.
This article will give you a brief overview of the agent installation and update processes.
NOTE
This documentation is not for the FSLogix agent or the Remote Desktop Client agent.
IMPORTANT
To successfully install the Azure Virtual Desktop agent, side-by-side stack, and Geneva Monitoring agent, you must
unblock all the URLs listed in the Required URL list. Unblocking these URLs is required to use the Azure Virtual Desktop
service.
Next steps
Now that you have a better understanding of the Azure Virtual Desktop agent, here are some resources that
might help you:
If you're experiencing agent or connectivity-related issues, check out the Azure Virtual Desktop Agent issues
troubleshooting guide.
Understanding Azure Virtual Desktop network
connectivity
3/7/2022 • 3 minutes to read • Edit Online
Azure Virtual Desktop provides the ability to host client sessions on the session hosts running on Azure.
Microsoft manages portions of the services on the customer's behalf and provides secure endpoints for
connecting clients and session hosts. The diagram below gives a high-level overview of the network connections
used by Azure Virtual Desktop
Session connectivity
Azure Virtual Desktop uses Remote Desktop Protocol (RDP) to provide remote display and input capabilities
over network connections. RDP was initially released with Windows NT 4.0 Terminal Server Edition and was
continuously evolving with every Microsoft Windows and Windows Server release. From the beginning, RDP
developed to be independent of its underlying transport stack, and today it supports multiple types of transport.
Connection security
TLS 1.2 is used for all connections initiated from the clients and session hosts to the Azure Virtual Desktop
infrastructure components. Azure Virtual Desktop uses the same TLS 1.2 ciphers as Azure Front Door. It's
important to make sure both client computers and session hosts can use these ciphers. For reverse connect
transport, both client and session host connect to the Azure Virtual Desktop gateway. After establishing the TCP
connection, the client or session host validates the Azure Virtual Desktop gateway's certificate. After establishing
the base transport, RDP establishes a nested TLS connection between client and session host using the session
host's certificates. By default, the certificate used for RDP encryption is self-generated by the OS during the
deployment. If desired, customers may deploy centrally managed certificates issued by the enterprise
certification authority. For more information about configuring certificates, see Windows Server documentation.
Next steps
To learn about bandwidth requirements for Azure Virtual Desktop, see Understanding Remote Desktop
Protocol (RDP) Bandwidth Requirements for Azure Virtual Desktop.
To get started with Quality of Service (QoS) for Azure Virtual Desktop, see Implement Quality of Service
(QoS) for Azure Virtual Desktop.
Azure Virtual Desktop RDP Shortpath for managed
networks
3/7/2022 • 9 minutes to read • Edit Online
RDP Shortpath for managed networks is a feature of Azure Virtual Desktop that establishes a direct UDP-based
transport between Remote Desktop Client and Session host. RDP uses this transport to deliver Remote Desktop
and RemoteApp while offering better reliability and consistent latency.
Key benefits
RDP Shortpath transport is based on top of highly efficient Universal Rate Control Protocol (URCP). URCP
enhances UDP with active monitoring of the network conditions and provides fair and full link utilization.
URCP operates at low delay and loss levels as needed by Remote Desktop. URCP achieves the best
performance by dynamically learning network parameters and providing protocol with a rate control
mechanism.
RDP Shortpath establishes the direct connectivity between Remote Desktop client and Session Host. Direct
connectivity reduces the dependency on the Azure Virtual Desktop gateways, improves the connection's
reliability, and increases the bandwidth available for each user session.
The removal of extra relay reduces the round-trip time, which improves user experience with latency-
sensitive applications and input methods.
RDP Shortpath brings support for configuring Quality of Service (QoS) priority for RDP connections through
a Differentiated Services Code Point (DSCP) marks
RDP Shortpath transport allows limiting outbound network traffic by specifying a throttle rate for each
session.
Connection security
RDP Shortpath is extending RDP multi-transport capabilities. It doesn't replace reverse connect transport but
complements it. All of the initial session brokering is managed through the Azure Virtual Desktop infrastructure.
Your deployment will only use the user-configured UDP port for incoming Shortpath traffic authenticated over
reverse connect transport. The RDP Shortpath listener will ignore all connection attempts unless they match the
reverse connect session.
RDP Shortpath uses a TLS connection between the client and the session host using the session host's
certificates. By default, the certificate used for RDP encryption is self-generated by the OS during the
deployment. If desired, customers may deploy centrally managed certificates issued by the enterprise
certification authority. For more information about certificate configurations, see Windows Server
documentation.
Requirements
To support RDP Shortpath, the Azure Virtual Desktop client needs a direct line of sight to the session host. You
can get a direct line of sight by using one of these methods:
Make sure the remote client machines must be running either Windows 10 or Windows 7 and have the
Windows Desktop client installed. Currently, non-Windows clients aren't supported.
Use ExpressRoute private peering
Use a Site-to-Site virtual private network (VPN) (IPsec-based)
Use a Point-to-Site VPN (IPsec-based)
Use a public IP address assignment
If you're using other VPN types to connect to the Azure, we recommend using a User Datagram Protocol (UDP)-
based VPN. While most Transmission Control Protocol (TCP)-based VPN solutions support nested UDP, they add
inherited overhead of TCP congestion control, which slows down RDP performance.
Having a direct line of sight means that the client can connect directly to the session host without being blocked
by firewalls.
NOTE
You can also install administrative templates to the group policy Central Store in your Active Directory domain. For
more information about Central Store for Group Policy Administrative Templates, see How to create and manage
the Central Store for Group Policy Administrative Templates in Windows.
6. Open the "Enable RDP Shor tpath for managed networks" policy and set it to "Enabled" . If you
enable this policy setting, you can also configure the port number that the Azure Virtual Desktop session
host will use to listen for incoming connections. The default port is 3390.
7. Restart your session host to apply the changes.
New-NetFirewallRule -DisplayName 'Remote Desktop - Shortpath (UDP-In)' -Action Allow -Description 'Inbound
rule for the Remote Desktop service to allow RDP traffic. [UDP 3390]' -Group '@FirewallAPI.dll,-28752' -Name
'RemoteDesktop-UserMode-In-Shortpath-UDP' -PolicyStore PersistentStore -Profile Domain, Private -Service
TermService -Protocol udp -LocalPort 3390 -Program '%SystemRoot%\system32\svchost.exe' -Enabled:True
# Replace $domainName value with the name of your Active Directory domain
# Replace $policyName value with the name of existing Group Policy Object
$domainName = "contoso.com"
$policyName = "RDP Shortpath Policy"
$gpoSession = Open-NetGPO -PolicyStore "$domainName\$policyName"
New-NetFirewallRule -DisplayName 'Remote Desktop - Shortpath (UDP-In)' -Action Allow -Description 'Inbound
rule for the Remote Desktop service to allow RDP traffic. [UDP 3390]' -Group '@FirewallAPI.dll,-28752' -Name
'RemoteDesktop-UserMode-In-Shortpath-UDP' -Profile Domain, Private -Service TermService -Protocol udp -
LocalPort 3390 -Program '%SystemRoot%\system32\svchost.exe' -Enabled:True -GPOSession $gpoSession
Save-NetGPO -GPOSession $gpoSession
Troubleshooting
Verify Shortpath listener
To verify that UDP listener is enabled, use the following PowerShell command on the session host:
LocalAddress LocalPort
------------ ---------
:: 3390
0.0.0.0 3390
If there's a conflict, you can identify the process that's blocking the port by running the following command:
Next steps
To learn about Azure Virtual Desktop network connectivity, see Understanding Azure Virtual Desktop
network connectivity.
To get started with Quality of Service (QoS) for Azure Virtual Desktop, see Implement Quality of Service
(QoS) for Azure Virtual Desktop.
Implement Quality of Service (QoS) for Azure
Virtual Desktop
3/7/2022 • 7 minutes to read • Edit Online
RDP Shortpath for managed networks provides a direct UDP-based transport between Remote Desktop Client
and Session host. RDP Shortpath for managed networks enables configuration of Quality of Service (QoS)
policies for the RDP data. QoS in Azure Virtual Desktop allows real-time RDP traffic that's sensitive to network
delays to "cut in line" in front of traffic that's less sensitive. Example of such less sensitive traffic would be a
downloading a new app, where an extra second to download isn't a large deal. QoS uses Windows Group Policy
Objects to identify and mark all packets in real-time streams and help your network to give RDP traffic a
dedicated portion of bandwidth.
If you support a large group of users experiencing any of the problems described in this article, you probably
need to implement QoS. A small business with few users might not need QoS, but it should be helpful even
there.
Without some form of QoS, you might see the following issues:
Jitter – RDP packets arriving at different rates, which can result in visual and audio glitches
Packet loss – packets dropped, which results in retransmission that requires additional time
Delayed round-trip time (RTT) – RDP packets taking a long time to reach their destinations, which result in
noticeable delays between input and reaction from the remote application.
The least complicated way to address these issues is to increase the data connections' size, both internally and
out to the internet. Since that is often cost-prohibitive, QoS provides a way to manage the resources you have
instead of adding bandwidth more effectively. To address quality issues, we recommend that you first use QoS,
then add bandwidth only where necessary.
For QoS to be effective, you must apply consistent QoS settings throughout your organization. Any part of the
path that fails to support your QoS priorities can degrade the quality RDP session.
gpupdate /force
Related articles
Quality of Service (QoS) Policy
Next steps
To learn about bandwidth requirements for Azure Virtual Desktop, see Understanding Remote Desktop
Protocol (RDP) Bandwidth Requirements for Azure Virtual Desktop.
To learn about Azure Virtual Desktop network connectivity, see Understanding Azure Virtual Desktop
network connectivity.
Required URL list
3/7/2022 • 4 minutes to read • Edit Online
In order to deploy and use Azure Virtual Desktop, you must unblock certain URLs so your virtual machines
(VMs) can access them anytime. This article lists the required URLs you need to unblock in order for Azure
Virtual Desktop to function properly.
IMPORTANT
Azure Virtual Desktop doesn't support deployments that block the URLs listed in this article.
WVDAgentUrlTool.exe
4. Once you run the file, you'll see a list of accessible and inaccessible URLs.
For example, the following screenshot shows a scenario where you'd need to unblock two required non-
wildcard URLs:
Here's what the output should look like once you've unblocked all required non-wildcard URLs:
Virtual machines
The Azure virtual machines you create for Azure Virtual Desktop must have access to the following URLs in the
Azure commercial cloud:
IMPORTANT
Azure Virtual Desktop supports the FQDN tag. For more information, see Use Azure Firewall to protect Azure Virtual
Desktop deployments.
We recommend you use FQDN tags or service tags instead of URLs to prevent service issues. The listed URLs and tags
only correspond to Azure Virtual Desktop sites and resources. They don't include URLs for other services like Azure Active
Directory.
The Azure virtual machines you create for Azure Virtual Desktop must have access to the following URLs in the
Azure Government cloud:
The following table lists optional URLs that your Azure virtual machines can have access to:
O UT B O UN D TC P
A DDRESS P O RT P URP O SE C L IEN T ( S) A Z URE GO V
IMPORTANT
Opening these URLs is essential for a reliable client experience. Blocking access to these URLs is unsupported and will
affect service functionality.
These URLs only correspond to client sites and resources. This list doesn't include URLs for other services like Azure Active
Directory. Azure Active Directory URLs can be found under ID 56, 59 and 125 on the Office 365 URLs and IP address
ranges.
Remote Desktop Protocol (RDP) bandwidth
requirements
3/7/2022 • 8 minutes to read • Edit Online
Remote Desktop Protocol (RDP) is a sophisticated technology that uses various techniques to perfect the
server's remote graphics' delivery to the client device. Depending on the use case, availability of computing
resources, and network bandwidth, RDP dynamically adjusts various parameters to deliver the best user
experience.
Remote Desktop Protocol multiplexes multiple Dynamic Virtual Channels (DVCs) into a single data channel sent
over different network transports. There are separate DVCs for remote graphics, input, device redirection,
printing, and more. Azure Virtual Desktop partners can also use their extensions that use DVC interfaces.
The amount of the data sent over RDP depends on the user activity. For example, a user may work with basic
textual content for most of the session and consume minimal bandwidth, but then generate a printout of a 200-
page document to the local printer. This print job will use a significant amount of network bandwidth.
When using a remote session, your network's available bandwidth dramatically impacts the quality of your
experience. Different applications and display resolutions require different network configurations, so it's
essential to make sure your network configuration meets your needs.
Other scenarios can have their bandwidth requirements change depending on how you use them, such as:
Voice or video conferencing
Real-time communication
Streaming 4K video
Estimating bandwidth used by remote graphics
It's tough to predict bandwidth use by the remote desktop. The user activities generate most of the remote
desktop traffic. Every user is unique, and differences in their work patterns may significantly change network
use.
The best way to understand bandwidth requirements is to monitor real user connections. Monitoring can be
performed by the built-in performance counters or by the network equipment.
However, in many cases, you may estimate network utilization by understanding how Remote Desktop Protocol
works and by analyzing your users' work patterns.
The remote protocol delivers the graphics generated by the remote server to display it on a local monitor. More
specifically, it provides the desktop bitmap entirely composed on the server. While sending a desktop bitmap
seems like a simple task at first approach, it requires a significant amount of resources. For example, a 1080p
desktop image in its uncompressed form is about 8Mb in size. Displaying this image on the locally connected
monitor with a modest screen refresh rate of 30 Hz requires bandwidth of about 237 MB/s.
To reduce the amount of data transferred over the network, RDP uses the combination of multiple techniques,
including but not limited to
Frame rate optimizations
Screen content classification
Content-specific codecs
Progressive image encoding
Client-side caching
To better understand remote graphics, consider the following:
The richer the graphics, more bandwidth it will take
Text, window UI elements, and solid color areas are consuming less bandwidth than anything else.
Natural images are the most significant contributors to bandwidth use. But client-side caching helps
with its reduction.
Only changed parts of the screen are transmitted. If there are no visible updates on the screen, no updates
are sent.
Video playback and other high-frame-rate content are essentially an image slideshow. RDP dynamically uses
appropriate video codecs to deliver them with the close to original frame rate. However, it's still graphics, and
it's still the most significant contributor to bandwidth utilization.
Idle time in remote desktop means no or minimal screen updates; so, network use is minimal during idle
times.
When remote desktop client window is minimized, no graphical updates are sent from the session host.
Keep in mind that the stress put on your network depends on both your app workload's output frame rate and
your display resolution. If either the frame rate or display resolution increases, the bandwidth requirement will
also rise. For example, a light workload with a high-resolution display requires more available bandwidth than a
light workload with regular or low resolution. Different display resolutions require different available
bandwidths.
The table below guides estimating of the data used by the different graphic scenarios. These numbers apply to a
single monitor configuration with 1920x1080 resolution and with both default graphics mode and H.264/AVC
444 graphics mode.
H . 264/ AVC 444 DESC RIP T IO N O F
SC EN A RIO DEFA ULT M O DE M O DE T H UM B N A IL T H E SC EN A RIO
NOTE
Make sure that RDP Shortpath for managed networks is enabled - throttle rate-limiting are not supported for reverse
connect transport.
gpupdate /force
Next steps
To learn about bandwidth requirements for Azure Virtual Desktop, see Understanding Remote Desktop
Protocol (RDP) Bandwidth Requirements for Azure Virtual Desktop.
To learn about Azure Virtual Desktop network connectivity, see Understanding Azure Virtual Desktop
network connectivity.
To get started with Quality of Service (QoS) for Azure Virtual Desktop, see Implement Quality of Service
(QoS) for Azure Virtual Desktop.
Proxy server guidelines for Azure Virtual Desktop
3/7/2022 • 6 minutes to read • Edit Online
This article will show you how to use a proxy server with Azure Virtual Desktop. The recommendations in this
article only apply to connections between Azure Virtual Desktop infrastructure, client, and session host agents.
This article doesn't cover network connectivity for Office, Windows 10, FSLogix, or other Microsoft applications.
Android No
iOS Yes
macOS Yes
For more information about proxy support on Linux based thin clients, see Thin client support.
Support limitations
There are many third-party services and applications that act as a proxy server. These third-party services
include distributed next-gen firewalls, web security systems, and basic proxy servers. We can't guarantee that
every configuration is compatible with Azure Virtual Desktop. Microsoft only provides limited support for
connections established over a proxy server. If you're experiencing connectivity issues while using a proxy server,
Microsoft support recommends you configure a proxy bypass and then try to reproduce the issue.
Next steps
For more information about keeping your Azure Virtual Desktop deployment secure, check out our security
guide.
Determine user connection latency in Azure Virtual
Desktop
3/7/2022 • 2 minutes to read • Edit Online
Azure Virtual Desktop is globally available. Administrators can create virtual machines (VMs) in any Azure
region they want. Connection latency will vary depending on the location of the users and the virtual machines.
Azure Virtual Desktop services will continuously roll out to new geographies to improve latency.
The Azure Virtual Desktop Experience Estimator tool can help you determine the best location to optimize the
latency of your VMs. We recommend you use the tool every two to three months to make sure the optimal
location hasn't changed as Azure Virtual Desktop rolls out to new areas.
Next steps
To check the best location for optimal latency, see the Azure Virtual Desktop Experience Estimator tool.
For pricing plans, see Azure Virtual Desktop pricing.
To get started with your Azure Virtual Desktop deployment, check out our tutorial.
Delegated access in Azure Virtual Desktop
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Azure Virtual Desktop has a delegated access model that lets you define the amount of access a particular user
is allowed to have by assigning them a role. A role assignment has three components: security principal, role
definition, and scope. The Azure Virtual Desktop delegated access model is based on the Azure RBAC model. To
learn more about specific role assignments and their components, see the Azure role-based access control
overview.
Azure Virtual Desktop delegated access supports the following values for each element of the role assignment:
Security principal
Users
User groups
Service principals
Role definition
Built-in roles
Custom roles
Scope
Host pools
App groups
Workspaces
Run the following cmdlet to add Azure Active Directory user group to an app group:
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Azure Virtual Desktop supports two load-balancing algorithms. Each algorithm determines which session host
will host a user's session when they connect to a resource in a host pool.
The following load-balancing algorithms are available in Azure Virtual Desktop:
Breadth-first load balancing allows you to evenly distribute user sessions across the session hosts in a host
pool.
Depth-first load balancing allows you to saturate a session host with user sessions in a host pool. Once the
first session host reaches its session limit threshold, the load balancer directs any new user connections to
the next session host in the host pool until it reaches its limit, and so on.
Each host pool can only configure one type of load-balancing specific to it. However, both load-balancing
algorithms share the following behaviors no matter which host pool they're in:
If a user already has an active or disconnected session in the host pool and signs in again, the load balancer
will successfully redirect them to the session host with their existing session. This behavior applies even if
that session host's AllowNewConnections property is set to False (drain mode is enabled).
If a user doesn't already have a session in the host pool, then the load balancer won't consider session hosts
whose AllowNewConnections property is set to False during load balancing.
The Azure Virtual Desktop service recommends FSLogix profile containers as a user profile solution. FSLogix is
designed to roam profiles in remote computing environments, such as Azure Virtual Desktop. It stores a
complete user profile in a single container. At sign in, this container is dynamically attached to the computing
environment using natively supported Virtual Hard Disk (VHD) and Hyper-V Virtual Hard disk (VHDX). The user
profile is immediately available and appears in the system exactly like a native user profile. This article describes
how FSLogix profile containers used with Azure Files function in Azure Virtual Desktop.
NOTE
If you're looking for comparison material about the different FSLogix Profile Container storage options on Azure, see
Storage options for FSLogix profile containers.
User profiles
A user profile contains data elements about an individual, including configuration information like desktop
settings, persistent network connections, and application settings. By default, Windows creates a local user
profile that is tightly integrated with the operating system.
A remote user profile provides a partition between user data and the operating system. It allows the operating
system to be replaced or changed without affecting the user data. In Remote Desktop Session Host (RDSH) and
Virtual Desktop Infrastructures (VDI), the operating system may be replaced for the following reasons:
An upgrade of the operating system
A replacement of an existing Virtual Machine (VM)
A user being part of a pooled (non-persistent) RDSH or VDI environment
Microsoft products operate with several technologies for remote user profiles, including these technologies:
Roaming user profiles (RUP)
User profile disks (UPD)
Enterprise state roaming (ESR)
UPD and RUP are the most widely used technologies for user profiles in Remote Desktop Session Host (RDSH)
and Virtual Hard Disk (VHD) environments.
Challenges with previous user profile technologies
Existing and legacy Microsoft solutions for user profiles came with various challenges. No previous solution
handled all the user profile needs that come with an RDSH or VDI environment. For example, UPD cannot
handle large OST files and RUP does not persist modern settings.
Functionality
The following table shows benefits and limitations of previous user profile technologies.
BAC K-
EN D
SUP P O BAC K- STO RA SUB SE
M O DE RT ED EN D GE VERSIO Q UEN T
RN W IN 32 OS ON STO RA ON- N SIGN
T EC H N SET T IN SET T IN SET T IN USER SERVER GE O N P REM I SUP P O IN
O LO GY GS GS GS DATA SK U A Z URE SES RT T IM E N OT ES
Performance
UPD requires Storage Spaces Direct (S2D) to address performance requirements. UPD uses Server Message
Block (SMB) protocol. It copies the profile to the VM in which the user is being logged.
Cost
While S2D clusters achieve the necessary performance, the cost is expensive for enterprise customers, but
especially expensive for small and medium business (SMB) customers. For this solution, businesses pay for
storage disks, along with the cost of the VMs that use the disks for a share.
Administrative overhead
S2D clusters require an operating system that is patched, updated, and maintained in a secure state. These
processes and the complexity of setting up S2D disaster recovery make S2D feasible only for enterprises with a
dedicated IT staff.
Next steps
Use the following guides to set up a Azure Virtual Desktop environment.
To start building out your desktop virtualization solution, see Create a tenant in Azure Virtual Desktop.
To create a host pool within your Azure Virtual Desktop tenant, see Create a host pool with Azure
Marketplace.
To set up fully managed file shares in the cloud, see Set up Azure Files share.
To configure FSLogix profile containers, see Create a profile container for a host pool using a file share.
To assign users to a host pool, see Manage app groups for Azure Virtual Desktop.
To access your Azure Virtual Desktop resources from a web browser, see Connect to Azure Virtual Desktop.
Storage options for FSLogix profile containers in
Azure Virtual Desktop
3/7/2022 • 4 minutes to read • Edit Online
Azure offers multiple storage solutions that you can use to store your FSLogix profile container. This article
compares storage solutions that Azure offers for Azure Virtual Desktop FSLogix user profile containers. We
recommend storing FSLogix profile containers on Azure Files for most of our customers.
Azure Virtual Desktop offers FSLogix profile containers as the recommended user profile solution. FSLogix is
designed to roam profiles in remote computing environments, such as Azure Virtual Desktop. At sign-in, this
container is dynamically attached to the computing environment using a natively supported Virtual Hard Disk
(VHD) and a Hyper-V Virtual Hard Disk (VHDX). The user profile is immediately available and appears in the
system exactly like a native user profile.
The following tables compare the storage solutions Azure Storage offers for Azure Virtual Desktop FSLogix
profile container user profiles.
Platform service Yes, Azure-native solution Yes, Azure-native solution No, self-managed
Capacity 100 TiB per share, Up to 5 100 TiB per volume, up to Maximum 32 TiB per disk
PiB per general purpose 12.5 PiB per subscription
account
Required infrastructure Minimum share size 1 GiB Minimum capacity pool 4 Two VMs on Azure IaaS (+
TiB, min volume size 100 Cloud Witness) or at least
GiB three VMs without and
costs for disks
F EAT URES A Z URE F IL ES A Z URE N ETA P P F IL ES STO RA GE SPA C ES DIREC T
Protocols SMB 3.0/2.1, NFSv4.1 NFSv3, NFSv4.1 (preview), NFSv3, NFSv4.1, SMB 3.1
(preview), REST SMB 3.x/2.x
Backup Azure backup snapshot Azure NetApp Files Azure backup snapshot
integration snapshots integration
Security and compliance All Azure supported ISO completed All Azure supported
certificates certificates
Azure Active Directory Native Active Directory and Azure Active Directory Native Active Directory or
integration Azure Active Directory Domain Services and Native Azure Active Directory
Domain Services Active Directory Domain Services support
only
Once you've chosen your storage method, check out Azure Virtual Desktop pricing for information about our
pricing plans.
Light (more than 200 users) Premium file shares or standard with multiple file shares
For more information about Azure Files performance, see File share and file scale targets. For more information
about pricing, see Azure Files pricing.
Next steps
To learn more about FSLogix profile containers, user profile disks, and other user profile technologies, see the
table in FSLogix profile containers and Azure files.
If you're ready to create your own FSLogix profile containers, get started with one of these tutorials:
Create an Azure file share with a domain controller
Create an Azure file share with Azure Active Directory
Create an Azure file share with Azure Active Directory Domain Services
Create an FSLogix profile container for a host pool using Azure NetApp files
The instructions in Deploy a two-node Storage Spaces Direct scale-out file server for UPD storage in Azure
also apply when you use an FSLogix profile container instead of a user profile disk
You can also start from the very beginning and set up your own Azure Virtual Desktop solution at Create a
tenant in Azure Virtual Desktop.
What is MSIX app attach?
3/7/2022 • 2 minutes to read • Edit Online
MSIX is a new packaging format that offers many features aimed to improve packaging experience for all
Windows apps. To learn more about MSIX, see the MSIX overview.
MSIX app attach is a way to deliver MSIX applications to both physical and virtual machines. However, MSIX app
attach is different from regular MSIX because it's made especially for Azure Virtual Desktop. This article will
describe what MSIX app attach is and what it can do for you.
Format Different app layering technologies Works with the native MSIX packaging
require different proprietary formats. format.
Repackaging overhead Proprietary formats require Apps published as MSIX don't require
sequencing and repackaging per repackaging. However, if the MSIX
update. package isn't available, repackaging
overhead still applies.
Ecosystem N/A (for example, vendors don't ship MSIX is Microsoft's mainstream
App-V) technology that key ISV partners and
in-house apps like Office are adopting.
You can use MSIX on both virtual
desktops and physical Windows
computers.
F EAT URE T RA DIT IO N A L A P P L AY ERIN G M SIX A P P AT TA C H
User experience Impacts user sign-in time. Boundary Delivered apps are indistinguishable
exists between OS state, app state, and from locally installed applications.
user data.
Next steps
If you want to learn more about MSIX app attach, check out our glossary and FAQ. Otherwise, get started with
Set up app attach.
MSIX app attach glossary
3/7/2022 • 4 minutes to read • Edit Online
This article is a list of definitions for key terms and concepts related to MSIX app attach.
MSIX container
An MSIX container is where MSIX apps are run. To learn more, see MSIX containers.
MSIX application
An application stored in an .MSIX file.
MSIX package
An MSIX package is an MSIX file or application.
MSIX share
An MSIX share is a network share that holds expanded MSIX packages. MSIX shares must support SMB 3 or
later. The shares must also be accessible to the Virtual Machines (VM) in the host pool system account. MSIX
packages get staged from the MSIX share without having to move application files to the system drive.
MSIX image
An MSIX image is a VHD, VHDx, or CIM file that contains one or more MSIX packaged applications. Each
application is delivered in the MSIX image using the MSIXMGR tool.
Repackage
Repackaging takes a non-MSIX application and converts it into MSIX using the MSIX Packaging Tool (MPT). For
more information, see MSIX Packaging Tool overview.
Staging
Staging involves two things:
Mounting the VHD(x) or CIM to the VM.
Notifying the OS that the MSIX package is available for registration.
Registration
Registration makes a staged MSIX package available for your users. Registering is on a per-user basis. If you
haven't explicitly registered an app for that specific user, they won't be able to run the app.
There are two types of registration: regular and delayed.
Regular registration
In regular registration, each application assigned to a user is fully registered. Registration happens during the
time the user signs in to the session, which might impact the time it takes for them to start using Azure Virtual
Desktop.
Delayed registration
In delayed registration, each application assigned to the user is only partially registered. Partial registration
means that the Start menu tile and double-click file associations are registered. Registration happens while the
user signs in to their session, so it has minimal impact on the time it takes to start using Azure Virtual Desktop.
Registration completes only when the user runs the application in the MSIX package.
Delayed registration is currently the default configuration for MSIX app attach.
Deregistration
Deregistration removes a registered but non-running MSIX package for a user. Deregistration happens while the
user signs out of their session. During deregistration, MSIX app attach pushes application data specific to the
user to the local user profile.
Destage
Destaging notifies the OS that an MSIX package or application that currently isn't running and isn't staged for
any user can be unmounted. This removes all reference to it in the OS.
CIM
.CIM is a new file extension associated with Composite Image Files System (CimFS). Mounting and unmounting
CIM files is faster that VHD files. CIM also consumes less CPU and memory than VHD.
A CIM file is a file with a .CIM extension that contains metadata and at least two additional files that contain
actual data. The files within the CIM file don't have extensions. The following table is a list of example files you'd
find inside a CIM:
VSC CIM 1 KB
objectid_b5742e0b-1b98-40b3-94a6- NA 27 KB
9cb96f497e56_0
objectid_b5742e0b-1b98-40b3-94a6- NA 20 KB
9cb96f497e56_1
objectid_b5742e0b-1b98-40b3-94a6- NA 42 KB
9cb96f497e56_2
region_b5742e0b-1b98-40b3-94a6- NA 428 KB
9cb96f497e56_0
region_b5742e0b-1b98-40b3-94a6- NA 217 KB
9cb96f497e56_1
region_b5742e0b-1b98-40b3-94a6- NA 264,132 KB
9cb96f497e56_2
The following table is a performance comparison between VHD and CimFS. These numbers were the result of a
test run with five hundred 300 MB files in each format run on a DSv4 machine.
SP EC S VH D C IM F S
Next steps
If you want to learn more about MSIX app attach, check out our overview and FAQ. Otherwise, get started with
Set up app attach.
Estimate Azure Monitor costs
3/7/2022 • 11 minutes to read • Edit Online
Azure Monitor Logs is a service that collects, indexes, and stores data generated by your environment. Because
of this, the Azure Monitor pricing model is based on the amount of data that's brought into and processed (or
"ingested") by your Log Analytics workspace in gigabytes per day. The cost of a Log Analytics workspace isn't
only based on the volume of data collected, but also which Azure payment plan you've selected and how long
you choose to store the data your environment generates.
This article will explain the following things to help you understand how pricing in Azure Monitor works:
How to estimate data ingestion and storage costs upfront before you enable this feature
How to measure and control your ingestion and storage to reduce costs when using this feature
NOTE
All sizes and pricing listed in this article are just examples to demonstrate how estimation works. For a more accurate
assessment based on your Azure Monitor Log Analytics pricing model and Azure region, see Azure Monitor pricing.
If we estimate each record size to be 200 bytes, an example VM running a light workload on the default sample
rate would send roughly 90 megabytes of performance counter data per day per VM. Meanwhile, an example
VM running a power workload would send roughly 130 megabytes of performance counter data per day per
VM. However, record size and environment usage can vary, so the megabytes per day your deployment uses
may be different.
To learn more about input delay performance counters, see User Input Delay performance counters.
Events 2-15
In this example, the total ingested data for Azure Monitor for Azure Virtual Desktop is between 92 to 145
megabytes per VM per day. In other words, every 31 days, each VM ingests roughly 3 to 5 gigabytes of data.
Using the default Pay-as-you-go model for Log Analytics pricing, you can estimate the Azure Monitor data
collection and storage cost per month. Depending on your data ingestion, you may also consider the Capacity
Reservation model for Log Analytics pricing.
NOTE
Removing data points will impact their corresponding visuals in Azure Monitor for Azure Virtual Desktop.
NOTE
Make sure to replace the template's placeholder values with the values your environment uses, otherwise the query won't
work.
This query will show all performance counters you have enabled on the environment, not just the default ones
for Azure Monitor for Azure Virtual Desktop. This information can help you understand which areas to target to
reduce costs, like reducing a counter’s frequency or removing it altogether.
You can also reduce costs by removing performance counters. To learn how to remove performance counters or
edit existing counters to reduce their frequency, see Configuring performance counters.
Manage Windows Event Logs
Windows Events are unlikely to cause a spike in data ingestion when all hosts are healthy. An unhealthy host can
increase the number of events sent to the log, but the information can be critical to fixing the host's issues. We
recommend keeping them. To learn more about how to manage Windows Event Logs, see Configuring Windows
Event logs.
Manage diagnostics
Azure Virtual Desktop diagnostics should make up less than 1% of your data storage costs, so we don't
recommend removing them. To manage Azure Virtual Desktop diagnostics, Use Log Analytics for the
diagnostics feature.
Next steps
Learn more about Azure Monitor for Azure Virtual Desktop at these articles:
Use Azure Monitor for Azure Virtual Desktop to monitor your deployment.
Use the glossary to learn more about terms and concepts.
If you encounter a problem, check out our troubleshooting guide for help.
Check out Monitoring usage and estimated costs in Azure Monitor to learn more about managing your
monitoring costs.
Azure Monitor for Azure Virtual Desktop glossary
3/7/2022 • 7 minutes to read • Edit Online
This article lists and briefly describes key terms and concepts related to Azure Monitor for Azure Virtual Desktop
(preview).
Alerts
Any active Azure Monitor alerts that you've configured on the subscription and classified as severity 0 will
appear in the Overview page. To learn how to set up alerts, see Azure Monitor Log Alerts.
Available sessions
Available sessions shows the number of available sessions in the host pool. The service calculates this number
by multiplying the number of virtual machines (VMs) by the maximum number of sessions allowed per virtual
machine, then subtracting the total sessions.
Connection success
This item shows connection health. "Connection success" means that the connection could reach the host, as
confirmed by the stack on that virtual machine. A failed connection means that the connection couldn't reach the
host.
Daily alerts
The total number of alerts triggered each day.
Input delay
"Input delay" in Azure Monitor for Azure Virtual Desktop means the input delay per process performance
counter for each session. In the host performance page at aka.ms/azmonwvdi, this performance counter is
configured to send a report to the service once every 30 seconds. These 30-second intervals are called
"samples," and the report the worst case in that window. The median and p95 values reflect the median and
95th percentile across all samples.
Under Input delay by host , you can select a session host row to filter all other visuals in the page to that host.
You can also select a process name to filter the median input delay over time chart.
We put delays in the following categories:
Good: below 150 milliseconds.
Acceptable: 150-500 milliseconds.
Poor: 500-2,000 milliseconds (below 2 seconds).
Bad: over 2,000 milliseconds (2 seconds and up).
To learn more about how the input delay counter works, see User Input Delay performance counters.
Performance counters
Performance counters show the performance of hardware components, operating systems, and applications.
The following table lists the recommended performance counters and time intervals that Azure Monitor uses for
Azure Virtual Desktop:
P ERF O RM A N C E C O UN T ER N A M E T IM E IN T ERVA L
Memory(*)\Pages/sec 30 seconds
To learn more about how to read performance counters, see Configuring performance counters.
To learn more about input delay performance counters, see User Input Delay performance counters.
Session history
The Sessions item shows the status of all sessions, connected and disconnected. Idle sessions only shows the
disconnected sessions.
Severity 0 alerts
The most urgent items that you need to take care of right away. If you don't address these issues, they could
cause your Azure Virtual Desktop deployment to stop working.
Time to connect
Time to connect is the time between when a user starts their session and when they're counted as being signed
in to the service. Establishing new connections tends to take longer than reestablishing existing connections.
User report
The user report page lets you view a specific user’s connection history and diagnostic information. Each user
report shows usage patterns, user feedback, and any errors users have encountered during their sessions. Most
smaller issues can be resolved with user feedback. If you need to dig deeper, you can also filter information
about a specific connection ID or period of time.
To learn more about Windows Event Logs, see Windows Event records properties.
Next steps
To get started, see Use Azure Monitor for Azure Virtual Desktop to monitor your deployment.
To estimate, measure, and manage your data storage costs, see Estimate Azure Monitor costs.
If you encounter a problem, check out our troubleshooting guide for help and known issues.
You can also set up Azure Advisor to help you figure out how to resolve or prevent common issues. Learn more
at Introduction to Azure Advisor.
If you need help or have any questions, check out our community resources:
Ask questions or make suggestions to the community at the Azure Virtual Desktop TechCommunity.
To learn how to leave feedback, see Troubleshooting overview, feedback, and support for Azure Virtual
Desktop.
You can also leave feedback for Azure Virtual Desktop at the Azure Virtual Desktop feedback hub
Data locations for Azure Virtual Desktop
3/7/2022 • 3 minutes to read • Edit Online
Azure Virtual Desktop is currently available for all geographical locations. Administrators can choose the
location to store user data when they create the host pool virtual machines and associated services, such as file
servers. Learn more about Azure geographies at Data residency in Azure.
NOTE
Microsoft doesn't control or limit the regions where you or your users can access your user and app-specific data.
IMPORTANT
Azure Virtual Desktop stores various types of information like host pool names, app group names, workspace names, and
user principal names in a datacenter. While creating any of the service objects, the customer has to enter the location
where the object needs to be created. The location of this object determines where the information for the object will be
stored. The customer will choose an Azure region and the related information will be stored in the associated geography.
For a list of all Azure regions and related geographies, visit https://azure.microsoft.com/global-infrastructure/geographies/.
This article describes which information the Azure Virtual Desktop service stores. To learn more about the
customer data definitions, see How Microsoft categorizes data for online services.
Customer input
To set up the Azure Virtual Desktop service, the customer must create host pools and other service objects.
During configuration, the customer must give information like the host pool name, application group name, and
so on. This information is considered customer input. Customer input is stored in the geography associated with
the region the object is created in. Azure Resource Manager paths to the objects are considered organizational
information, so data residency doesn't apply to them. Data about Azure Resource Manager paths will be stored
outside of the chosen geography.
Customer data
The service doesn't directly store any user or app-related information, but it does store customer data like
application names and user principal names because they're part of the object setup process. This information is
stored in the geography associated with the region the customer created the object in.
Diagnostic data
Azure Virtual Desktop gathers service-generated diagnostic data whenever the customer or user interacts with
the service. This data is only used for troubleshooting, support, and checking the health of the service in
aggregate form. For example, from the session host side, when a VM registers to the service, we generate
information that includes the virtual machine (VM) name, which host pool the VM belongs to, and so on. This
information is stored in the geography associated with the region the host pool is created in. Also, when a user
connects to the service and launches a remote desktop, we generate diagnostic information that includes the
user principal name, client location, client IP address, which host pool the user is connecting to, and so on. This
information is sent to two different locations:
The location closest to the user where the service infrastructure (client traces, user traces, diagnostic data) is
present.
The location where the host pool is located.
Service-generated data
To keep Azure Virtual Desktop reliable and scalable, we aggregate traffic patterns and usage to check the health
and performance of the infrastructure control plane. For example, to understand how to ramp up regional
infrastructure capacity as service usage increases, we process service usage log data. We then review the logs
for peak times and decide which data centers to add to meet this capacity. We aggregate this information from
all locations where the service infrastructure is, then send it to the US region. The data sent to the US region
includes scrubbed data, but not customer data.
We currently support storing the aforementioned data in the following locations:
United States (US) (generally available)
Europe (EU) (generally available)
United Kingdom (UK) (generally available)
Canada (CA) (generally available)
More geographies will be added as the service grows. The stored information is encrypted at rest, and geo-
redundant mirrors are maintained within the geography. Customer data, such as app settings and user data,
resides in the location the customer chooses and isn't managed by the service.
The outlined data is replicated within the Azure geography for disaster recovery purposes.
Security best practices
3/7/2022 • 10 minutes to read • Edit Online
Azure Virtual Desktop is a managed virtual desktop service that includes many security capabilities for keeping
your organization safe. In a Azure Virtual Desktop deployment, Microsoft manages portions of the services on
the customer’s behalf. The service has many built-in advanced security features, such as Reverse Connect, which
reduce the risk involved with having remote desktops accessible from anywhere.
This article describes additional steps you can take as an admin to keep your customers' Azure Virtual Desktop
deployments secure.
Security responsibilities
What makes cloud services different from traditional on-premises virtual desktop infrastructures (VDIs) is how
they handle security responsibilities. For example, in a traditional on-premises VDI, the customer would be
responsible for all aspects of security. However, in most cloud services, these responsibilities are shared between
the customer and the company.
When you use Azure Virtual Desktop, it’s important to understand that while some components come already
secured for your environment, you'll need to configure other areas yourself to fit your organization’s security
needs.
Here are the security needs you're responsible for in your Azure Virtual Desktop deployment:
Identity Yes
Physical hosts No
Physical network No
Physical datacenter No
The security needs the customer isn't responsible for are handled by Microsoft.
NOTE
BitLocker should not be used to encrypt the specific disk where you're storing your FSLogix profile data.
Virtualization-based Security
Virtualization-based Security (VBS) uses the hypervisor to create and isolate a secure region of memory that's
inaccessible to the OS. Hypervisor-Protected Code Integrity (HVCI) and Windows Defender Credential Guard
both use VBS to provide increased protection from vulnerabilities.
Hypervisor-Protected Code Integrity
HVCI is a powerful system mitigation that uses VBS to protect Windows kernel-mode processes against
injection and execution of malicious or unverified code.
Windows Defender Credential Guard
Windows Defender Credential Guard uses VBS to isolate and protect secrets so that only privileged system
software can access them. This prevents unauthorized access to these secrets and credential theft attacks, such
as Pass-the-Hash attacks.
Nested virtualization
The following operating systems support running nested virtualization on Azure Virtual Desktop:
Windows Server 2016
Windows Server 2019
Windows Server 2022
Windows 10 Enterprise
Windows 10 Enterprise multi-session
Windows 11
NOTE
When using Windows Defender Access Control, we recommend only targeting policies at the device level. Although it's
possible to target policies to individual users, once the policy is applied, it affects all users on the device equally.
Next steps
To learn how to enable multi-factor authentication, see Set up multi-factor authentication.
Screen capture protection
3/7/2022 • 2 minutes to read • Edit Online
The screen capture protection feature prevents sensitive information from being captured on the client
endpoints. When you enable this feature, remote content will be automatically blocked or hidden in screenshots
and screen shares. Also, the Remote Desktop client will hide content from malicious software that may be
capturing the screen.
Prerequisites
The screen capture protection feature is configured on the session host level and enforced on the client. Only
clients that support this feature can connect to the remote session. Following clients currently support screen
capture protection:
Windows Desktop client supports screen capture protection for full desktops only.
macOS client version 10.7.0 or later supports screen capture protection for both RemoteApp and full
desktops.
Suppose the user attempts to use an unsupported client to connect to the protected session host. In that case,
the connection will fail with error 0x1151.
7. Open the "Enable screen capture protection" policy and set it to "Enabled" .
Next steps
To learn about Azure Virtual Desktop security best practices, see Azure Virtual Desktop security best
practices.
Azure Virtual Desktop for Azure Stack HCI (preview)
3/7/2022 • 3 minutes to read • Edit Online
IMPORTANT
Azure Virtual Desktop for Azure Stack HCI is currently in preview. See the Supplemental Terms of Use for Microsoft Azure
Previews for legal terms that apply to Azure features that are in beta, preview, or otherwise not yet released into general
availability.
Azure Virtual Desktop for Azure Stack HCI (preview) lets you deploy Azure Virtual Desktop session hosts to your
on-premises Azure Stack HCI infrastructure. You can also use Azure Virtual Desktop for Azure Stack HCI to
manage your session hosts from the Azure portal. If you already have an existing on-premises Virtual Desktop
Infrastructure (VDI) deployment, Azure Virtual Desktop for Azure Stack HCI can improve your administrator and
end-user experience. If you're already using Azure Virtual Desktop in the cloud, you can extend your deployment
to your on-premises infrastructure to better meet your performance or data locality needs.
Azure Virtual Desktop for Azure Stack HCI is currently in public preview. Azure Stack HCI doesn't currently
support certain important Azure Virtual Desktop features. Because of these limitations, we don't recommend
using this feature for production workloads yet.
Key benefits
We've established what Azure Virtual Desktop for Azure Stack HCI is. The question remains: what can it do for
you?
With Azure Virtual Desktop for Azure Stack HCI, you can:
Improve performance for Azure Virtual Desktop users in areas with poor connectivity to the Azure public
cloud by giving them session hosts closer to their location.
Meet data locality requirements by keeping app and user data on-premises. For more information, see
Data locations for Azure Virtual Desktop.
Improve access to legacy on-premises apps and data sources by keeping virtual desktops and apps in the
same location.
Reduce costs and improve user experience with Windows 10 and Windows 11 Enterprise multi-session
virtual desktops.
Simplify your VDI deployment and management compared to traditional on-premises VDI solutions by
using the Azure portal.
Pricing
The following things affect how much it costs to run Azure Virtual Desktop for Azure Stack HCI:
Infrastructure costs. You'll pay monthly service fees for Azure Stack HCI. Learn more at Azure Stack HCI
pricing.
User access rights for Azure Virtual Desktop. The same licenses that grant access to Azure Virtual
Desktop in the cloud also apply to Azure Virtual Desktop for Azure Stack HCI. Learn more at Azure Virtual
Desktop pricing.
The Azure Virtual Desktop hybrid service fee. This fee requires you to pay for each active virtual CPU
(vCPU) of Azure Virtual Desktop session hosts you're running on Azure Stack HCI. This fee will become
active once the preview period ends.
Next steps
Now that you’re familiar with Azure Virtual Desktop for Azure Stack HCI, learn how to deploy this feature at Set
up Azure Virtual Desktop for Azure Stack HCI (preview).
Tag Azure Virtual Desktop resources to manage
costs
3/7/2022 • 7 minutes to read • Edit Online
Tagging is a tool available across Azure services that helps you organize resources inside their Azure
subscription. Organizing resources makes it easier to track costs across multiple services. Tags also help you
understand how much each grouping of Azure resources costs per billing cycle. If you'd like to learn more about
tagging in general, see Use tags to organize your Azure resources and management hierarchy. You can also
watch a quick video about some other ways to use Azure tags.
IMPORTANT
Tagged Azure resources that haven't been active since you applied new or updated tags to them won't report any activity
associated with the changed tags to Azure Cost Management. You won't be able to filter for specific tags until their
associated activity is reported to Azure Cost Management by the service.
Next steps
If you’d like to learn more about common Azure Virtual Desktop related costs, check out Understanding total
Azure Virtual Desktop deployment costs.
If you’d like to learn more about Azure tags, check out the following resources:
Use tags to organize your Azure resources and management hierarchy
A video explaining the value of using Azure tags
How tags are used in cost and usage data
Develop your naming and tagging strategy for Azure resources
Define your tagging strategy
Resource naming and tagging decision guide
If you’d like to learn more about Azure Cost Management, check out the following articles:
What is Azure Cost Management + Billing?
Quickstart: Explore and analyze costs with cost analysis
Migrate automatically from Azure Virtual Desktop
(classic)
3/7/2022 • 8 minutes to read • Edit Online
The migration module tool lets you migrate your organization from Azure Virtual Desktop (classic) to Azure
Virtual Desktop automatically. This article will show you how to use the tool.
Requirements
Before you use the migration module, make sure you have the following things ready:
An Azure subscription where you'll create new Azure service objects.
You must be assigned the Contributor role to create Azure objects on your subscription, and the User
Access Administrator role to assign users to application groups.
At least Remote Desktop Services (RDS) Contributor permissions on an RDS tenant or the specific host
pools you're migrating.
The latest version of the Microsoft.RdInfra.RDPowershell PowerShell module
The latest version of the Az.DesktopVirtualization PowerShell module
The latest version of the Az.Resources PowerShell module
Install the migration module in your computer
PowerShell or PowerShell ISE to run the scripts you'll see in this article. The
Microsoft.RdInfra.RDPowershell module doesn't work in PowerShell Core.
IMPORTANT
Migration only creates service objects in the US geography. If you try to migrate your service objects to another
geography, it won't work. Also, if you have more than 500 app groups in your Azure Virtual Desktop (classic) deployment,
you won't be able to migrate. You'll only be able to migrate if you rebuild your environment to reduce the number of app
groups within your Azure Active Directory (Azure AD) tenant.
Get-Module Az.Resources
Get-Module Az.DesktopVirtualization
https://www.powershellgallery.com/packages/Az.DesktopVirtualization/
https://www.powershellgallery.com/packages/Az.Resources/
If you don't, then install and import the modules by running these cmdlets:
Install-module Az.Resources
Import-module Az.Resources
Install-module Az.DesktopVirtualization
Import-module Az.DesktopVirtualization
2. Next, uninstall the current RDInfra PowerShell module by running this cmdlet:
4. Once you're done installing everything, run this cmdlet to make sure you have the right versions of the
modules:
Get-Module Microsoft.RDInfra.RDPowershell
5. Now, let's install and import the migration module by running these cmdlets:
6. Once you're done, sign into Windows Virtual Desktop (classic) in your PowerShell window:
Login-AzAccount
8. If you have multiple subscriptions, select the one you want to migrate your resources to with this cmdlet:
9. Register the Resource Provider in Azure portal for the selected subscription.
10. Finally you'll need to register the provider. There are two ways you can do this:
If you want to use PowerShell, then run this cmdlet:
If you'd rather use the Azure portal, open and sign in to the Azure portal, then go to
Subscriptions and select the name of the subscription you want to use. After that, go to
Resource Provider > Microsoft.DesktopVir tualization and select Re-register . You won't see
anything change in the UI just yet, but your PowerShell environment should now be ready to run
the module.
Get-RdsHostPoolMigrationMapping
With Get-RdsHostPoolMigrationMapping , you can create a CSV file that maps where your resources
will go. For example, if your tenant's name is "Contoso," and you want to store your mapping file in the
"contosouser" file, you'd run a cmdlet that looks like this:
2. Next, run the Star t-RdsHostPoolMigration cmdlet to choose whether to migrate a single host pool or
all host pools within a tenant.
For example:
If you want to migrate your resources a specific host pool, then include the host pool name. For example,
if you want to move the host pool named "Office," run a command like this:
If you don't give a workspace name, the module will automatically create one for you based on the tenant
name. However, if you'd prefer to use a specific workspace, you can enter its resource ID like this:
If you'd like to use a specific workspace but don't know its resource ID, run this cmdlet:
You'll also need to specify a user assignment mode for the existing user assignments:
Use Copy to copy all user assignments from your old app groups to Azure Resource Manager
application groups. Users will be able to see feeds for both versions of their clients.
Use None if you don't want to change the user assignments. Later, you can assign users or user
groups to app groups with the Azure portal, PowerShell, or API. Users will only be able to see feeds
using the Azure Virtual Desktop (classic) clients.
You can only copy 2,000 user assignments per subscription, so your limit will depend on how many
assignments are already in your subscription. The module calculates the limit based on how many
assignments you already have. If you don't have enough assignments to copy, you'll get an error message
that says "Insufficient role assignment quota to copy user assignments. Rerun command without the -
CopyUserAssignments switch to migrate."
3. After you run the commands, it will take up to 15 minutes for the module to create the service objects. If
you copied or moved any user assignments, that will add to the time it takes for the module to finish
setting everything up.
After the Star t-RdsHostPoolMigration cmdlet is done, you should see the following things:
Azure service objects for the tenant or host pool you specified
Two new resource groups:
A resource group called "Tenantname," which contains your workspace.
A resource group called "Tenantname_originalHostPoolName," which contains the host pool
and desktop app groups.
Any users you published to the newly created app groups.
Virtual machines will be available in both existing and new host pools to avoid user downtime
during the migration process. This lets users connect to the same user session.
Since these new Azure service objects are Azure Resource Manager objects, the module can't set Role-
based Access Control (RBAC) permissions or diagnostic settings on them. Therefore, you'll need to update
the RBAC permissions and settings for these objects manually.
Once the module validates the initial user connections, you can also publish the app group to more users
or user groups, if you'd like.
NOTE
After migration, if you move app groups to a different resource group after assigning permissions to users, it will
remove all RBAC roles. You'll need to reassign users RBAC permissions all over again.
4. If you want to delete all Azure Virtual Desktop (classic) service objects, run Complete-
RdsHostPoolMigration to finish the migration process. This cmdlet will delete all Azure Virtual Desktop
(classic) objects, leaving only the new Azure objects. Users will only be able to see the feed for the newly
created app groups on their clients. Once this command is done, you can safely delete the Azure Virtual
Desktop (classic) tenant to finish the process.
For example:
If you want to complete a specific host pool, you can include the host pool name in the cmdlet. For
example, if you want to complete a host pool named "Office," you'd use a command like this:
This will delete all service objects created by Azure Virtual Desktop (classic). You will be left with just the
new Azure objects and users will only be able to see the feed for the newly created app groups on their
clients. Once you are done finalizing your migration, you need to explicitly delete the tenant in Azure
Virtual Desktop (classic).
5. If you've changed your mind about migrating and want to revert the process, run the Rever t-
RdsHostPoolMigration cmdlet.
For example:
If you'd like to revert a specific host pool, you can include the host pool name in the command. For
example, if you want to revert a host pool named "Office," then you'd enter something like this:
This cmdlet will delete all newly created Azure service objects. Your users will only see the feed for Azure
Virtual Desktop (classic) objects in their clients.
However, the cmdlet won't delete the workspace the module created or its associated resource group.
You'll need to manually delete those items to get rid of them.
6. If you don't want to delete your Azure Virtual Desktop (classic) service objects yet but do want to test
migration, you can run Set-RdsHostPoolHidden .
For example:
Setting the status to "true" will hide the Azure Virtual Desktop (classic) resources. Setting it to "false" will
reveal the resources to your users.
The -Hostpool parameter is optional. You can use this parameter if there's a specific Azure Virtual Desktop
(classic) host pool you want to hide.
This cmdlet will hide the Azure Virtual Desktop (classic) user feed and service objects instead of deleting
them. However, this is usually only used for testing and doesn't count as a completed migration. To
complete your migration, you'll need to run the Complete-RdsHostPoolMigration command.
Otherwise, revert your deployment by running Rever t-RdsHostPoolMigration .
Next steps
If you'd like to learn how to migrate your deployment manually instead, see Migrate manually from Azure
Virtual Desktop (classic).
Once you've migrated, get to know how Azure Virtual Desktop works by checking out our tutorials. Learn about
advanced management capabilities at Expand an existing host pool and Customize RDP properties.
To learn more about service objects, check out Azure Virtual Desktop environment.
Migrate manually from Azure Virtual Desktop
(classic)
3/7/2022 • 3 minutes to read • Edit Online
Azure Virtual Desktop (classic) creates its service environment with PowerShell cmdlets, REST APIs, and service
objects. An "object" in a Azure Virtual Desktop service environment is a thing that Azure Virtual Desktop creates.
Service objects include tenants, host pools, application groups, and session hosts.
However, Azure Virtual Desktop (classic) isn't integrated with Azure. Without Azure integration, any objects you
create aren't automatically managed by the Azure portal because they're not connected to your Azure
subscription.
The recent major update of Azure Virtual Desktop marks a shift in the service towards full Azure integration.
Objects you create in Azure Virtual Desktop are automatically managed by the Azure portal.
In this article, we'll explain why you should consider migrating to the latest version of Azure Virtual Desktop.
After that, we'll tell you how to manually migrate from Azure Virtual Desktop (classic) to the latest update of
Azure Virtual Desktop.
Why migrate?
Major updates can be inconvenient, especially ones you have to do manually. However, there are some reasons
why you can't automatically migrate:
Existing service objects made with the classic release don't have any representation in Azure. Their scope
doesn't extend beyond the Azure Virtual Desktop service.
With the latest update, the service's application ID was changed to remove consent for apps the way it did for
Azure Virtual Desktop (classic). You won't be able to create new Azure objects with Azure Virtual Desktop
unless they're authenticated with the new application ID.
Despite the hassle, migrating away from the classic version is still important. Here's what you can do after you
migrate:
Manage Azure Virtual Desktop through the Azure portal.
Assign Azure Active Directory (AD) user groups to application groups.
Use the improved Log Analytics feature to troubleshoot your deployment.
Use Azure-native role-based access control (Azure RBAC) to manage administrative access.
Next steps
If you'd like to learn how to migrate your deployment automatically instead, go to Migrate automatically from
Azure Virtual Desktop (classic).
Once you've migrated, get to know how Azure Virtual Desktop works by checking out our tutorials. Learn about
advanced management capabilities at Expand an existing host pool and Customize RDP properties.
To learn more about service objects, check out Azure Virtual Desktop environment.
Connect with the Windows Desktop client
3/7/2022 • 2 minutes to read • Edit Online
You can access Azure Virtual Desktop resources on devices with Windows 11, Windows 10, Windows 10 IoT
Enterprise, and Windows 7 using the Windows Desktop client.
IMPORTANT
This method doesn't support Windows 8 or Windows 8.1.
This method only supports Azure Resource Manager objects. To support objects without Azure Resource Manager, see
Connect with Windows Desktop (classic) client.
This method also doesn't support the RemoteApp and Desktop Connections (RADC) client or the Remote Desktop
Connection (MSTSC) client.
Subscribe to a Workspace
To subscribe to a Workspace, choose to:
Use a work or school account and have the client discover the resources available for you.
Use the specific URL of the resource.
To launch the resource once subscribed, go to the Connection Center and double-click the resource.
TIP
To launch a resource from the Star t menu, you can find the folder with the Workspace name or enter the resource name
in the search bar.
Next steps
To learn more about how to use the client, check out Get started with the Windows Desktop client.
If you're an admin interested in learning more about the client's features, check out Windows Desktop client for
admins.
Connect with the Microsoft Store client
3/7/2022 • 2 minutes to read • Edit Online
You can access Azure Virtual Desktop resources on devices with Windows 10.
Subscribe to a workspace
Subscribe to the workspace provided by your admin to get the list of managed resources you can access on
your PC.
To subscribe to a workspace:
1. In the Connection Center screen, tap +Add , then tap Workspaces .
2. Enter the Workspace URL into the Workspace URL field provided by your admin. The workspace URL can
be either a URL or an email address.
If you're using a Workspace URL, use the URL your admin gave you.
If you're connecting from Azure Virtual Desktop, use one of the following URLs depending on which
version of the service you're using:
Azure Virtual Desktop (classic):
https://rdweb.wvd.microsoft.com/api/feeddiscovery/webfeeddiscovery.aspx .
Azure Virtual Desktop: https://rdweb.wvd.microsoft.com/api/arm/feeddiscovery .
3. Tap Subscribe .
4. Provide your credentials when prompted.
5. After subscribing, the workspaces should be displayed in the Connection Center.
Workspaces may be added, changed, or removed based on changes made by your administrator.
Next steps
To learn more about how to use the Microsoft Store client, check out Get started with the Microsoft Store client.
Connect to Azure Virtual Desktop with the macOS
client
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
You can access Azure Virtual Desktop resources from your macOS devices with our downloadable client. This
guide will tell you how to set up the client.
Subscribe to a feed
Subscribe to the feed your admin gave you to get the list of managed resources available to you on your macOS
device.
To subscribe to a feed:
1. Select Add Workspace on the main page to connect to the service and retrieve your resources.
2. Enter the Feed URL. This can be a URL or email address:
If you use a URL, use the one your admin gave you. Normally, the URL is
https://rdweb.wvd.microsoft.com/api/arm/feeddiscovery.
To use email, enter your email address. This tells the client to search for a URL associated with your
email address if your admin configured the server that way.
To connect through the US Gov portal, use https://rdweb.wvd.azure.us/api/arm/feeddiscovery.
3. Select Add .
4. Sign in with your user account when prompted.
After you've signed in, you should see a list of available resources.
Once you've subscribed to a feed, the feed's content will update automatically on a regular basis. Resources may
be added, changed, or removed based on changes made by your administrator.
Next steps
To learn more about the macOS client, check out the Get started with the macOS client documentation.
Connect to Azure Virtual Desktop with the web
client
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
The web client lets you access your Azure Virtual Desktop resources from a web browser without the lengthy
installation process.
NOTE
The web client doesn't currently have mobile OS support.
While any HTML5-capable browser should work, we officially support the following operating systems and
browsers:
B RO W SER SUP P O RT ED O S N OT ES
NOTE
If you've already signed in with a different Azure Active Directory account than the one you want to use for Azure Virtual
Desktop, you should either sign out or use a private browser window.
After signing in, you should now see a list of resources. You can launch resources by selecting them like you
would a normal app in the All Resources tab.
Next steps
To learn more about how to use the web client, check out Get started with the Web client.
Connect to Azure Virtual Desktop with the iOS
client
3/7/2022 • 2 minutes to read • Edit Online
Applies to: iOS 13.0 or later. Compatible with iPhone, iPad, and iPod touch.
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
You can access Azure Virtual Desktop resources from your iOS device with our downloadable client. This guide
will tell you how to set up the iOS client.
Subscribe to a feed
Subscribe to the feed provided by your admin to get the list of managed resources you can access on your iOS
device.
To subscribe to a feed:
1. In the Connection Center, tap + , and then tap Add Workspace .
2. Enter the feed URL into the Feed URL field. The feed URL can be either a URL or an email address.
If you use a URL, use the one your admin gave you. Normally, the URL is
https://rdweb.wvd.microsoft.com/api/arm/feeddiscovery.
To use email, enter your email address. This tells the client to search for a URL associated with your
email address if your admin configured the server that way.
To connect through the US Gov portal, use https://rdweb.wvd.azure.us/api/arm/feeddiscovery.
3. Tap Next .
4. Provide your credentials when prompted.
For User name , give the user name with permission to access resources.
For Password , give the password associated with the user name.
You may also be prompted to provide additional factors if your admin configured authentication that
way.
5. Tap Save .
After this, the Connection Center should display the remote resources.
Once subscribed to a feed, the feed's content will update automatically on a regular basis. Resources may be
added, changed, or removed based on changes made by your administrator.
Next steps
To learn more about how to use the iOS client, check out the Get started with the iOS client documentation.
Connect to Azure Virtual Desktop with the Android
client
3/7/2022 • 2 minutes to read • Edit Online
Applies to: Android 4.1 and later, Chromebooks with ChromeOS 53 and later.
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
You can access Azure Virtual Desktop resources from your Android device with our downloadable client. You can
also use the Android client on Chromebook devices that support the Google Play Store. This guide will tell you
how to set up the Android client.
Subscribe to a feed
Subscribe to the feed provided by your admin to get the list of managed resources you can access on your
Android device.
To subscribe to a feed:
1. In the Connection Center, tap + , and then tap Workspaces .
2. Enter the feed URL into the Feed URL field. The feed URL can be either a URL or an email address.
If you use a URL, use the one your admin gave you, normally
https://rdweb.wvd.microsoft.com/api/arm/feeddiscovery.
To use email, enter your email address. The client will search for a URL associated with your email
address if your admin configured the server that way.
To connect through the US Gov portal, use https://rdweb.wvd.azure.us/api/arm/feeddiscovery.
3. Tap NEXT .
4. Provide your credentials when prompted.
For User name , give the user name with permission to access resources.
For Password , give the password associated with the user name.
You may also be prompted to provide additional factors if your admin configured authentication that
way.
After subscribing, the Connection Center should display the remote resources.
Once subscribed to a feed, the feed's content will update automatically on a regular basis. Resources may be
added, changed, or removed based on changes made by your administrator.
Next steps
To learn more about how to use the Android client, check out Get started with the Android client.
Thin client support
3/7/2022 • 2 minutes to read • Edit Online
You can access Azure Virtual Desktop resources from your thin client devices with the web client or the
following supported clients, provided by our partners. We're working with a number of partners to enable
supported Azure Virtual Desktop clients on other platforms.
PA RT N ER PA RT N ER DO C UM EN TAT IO N PA RT N ER SUP P O RT
Next steps
Check out our documentation for the following clients:
Windows Desktop client
Web client
Android client
macOS client
iOS client
Configure device redirections
3/7/2022 • 2 minutes to read • Edit Online
Configuring device redirections for your Azure Virtual Desktop environment allows you to use printers, USB
devices, microphones and other peripheral devices in the remote session. Some device redirections require
changes to both Remote Desktop Protocol (RDP) properties and Group Policy settings.
NOTE
Even if the camerastoredirect:s: property is disabled, local cameras may be redirected through the
devicestoredirect:s: property. To fully disable camera redirection set camerastoredirect:s: and either set
devicestoredirect:s: or define some subset of plug and play devices that does not include any camera.
You can also redirect specific cameras using a semicolon-delimited list of KSCATEGORY_VIDEO_CAMERA
interfaces, such as camerastoredirect:s:\?\usb#vid_0bda&pid_58b0&mi .
Clipboard redirection
Set the following RDP property to configure clipboard redirection:
redirectclipboard:i:1 enables clipboard redirection.
redirectclipboard:i:0 disables clipboard redirection.
COM port redirections
Set the following RDP property to configure COM port redirection:
redirectcomports:i:1 enables COM port redirection.
redirectcomports:i:0 disables COM port redirection.
USB redirection
First, set the following RDP property to enable USB device redirection:
usbdevicestoredirect:s:* enables USB device redirection.
usbdevicestoredirect:s: disables USB device redirection.
Second, set the following Group Policy on the user's local device:
Navigate to Computer Configuration > Policies > Administrative Templates > Windows
Components > Remote Desktop Ser vices > Remote Desktop Connection Client > RemoteFX USB
Device Redirection .
Select Allows RDP redirection of other suppor ted RemoteFX USB devices from this computer .
Select the Enabled option, and then select the Administrators and Users in RemoteFX USB
Redirection Access Rights box.
Select OK .
Plug and play device redirection
Set the following RDP property to configure plug and play device redirection:
devicestoredirect:s:* enables redirection of all plug and play devices.
devicestoredirect:s: disables redirection of plug and play devices.
You can also select specific plug and play devices using a semicolon-delimited list, such as
devicestoredirect:s:root\*PNP0F08 .
You can also select specific drives using a semicolon-delimited list, such as drivestoredirect:s:C:;E:; .
To enable web client file transfer, set drivestoredirect:s:* . If you set any other value for this RDP property, web
client file transfer will be disabled.
Printer redirection
Set the following RDP property to configure printer redirection:
redirectprinters:i:1 enables printer redirection.
redirectprinters:i:0 disables printer redirection.
Smart card redirection
Set the following RDP property to configure smart card redirection:
redirectsmartcards:i:1 enables smart card redirection.
redirectsmartcards:i:0 disables smart card redirection.
Set up the PowerShell module for Azure Virtual
Desktop
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager integration.
The Azure Virtual Desktop PowerShell module is integrated into the Azure PowerShell module. This article will
tell you how to set up the PowerShell module so you can run cmdlets for Azure Virtual Desktop.
NOTE
If this cmdlet doesn't work, try running it again with elevated permissions.
Connect-AzAccount
IMPORTANT
If you're connecting to the US Gov portal, run this cmdlet instead:
Signing into your Azure account requires a code that's generated when you run the Connect cmdlet. To sign in,
go to https://microsoft.com/devicelogin, enter the code, then sign in using your Azure admin credentials.
Account SubscriptionName TenantId Environment
This will sign you directly into the subscription that is default for your admin credentials.
You can also select one from a list using the Out-GridView cmdlet:
When you select a new subscription to use, you don't need to specify that subscription's ID in cmdlets you run
afterwards. For example, the following cmdlet retrieves a specific session host without needing the subscription
ID:
You can also change subscriptions on a per-cmdlet basis by adding the desired subscription name as a
parameter. The next cmdlet is the same as the previous example, except with the subscription ID added as a
parameter to change which subscription the cmdlet uses.
Get locations
The location parameter is mandatory for all New-AzWVD cmdlets that create new objects.
Run the following cmdlet to get a list of locations your subscription supports:
Get-AzLocation
Location : southeastasia
Location : centralus
DisplayName : Central US
Location : eastus
DisplayName : East US
Once you know your account's location, you can use it in a cmdlet. For example, here's a cmdlet that creates a
host pool in the "southeastasia" location:
Next steps
Now that you've set up your PowerShell module, you can run cmdlets to do all sorts of things in Azure Virtual
Desktop. Here are some of the places you can use your module:
Run through our Azure Virtual Desktop tutorials to set up your very own Azure Virtual Desktop
environment.
Create a host pool with PowerShell
Configure the Azure Virtual Desktop load-balancing method
Configure the personal desktop host pool assignment type
And much more!
If you run into any issues, check out our PowerShell troubleshooting article for help.
Create an Azure Virtual Desktop host pool with
PowerShell or the Azure CLI
3/7/2022 • 6 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Host pools are a collection of one or more identical virtual machines within Azure Virtual Desktop tenant
environments. Each host pool can be associated with multiple RemoteApp groups, one desktop app group, and
multiple session hosts.
If you haven't already done so, follow the instructions in Set up the PowerShell module.
Run the following cmdlet to sign in to the Azure Virtual Desktop environment:
This cmdlet will create the host pool, workspace and desktop app group. Additionally, it will register the desktop
app group to the workspace. You can either create a workspace with this cmdlet or use an existing workspace.
Run the next cmdlet to create a registration token to authorize a session host to join the host pool and save it to
a new file on your local computer. You can specify how long the registration token is valid by using the -
ExpirationTime parameter.
NOTE
The token's expiration date can be no less than an hour and no more than one month. If you set -ExpirationTime outside
of that limit, the cmdlet won't create the token.
For example, if you want to create a token that expires in two hours, run this cmdlet:
After that, run this cmdlet to add Azure Active Directory users to the default desktop app group for the host
pool.
Run this next cmdlet to add Azure Active Directory user groups to the default desktop app group for the host
pool:
Run the following cmdlet to export the registration token to a variable, which you will use later in Register the
virtual machines to the Azure Virtual Desktop host pool.
NOTE
If you're deploying a virtual machine using Windows 7 as the host OS, the creation and deployment process will be a little
different. For more details, see Deploy a Windows 7 virtual machine on Azure Virtual Desktop.
After you've created your session host virtual machines, apply a Windows license to a session host VM to run
your Windows or Windows Server virtual machines without paying for another license.
NOTE
If you're joining your VMs to an Azure Active Directory Domain Services (Azure AD DS) environment, ensure that
your domain join user is also a member of the AAD DC Administrators group.
IMPORTANT
We recommend that you don't enable any policies or configurations that disable Windows Installer. If you disable
Windows Installer, the service won't be able to install agent updates on your session hosts, and your session hosts won't
function properly.
Register the virtual machines to the Azure Virtual Desktop host pool
Registering the virtual machines to a Azure Virtual Desktop host pool is as simple as installing the Azure Virtual
Desktop agents.
To register the Azure Virtual Desktop agents, do the following on each virtual machine:
1. Connect to the virtual machine with the credentials you provided when creating the virtual machine.
2. Download and install the Azure Virtual Desktop Agent.
Download the Azure Virtual Desktop Agent.
Run the installer. When the installer asks you for the registration token, enter the value you got from
the Get-AzWvdRegistrationInfo cmdlet.
3. Download and install the Azure Virtual Desktop Agent Bootloader.
Download the Azure Virtual Desktop Agent Bootloader.
Run the installer.
IMPORTANT
To help secure your Azure Virtual Desktop environment in Azure, we recommend you don't open inbound port 3389 on
your VMs. Azure Virtual Desktop doesn't require an open inbound port 3389 for users to access the host pool's VMs. If
you must open port 3389 for troubleshooting purposes, we recommend you use just-in-time VM access. We also
recommend you don't assign your VMs to a public IP.
Next steps
Now that you've made a host pool, you can populate it with RemoteApps. To learn more about how to manage
apps in Azure Virtual Desktop, see the Manage app groups tutorial.
Manage app groups tutorial
Deploy Azure AD-joined virtual machines in Azure
Virtual Desktop
3/7/2022 • 5 minutes to read • Edit Online
This article will walk you through the process of deploying and accessing Azure Active Directory joined virtual
machines in Azure Virtual Desktop. Azure AD-joined VMs remove the need to have line-of-sight from the VM to
an on-premises or virtualized Active Directory Domain Controller (DC) or to deploy Azure AD Domain services
(Azure AD DS). In some cases, it can remove the need for a DC entirely, simplifying the deployment and
management of the environment. These VMs can also be automatically enrolled in Intune for ease of
management.
Supported configurations
The following configurations are currently supported with Azure AD-joined VMs:
Personal desktops with local user profiles.
Pooled desktops used as a jump box. In this configuration, users first access the Azure Virtual Desktop VM
before connecting to a different PC on the network. Users shouldn't save data on the VM.
Pooled desktops or apps where users don't need to save data on the VM. For example, for applications that
save data online or connect to a remote database.
User accounts can be cloud-only or hybrid users from the same Azure AD tenant.
Known limitations
The following known limitations may impact access to your on-premises or Active Directory domain-joined
resources and should be considered when deciding whether Azure AD-joined VMs are right for your
environment. We currently recommend Azure AD-joined VMs for scenarios where users only need access to
cloud-based resources or Azure AD-based authentication.
Azure Virtual Desktop (classic) doesn't support Azure AD-joined VMs.
Azure AD-joined VMs don't currently support external users.
Azure AD-joined VMs only supports local user profiles at this time.
Azure AD-joined VMs can't access Azure Files file shares for FSLogix or MSIX app attach. You'll need Kerberos
authentication to access either of these features.
The Windows Store client doesn't currently support Azure AD-joined VMs.
Azure Virtual Desktop doesn't currently support single sign-on for Azure AD-joined VMs.
User profiles
You can use FSLogix profile containers with Azure AD-joined VMs when you store them on Azure Files. For more
information, see Create a profile container with Azure Files and Azure AD.
Next steps
Now that you've deployed some Azure AD joined VMs, you can sign in to a supported Azure Virtual Desktop
client to test it as part of a user session. If you want to learn how to connect to a session, check out these articles:
Connect with the Windows Desktop client
Connect with the web client
Troubleshoot connections to Azure AD-joined VMs
Deploy a Windows 7 virtual machine on Azure
Virtual Desktop
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
The process to deploy a Windows 7 virtual machine (VM) on Azure Virtual Desktop is slightly different than for
VMs running later versions of Windows. This guide will tell you how to deploy Windows 7.
Prerequisites
Before you start, follow the instructions in Create a host pool with PowerShell to create a host pool. If you're
using the portal, follow the instructions in steps 1 through 9 of Create a host pool using the Azure portal. After
that, select Review + Create to create an empty host pool.
shutdown /r /t 0
Next steps
Your Azure Virtual Desktop deployment is now ready to use. Download the latest version of the Azure Virtual
Desktop client to get started.
For a list of known issues and troubleshooting instructions for Windows 7 on Azure Virtual Desktop, see our
troubleshooting article at Troubleshoot Windows 7 virtual machines in Azure Virtual Desktop.
Configure graphics processing unit (GPU)
acceleration for Azure Virtual Desktop
3/7/2022 • 6 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Azure Virtual Desktop supports GPU-accelerated rendering and encoding for improved app performance and
scalability. GPU acceleration is particularly crucial for graphics-intensive apps.
Follow the instructions in this article to create a GPU optimized Azure virtual machine, add it to your host pool,
and configure it to use GPU acceleration for rendering and encoding. This article assumes you already have a
Azure Virtual Desktop tenant configured.
NOTE
Azure's NC, NCv2, NCv3, ND, and NDv2 series VMs are generally not appropriate for Azure Virtual Desktop session hosts.
These VMs are tailored for specialized, high-performance compute or machine learning tools, such as those built with
NVIDIA CUDA. They do not support GPU acceleration for most apps or the Windows user interface.
NOTE
Multi-session OS is not specifically listed however NV instances GRID license supports 25 concurrent users, see NV-series
You must also configure an app group, or use the default desktop app group (named "Desktop Application
Group") that's automatically created when you create a new host pool. For instructions, see Tutorial: Manage app
groups for Azure Virtual Desktop.
NOTE
GPU-accelerated frame encoding is not available in NVv4-series VMs.
1. Select policy Configure H.264/AVC hardware encoding for Remote Desktop connections and set
this policy to Enabled to enable hardware encoding for AVC/H.264 in the remote session.
NOTE
In Windows Server 2016, set option Prefer AVC Hardware Encoding to Always attempt .
2. Now that the group policies have been edited, force a group policy update. Open the Command Prompt
and type:
gpupdate.exe /force
If you often use applications that produce a high-frame rate content, such as 3D modeling, CAD/CAM and video
applications, you may choose to enable a fullscreen video encoding for a remote session. Fullscreen video
profile provides a higher frame rate and better user experience for such applications at expense of network
bandwidth and both session host and client resources. It is recommended to use GPU-accelerated frame
encoding for a full-screen video encoding. Configure Group Policy for the session host to enable fullscreen video
encoding. Continuing the steps above:
1. Select policy Prioritize H.264/AVC 444 Graphics mode for Remote Desktop connections and set
this policy to Enabled to force H.264/AVC 444 codec in the remote session.
2. Now that the group policies have been edited, force a group policy update. Open the Command Prompt
and type:
gpupdate.exe /force
Next steps
These instructions should have you up and running with GPU acceleration on one session host (one VM). Some
additional considerations for enabling GPU acceleration across a larger host pool:
Consider using a VM extension to simplify driver installation and updates across a number of VMs. Use the
NVIDIA GPU Driver Extension for VMs with NVIDIA GPUs, and use the AMD GPU Driver Extension for VMs
with AMD GPUs.
Consider using Active Directory Group Policy to simplify group policy configuration across a number of VMs.
For information about deploying Group Policy in the Active Directory domain, see Working with Group Policy
Objects.
Expand an existing host pool with new session hosts
3/7/2022 • 3 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
As you ramp up usage within your host pool, you may need to expand your existing host pool with new session
hosts to handle the new load.
This article will tell you how you can expand an existing host pool with new session hosts.
9. For the vir tual network information , select the virtual network and subnet to which you want the
virtual machines to be joined to. You can select the same virtual network your existing machines currently
use or choose a different one that's more suitable to the region you selected in step 7.
10. For the Domain to join , select if you want to join the virtual machines to Active Directory or Azure
Active Directory. Selecting Enroll the VM with Intune automatically enrolls the virtual machines in
Intune. All virtual machines in a host pool should be joined to the same domain or Azure AD tenant.
11. For the AD domain join UPN , enter an Active Directory domain username and password associated
with the domain you selected. These credentials will be used to join the virtual machines to the Active
Directory domain.
NOTE
Ensure your admin names comply with info given here. And that there is no MFA enabled on the account.
12. For the Vir tual Machine Administrator account , enter the local administrator account information
you want to use for all virtual machines.
13. Select the Tags tab if you have any tags that you want to group the virtual machines with. Otherwise,
skip this tab.
14. Select the Review + Create tab. Review your choices, and if everything looks fine, select Create .
Next steps
Now that you've expanded your existing host pool, you can sign in to a Azure Virtual Desktop client to test them
as part of a user session. You can connect to a session with any of the following clients:
Connect with the Windows Desktop client
Connect with the web client
Connect with the Android client
Connect with the macOS client
Connect with the iOS client
Manage app groups using PowerShell or the Azure
CLI
3/7/2022 • 3 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
The default app group created for a new Azure Virtual Desktop host pool also publishes the full desktop. In
addition, you can create one or more RemoteApp application groups for the host pool. Follow this tutorial to
create a RemoteApp app group and publish individual Star t menu apps.
In this tutorial, learn how to:
Create a RemoteApp group.
Grant access to RemoteApp programs.
Prerequisites
Azure PowerShell
Azure CLI
This article assumes you've followed the instructions in Set up the PowerShell module to set up your PowerShell
module and sign in to your Azure account.
2. (Optional) To verify that the app group was created, you can run the following cmdlet to see a list of all
app groups for the host pool.
3. Run the following cmdlet to get a list of Star t menu apps on the host pool's virtual machine image. Write
down the values for FilePath , IconPath , IconIndex , and other important information for the application
that you want to publish.
Get-AzWvdStartMenuItem -ApplicationGroupName <appgroupname> -ResourceGroupName <resourcegroupname> |
Format-List | more
The output should show all the Start menu items in a format like this:
AppAlias : access
CommandLineArgument :
FilePath : C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE
FriendlyName :
IconIndex : 0
IconPath : C:\Program Files\Microsoft Office\Root\VFS\Windows\Installer\{90160000-000F-
0000-1000-0000000FF1CE}\accicons.exe
Id :
/subscriptions/resourcegroups/providers/Microsoft.DesktopVirtualization/applicationgroups/startmenuit
ems/Access
Name : 0301RAG/Access
Type : Microsoft.DesktopVirtualization/applicationgroups/startmenuitems
AppAlias : charactermap
CommandLineArgument :
FilePath : C:\windows\system32\charmap.exe
FriendlyName :
IconIndex : 0
IconPath : C:\windows\system32\charmap.exe
Id :
/subscriptions/resourcegroups/providers/Microsoft.DesktopVirtualization/applicationgroups/startmenuit
ems/Character Map
Name : 0301RAG/Character Map
Type : Microsoft.DesktopVirtualization/applicationgroups/startmenuitems
4. Run the following cmdlet to install the application based on AppAlias . AppAlias becomes visible when
you run the output from step 3.
5. (Optional) Run the following cmdlet to publish a new RemoteApp program to the application group
created in step 1.
6. To verify that the app was published, run the following cmdlet.
7. Repeat steps 1–5 for each application that you want to publish for this app group.
8. Run the following cmdlet to grant users access to the RemoteApp programs in the app group.
All host pools created in Azure Virtual Desktop are attached to session hosts and app groups. To delete a host
pool, you need to delete its associated app groups and session hosts. Deleting an app group is fairly simple, but
deleting a session host is more complicated. When you delete a session host, you need to make sure it doesn't
have any active user sessions. All user sessions on the session host should be logged off to prevent users from
losing data.
Portal
Azure PowerShell
Azure CLI
Next steps
To learn how to create a host pool, check out these articles:
Create a host pool with the Azure portal
Create a host pool with PowerShell
To learn how to configure host pool settings, check out these articles:
Customize Remote Desktop Protocol properties for a host pool
Configure the Azure Virtual Desktop load-balancing method
Configure the personal desktop host pool assignment type
Create a profile container for a host pool using a file
share
3/7/2022 • 3 minutes to read • Edit Online
The Azure Virtual Desktop service offers FSLogix profile containers as the recommended user profile solution.
We don't recommend using the User Profile Disk (UPD) solution, which will be deprecated in future versions of
Azure Virtual Desktop.
This article will tell you how to set up a FSLogix profile container share for a host pool using a virtual machine-
based file share. We strongly recommend using Azure Files instead of file shares. For more FSLogix
documentation, see the FSLogix site.
NOTE
If you're looking for comparison material about the different FSLogix Profile Container storage options on Azure, see
Storage options for FSLogix profile containers.
Prepare the virtual machine to act as a file share for user profiles
The following are general instructions about how to prepare a virtual machine to act as a file share for user
profiles:
1. Add the Azure Virtual Desktop Active Directory users to an Active Directory security group. This security
group will be used to authenticate the Azure Virtual Desktop users to the file share virtual machine you just
created.
2. Connect to the file share virtual machine.
3. On the file share virtual machine, create a folder on the C drive that will be used as the profile share.
4. Right-click the new folder, select Proper ties , select Sharing , then select Advanced sharing....
5. Select Share this folder , select Permissions..., then select Add....
6. Search for the security group to which you added the Azure Virtual Desktop users, then make sure that
group has Full Control .
7. After adding the security group, right-click the folder, select Proper ties , select Sharing , then copy down the
Network Path to use for later.
For more information about permissions, see the FSLogix documentation.
Enabled DWORD 1
IMPORTANT
To help secure your Azure Virtual Desktop environment in Azure, we recommend you don't open inbound port 3389 on
your VMs. Azure Virtual Desktop doesn't require an open inbound port 3389 for users to access the host pool's VMs. If
you must open port 3389 for troubleshooting purposes, we recommend you use just-in-time VM access.
Create a profile container with Azure NetApp Files
and AD DS
3/7/2022 • 8 minutes to read • Edit Online
We recommend using FSLogix profile containers as a user profile solution for the Azure Virtual Desktop service.
FSLogix profile containers store a complete user profile in a single container and are designed to roam profiles
in non-persistent remote computing environments like Azure Virtual Desktop. When you sign in, the container
dynamically attaches to the computing environment using a locally supported virtual hard disk (VHD) and
Hyper-V virtual hard disk (VHDX). These advanced filter-driver technologies allow the user profile to be
immediately available and appear in the system exactly like a local user profile. To learn more about FSLogix
profile containers, see FSLogix profile containers and Azure files.
You can create FSLogix profile containers using Azure NetApp Files, an easy-to-use Azure native platform
service that helps customers quickly and reliably provision enterprise-grade SMB volumes for their Azure
Virtual Desktop environments. To learn more about Azure NetApp Files, see What is Azure NetApp Files?
This guide will show you how to set up an Azure NetApp Files account and create FSLogix profile containers in
Azure Virtual Desktop.
This article assumes you already have host pools set up and grouped into one or more tenants in your Azure
Virtual Desktop environment. To learn how to set up tenants, see Create a tenant in Azure Virtual Desktop and
our Tech Community blog post.
The instructions in this guide are specifically for Azure Virtual Desktop users. If you're looking for more general
guidance for how to set up Azure NetApp Files and create FSLogix profile containers outside of Azure Virtual
Desktop, see the Set up Azure NetApp Files and create an NFS volume quickstart.
NOTE
This article doesn't cover best practices for securing access to the Azure NetApp Files share.
NOTE
If you're looking for comparison material about the different FSLogix Profile Container storage options on Azure, see
Storage options for FSLogix profile containers.
Prerequisites
Before you can create an FSLogix profile container for a host pool, you must:
Set up and configure Azure Virtual Desktop
Provision a Azure Virtual Desktop host pool
5. Once Azure Cloud Shell loads, run the following two cmdlets.
6. In the left side of the window, select All ser vices . Enter Azure NetApp Files into the search box that
appears at the top of the menu.
7. Select Azure NetApp Files in the search results, then select Create .
8. Select the Add button.
9. When the New NetApp account tab opens, enter the following values:
For Name , enter your NetApp account name.
For Subscription , select the subscription for the storage account you set up in step 4 from the drop-
down menu.
For Resource group , either select an existing resource group from the drop-down menu or create a
new one by selecting Create new .
For Location , select the region for your NetApp account from the drop-down menu. This region must
be the same region as your session host VMs.
NOTE
Azure NetApp Files currently doesn't support mounting of a volume across regions.
10. When you're finished, select Create to create your NetApp account.
Create a capacity pool
Next, create a new capacity pool:
1. Go to the Azure NetApp Files menu and select your new account.
2. In your account menu, select Capacity pools under Storage service.
3. Select Add pool .
4. When the New capacity pool tab opens, enter the following values:
For Name , enter a name for the new capacity pool.
For Ser vice level , select your desired value from the drop-down menu. We recommend Premium
for most environments.
NOTE
The Premium setting provides the minimum throughput available for a Premium Service level, which is
256 MBps. You may need to adjust this throughput for a production environment. Final throughput is
based on the relationship described in Throughput limits.
For Size (TiB) , enter the capacity pool size that best fits your needs. The minimum size is 4 TiB.
5. When you're finished, select OK .
Import-Module Microsoft.RdInfra.RdPowershell
# (Optional) Install-Module Microsoft.RdInfra.RdPowershell
$brokerurl = "https://rdbroker.wvd.microsoft.com"
Add-RdsAccount -DeploymentUrl $brokerurl
3. When prompted for credentials, enter the credentials for the user with the Tenant Creator or RDS
Owner/RDS Contributor roles on the Azure Virtual Desktop tenant.
4. Run the following cmdlets to assign a user to a Remote Desktop group:
$wvdTenant = "<your-wvd-tenant>"
$hostPool = "<wvd-pool>"
$appGroup = "Desktop Application Group"
$user = "<user-principal>"
Add-RdsAppGroupUser $wvdTenant $hostPool $appGroup $user
Make sure users can access the Azure NetApp File share
1. Open your internet browser and go to https://rdweb.wvd.microsoft.com/arm/webclient.
2. Sign in with the credentials of a user assigned to the Remote Desktop group.
3. Once you've established the user session, sign in to the Azure portal with an administrative account.
4. Open Azure NetApp Files , select your Azure NetApp Files account, and then select Volumes . Once the
Volumes menu opens, select the corresponding volume.
5. Go to the Over view tab and confirm that the FSLogix profile container is using space.
6. Connect directly to any VM part of the host pool using Remote Desktop and open the File Explorer.
Then navigate to the Mount path (in the following example, the mount path is \\anf-SMB-
3863.gt1107.onmicrosoft.com\anf-VOL).
Within this folder, there should be a profile VHD (or VHDX) like the one in the following example.
Next steps
You can use FSLogix profile containers to set up a user profile share. To learn how to create user profile shares
with your new containers, see Create a profile container for a host pool using a file share.
You can also create an Azure Files file share to store your FSLogix profile in. To learn more, see Create an Azure
Files file share with a domain controller.
Upload MSIX images to Azure NetApp Files in
Azure Virtual Desktop
3/7/2022 • 2 minutes to read • Edit Online
This article describes how to upload MSIX images to Azure NetApp Files in Azure Virtual Desktop.
Requirements
Before you can start uploading the images, you'll need to set up Azure NetApp Files if you haven't already.
To set up Azure NetApp Files, you'll need the following things:
An Azure account with contributor or administrator access
A virtual machine (VM) or physical machine joined to Active Directory Domain Services (AD DS), and
permissions to access it
An Azure Virtual Desktop host pool made of domain-joined session hosts. Each session host must be in
the same region as the region you create your Azure NetApp files in. For more information, see regional
availability. If your existing session hosts aren't in one of the available regions, you'll need to create new
ones.
This article will show you how to create an FSLogix profile container with Azure Files and Azure Active Directory
Domain Services (AD DS).
Prerequisites
This article assumes you've already set up an Azure AD DS instance. If you don't have one yet, follow the
instructions in Create a basic managed domain first, then return here.
8. Run the following commands to allow your Azure Virtual Desktop users to create their own profile
container while blocking access to the profile containers from other users.
Replace <mounted-drive-letter> with the letter of the drive you used to map the drive.
Replace <user-email> with the UPN of the user or Active Directory group that contains the users that
will require access to the share.
For example:
Next steps
If you're looking for alternate ways to create FSLogix profile containers, check out the following articles:
Create a profile container for a host pool using a file share.
Create an FSLogix profile container for a host pool using Azure NetApp Files
You can find more detailed information about concepts related to FSlogix containers for Azure files in FSLogix
profile containers and Azure files.
Create a profile container with Azure Files and AD
DS
3/7/2022 • 6 minutes to read • Edit Online
In this article, you'll learn how to create an Azure file share authenticated by a domain controller on an existing
Azure Virtual Desktop host pool. You can use this file share to store storage profiles.
This process uses Active Directory Domain Services (AD DS), which is an on-prem directory service. If you're
looking for information about how to create an FSLogix profile container with Azure AD DS, see Create an
FSLogix profile container with Azure Files.
Prerequisites
Before you get started, make sure your domain controller is synchronized to Azure and resolvable from the
Azure virtual network (VNET) your session hosts are connected to.
NOTE
The accounts or groups you assign permissions to should have been created in the domain and synchronized with Azure
AD. Accounts created in Azure AD won't work.
To assign Azure role-based access control (Azure RBAC) permissions:
1. Open the Azure portal.
2. Open the storage account you created in Set up a storage account.
3. Select File shares , then select the name of the file share you plan to use.
4. Select Access Control (IAM) .
5. Select Add a role assignment .
6. In the Add role assignment tab, select Storage File Data SMB Share Elevated Contributor for the
administrator account.
To assign users permissions for their FSLogix profiles, follow these same instructions. However, when you
get to step 5, select Storage File Data SMB Share Contributor instead.
7. Select Save .
3. Run the following command to review the access permissions to the Azure file share:
icacls <mounted-drive-letter>:
Replace <mounted-drive-letter> with the letter of the drive you mapped to.
Both NT Authority\Authenticated Users and BUILTIN\Users have certain permissions by default. These
default permissions let these users read other users' profile containers. However, the permissions
described in Configure storage permissions for use with Profile Containers and Office Containers don't
let users read each others' profile containers.
4. Run the following commands to allow your Azure Virtual Desktop users to create their own profile
container while blocking access to their profile containers from other users.
Replace <mounted-drive-letter> with the letter of the drive you used to map the drive.
Replace <user-email> with the UPN of the user or Active Directory group that contains the users that
will require access to the share.
For example:
Testing
Once you've installed and configured FSLogix, you can test your deployment by signing in with a user account
that's been assigned an app group or desktop on the host pool. Make sure the user account you sign in with has
permission on the file share.
If the user has signed in before, they'll have an existing local profile that will be used during this session. To
avoid creating a local profile, either create a new user account to use for tests or use the configuration methods
described in Tutorial: Configure Profile Container to redirect User Profiles.
To check your permissions on your session:
1. Start a session on Azure Virtual Desktop.
2. Open the Azure portal.
3. Open the storage account you created in Set up a storage account.
4. Select Create a share on the Create an Azure file share page.
5. Make sure a folder containing the user profile now exists in your files.
For additional testing, follow the instructions in Make sure your profile works.
Next steps
To troubleshoot FSLogix, see this troubleshooting guide.
Create a profile container with Azure Files and
Azure Active Directory (preview)
3/7/2022 • 12 minutes to read • Edit Online
IMPORTANT
Storing FSLogix profiles on Azure Files for Azure Active Directory (AD)-joined VMs is currently in public preview. This
preview version is provided without a service level agreement, and is not recommended for production workloads. Certain
features might not be supported or might have constrained capabilities. For more information, see Supplemental Terms of
Use for Microsoft Azure Previews.
In this article, you'll learn how to create an Azure Files share to store FSLogix profiles that can be accessed by
hybrid user identities authenticated with Azure Active Directory (AD). Azure AD users can now access an Azure
file share using Kerberos authentication. This configuration uses Azure AD to issue the necessary Kerberos
tickets to access the file share with the industry-standard SMB protocol. Your end-users can access Azure file
shares over the internet without requiring a line-of-sight to domain controllers from Hybrid Azure AD-joined
and Azure AD-joined VMs.
In this article, you'll learn how to:
Configure an Azure storage account for authentication using Azure AD.
Configure the permissions on an Azure Files share.
Configure your session hosts to store FSLogix user profiles on Azure Files.
Prerequisites
The Azure AD Kerberos functionality is only available on the following operating systems:
Windows 11 Enterprise single or multi-session.
Windows 10 Enterprise single or multi-session, versions 2004 or later with the latest cumulative updates
installed, especially the KB5007253 - 2021-11 Cumulative Update Preview for Windows 10.
Windows Server, version 2022 with the latest cumulative updates installed, especially the KB5007254 -
2021-11 Cumulative Update Preview for Microsoft server operating system version 21H2.
The user accounts must be hybrid user identities, which means you'll also need Active Directory Domain
Services (AD DS) and Azure AD Connect. You must create these accounts in Active Directory and sync them to
Azure AD. The service doesn't currently support environments where users are managed with Azure AD and
optionally synced to Azure AD Directory Services.
To assign Azure Role-Based Access Control (RBAC) permissions for the Azure file share to a user group, you
must create the group in Active Directory and sync it to Azure AD.
IMPORTANT
This feature is currently only supported in the Azure Public cloud.
Follow the instructions in the following sections to configure Azure AD authentication, configure the Azure AD
service principal, and set the API permission for your storage account.
Configure Azure AD authentication on your Azure Storage account
Install the Azure Storage PowerShell module. This module provides management cmdlets for Azure
Storage resources. It's required to create storage accounts, enable Azure AD authentication on the storage
account, and retrieve the storage account’s Kerberos keys. To install the module, open PowerShell and run
the following command:
Install the Azure AD PowerShell module. This module provides management cmdlets for Azure AD
administrative tasks such as user and service principal management. To install this module, open
PowerShell, then run the following command:
$tenantId = "<MyTenantId>"
$subscriptionId = "<MySubscriptionId>"
$resourceGroupName = "<MyResourceGroup>"
$storageAccountName = "<MyStorageAccount>"
Enable Azure AD authentication on your storage account by running the following PowerShell cmdlets:
$Uri =
('https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/stora
geAccounts/{2}?api-version=2021-04-01' -f $subscriptionId, $resourceGroupName, $storageAccountName);
$json = @{properties=@{azureFilesIdentityBasedAuthentication=@{directoryServiceOptions="AADKERB"}}};
$json = $json | ConvertTo-Json -Depth 99
$token = $(Get-AzAccessToken).Token
$headers = @{ Authorization="Bearer $token" }
try {
Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method PATCH -Headers $Headers -Body
$json;
} catch {
Write-Host $_.Exception.ToString()
Write-Error -Message "Caught exception setting Storage Account directoryServiceOptions=AADKERB:
$_" -ErrorAction Stop
}
Generate the kerb1 storage account key for your storage account by running the following PowerShell
command:
Connect to Azure AD and retrieve the tenant information by running the following cmdlets:
Connect-AzureAD
$azureAdTenantDetail = Get-AzureADTenantDetail;
$azureAdTenantId = $azureAdTenantDetail.ObjectId
$azureAdPrimaryDomain = ($azureAdTenantDetail.VerifiedDomains | Where-Object {$_._Default -eq
$true}).Name
Generate the service principal names for the Azure AD service principal by running these cmdlets:
Create a service principal for the storage account by running this cmdlet:
Set the password for the storage account's service principal by running the following cmdlets.
$Token =
([Microsoft.Open.Azure.AD.CommonLibrary.AzureSession]::AccessTokens['AccessToken']).AccessToken
$Uri = ('https://graph.windows.net/{0}/{1}/{2}?api-version=1.6' -f $azureAdPrimaryDomain,
'servicePrincipals', $servicePrincipal.ObjectId)
$json = @'
{
"passwordCredentials": [
{
"customKeyIdentifier": null,
"endDate": "<STORAGEACCOUNTENDDATE>",
"value": "<STORAGEACCOUNTPASSWORD>",
"startDate": "<STORAGEACCOUNTSTARTDATE>"
}]
}
'@
$now = [DateTime]::UtcNow
$json = $json -replace "<STORAGEACCOUNTSTARTDATE>", $now.AddDays(-1).ToString("s")
$json = $json -replace "<STORAGEACCOUNTENDDATE>", $now.AddMonths(6).ToString("s")
$json = $json -replace "<STORAGEACCOUNTPASSWORD>", $password
$Headers = @{'authorization' = "Bearer $($Token)"}
try {
Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method Patch -Headers $Headers -Body
$json
Write-Host "Success: Password is set for $storageAccountName"
} catch {
Write-Host $_.Exception.ToString()
Write-Host "StatusCode: " $_.Exception.Response.StatusCode.value
Write-Host "StatusDescription: " $_.Exception.Response.StatusDescription
}
IMPORTANT
Azure Virtual Desktop currently only supports assigning specific permissions to hybrid users and user groups. Users and
user groups must be managed in Active Directory and synced to Azure AD using Azure AD Connect.
IMPORTANT
Without proper directory level permissions in place, a user can delete the user profile or access the personal information
of a different user. It's important to make sure users have proper permissions to prevent accidental deletion from
happening.
You can set permissions (ACLs) for files and directories using either the icacls command-line utility or Windows
Explorer. The system you use to configure the permissions must meet the following requirements:
The version of Windows meets the supported OS requirements defined in the Prerequisites section.
Is Azure AD-joined or Hybrid Azure AD-joined to the same Azure AD tenant as the storage account.
Has line-of-sight to the domain controller.
Is domain-joined to your Active Directory (Windows Explorer method only).
During the public preview, configuring permissions using Windows Explorer also requires storage account
configuration. You can skip this configuration step when using icacls.
To configure your storage account:
1. On a device that's domain-joined to the Active Directory, install the ActiveDirectory PowerShell module if
you haven't already.
2. Set the required variables for your tenant, subscription, storage account name and resource group name
by running the following PowerShell cmdlets, replacing the values with the ones relevant to your
environment. You can skip this step if you've already set these values.
$tenantId = "<MyTenantId>"
$subscriptionId = "<MySubscriptionId>"
$resourceGroupName = "<MyResourceGroup>"
$storageAccountName = "<MyStorageAccount>"
3. Set the storage account's ActiveDirectoryProperties to support the Shell experience. Because Azure AD
doesn't currently support configuring ACLs in Shell, it must instead rely on Active Directory. To configure
Shell, run the following cmdlets in PowerShell:
Connect-AzAccount -Tenant $tenantId -SubscriptionId $subscriptionId
$Uri =
('https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/stora
geAccounts/{2}?api-version=2021-04-01' -f $subscriptionId, $resourceGroupName, $storageAccountName);
$json=
@{
properties=
@{azureFilesIdentityBasedAuthentication=
@{directoryServiceOptions="AADKERB";
activeDirectoryProperties=@{domainName="$($domainName)";
netBiosDomainName="$($netBiosDomainName)";
forestName="$($forestName)";
domainGuid="$($domainGuid)";
domainSid="$($domainSid)";
azureStorageSid="$($azureStorageSid)"}
}
}
};
$token = $(Get-AzAccessToken).Token
$headers = @{ Authorization="Bearer $token" }
try {
Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method PATCH -Headers $Headers -Body
$json
} catch {
Write-Host $_.Exception.ToString()
Write-Host "Error setting Storage Account AD properties. StatusCode:"
$_.Exception.Response.StatusCode.value__
Write-Host "Error setting Storage Account AD properties. StatusDescription:"
$_.Exception.Response.StatusDescription
Write-Error -Message "Caught exception setting Storage Account AD properties: $_" -ErrorAction
Stop
}
Enable Azure AD Kerberos functionality by configuring the group policy or registry value in the following list:
Group policy:
Administrative Templates\System\Kerberos\Allow retrieving the Azure AD Kerberos Ticket Granting Ticket
during logon
Registry value:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters /v
CloudKerberosTicketRetrievalEnabled /t REG_DWORD /d 1
Next, make sure you can retrieve a Kerberos Ticket Granting Ticket (TGT) by following these instructions:
1. Open a command window.
2. Run the following command:
dsregcmd /RefreshPrt
3. Lock and then unlock your device using the same user account.
4. In the command window, run the following commands:
klist purge
klist get krbtgt
klist
5. Confirm you have a Kerberos TGT by looking for an item with a server property of
krbtgt/KERBEROS.MICROSOFTONLINE.COM @ KERBEROS.MICROSOFTONLINE.COM .
6. Verify you can mount the network share by running the following command in your command window:
Finally, follow the instructions in Configure directory and file level permissions to finish configuring your
permissions with icacls or Windows Explorer. Learn more about the recommended list of permissions for
FSLogix profiles at Configure the storage permissions for profile containers.
$tenantId = "<MyTenantId>"
$subscriptionId = "<MySubscriptionId>"
$resourceGroupName = "<MyResourceGroup>"
$storageAccountName = "<MyStorageAccount>"
Run the following cmdlets in PowerShell to disable Azure AD authentication on your storage account:
Connect-AzAccount -Tenant $tenantId -SubscriptionId $subscriptionId
$Uri =
('https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/stora
geAccounts/{2}?api-version=2021-04-01' -f $subscriptionId, $resourceGroupName, $storageAccountName);
$json = @{properties=@{azureFilesIdentityBasedAuthentication=@{directoryServiceOptions="None"}}};
$json = $json | ConvertTo-Json -Depth 99
$token = $(Get-AzAccessToken).Token
$headers = @{ Authorization="Bearer $token" }
try {
Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method PATCH -Headers $Headers -Body
$json;
} catch {
Write-Host $_.Exception.ToString()
Write-Host "Error setting Storage Account directoryServiceOptions=None. StatusCode:"
$_.Exception.Response.StatusCode.value__
Write-Host "Error setting Storage Account directoryServiceOptions=None. StatusDescription:"
$_.Exception.Response.StatusDescription
Write-Error -Message "Caught exception setting Storage Account directoryServiceOptions=None: $_"
-ErrorAction Stop
}
Next steps
To troubleshoot FSLogix, see this troubleshooting guide.
To configure FSLogix profiles on Azure Files with Azure Active Directory Domain Services, see Create a
profile container with Azure Files and Azure AD DS.
To configure FSLogix profiles on Azure Files with Active Directory Domain Services, see Create a profile
container with Azure Files and AD DS.
Install Microsoft Office using FSLogix application
containers
3/7/2022 • 2 minutes to read • Edit Online
You can install Microsoft Office quickly and efficiently by using an FSLogix application container as a template
for the other virtual machines (VMs) in your host pool.
Here's why using an FSLogix app container can help make installation faster:
Offloading your Office apps to an app container reduces the requirements for your C drive size.
Snapshots or backups of your VM takes less resources.
Having an automated pipeline through updating a single image makes updating your VMs easier.
You only need one image to install Office (and other apps) onto all the VMs in your Azure Virtual Desktop
deployment.
This article will show you how to set up an FSLogix application container with Office.
Requirements
You'll need the following things to set up the rule editor:
a VM running Windows without Office installed
a copy of Office
a copy of FSLogix installed on your deployment
a network share that all VMs in your host pool have read-only access to
Install Office
To install Office on your VHD or VHDX, enable the Remote Desktop Protocol in your VM, then follow the
instructions in Install Office on a VHD master image. When installing, make sure you're using the correct
licenses.
NOTE
Azure Virtual Desktop requires Share Computer Activation (SCA).
Install FSLogix
To install FSLogix and the Rule Editor, follow the instructions in Download and install FSLogix.
If you find the service, restart the VM before continuing with step 3.
3. After that, go to Program Files > FSLogix > Apps and run the following command to create the target
VHD:
frx moveto-vhd -filename <path to network share>\office.vhdx -src "C:\Program Files\Microsoft Office"
-size-mbs 5000
The VHD you create with this command should contain the C:\Program Files\Microsoft Office folder.
NOTE
If you see any errors, uninstall Office and start over from step 1.
Next steps
If you want to learn more about FSLogix, check out our FSLogix documentation.
Authorize an account for Azure Files
3/7/2022 • 4 minutes to read • Edit Online
This article will show you how to authorize an Azure Virtual Desktop host pool to use Azure Files.
Requirements
Before you get started, you'll need the following things:
An Active Directory Domain Services (AD DS) account synced to Azure Active Directory (Azure AD)
Permissions to create a group in AD DS
A storage account and the permissions needed to create a new storage account, if necessary
A virtual machine (VM) or physical machine joined to AD DS that you have permission to access
An Azure Virtual Desktop host pool in which all session hosts have been domain joined
NOTE
If you have an existing security group you'd prefer to use, select the name of that group instead of creating a new group.
NOTE
New security groups may take up to 1 hour to sync with Azure AD.
NOTE
If you're creating a Premium storage account make sure Account Kind is set to FileStorage .
NOTE
Run the script using an on-premises AD DS credential that is synced to your Azure AD. The on-premises AD DS
credential must have either storage account owner or contributor Azure role permissions.
5. Next, go to the folder where you unzipped AzfileHybrid and run this command:
.\\CopyToPSPath.ps1
Connect-AzAccount
8. Set the following parameters, making sure to replace the placeholders with the values relevant to your
scenario:
$SubscriptionId = "<your-subscription-id-here>"
$ResourceGroupName = "<resource-group-name-here>"
$StorageAccountName = "<storage-account-name-here>"
Join-AzStorageAccountForAuth `
-ResourceGroupName $ResourceGroupName `
-StorageAccountName $StorageAccountName `
-DomainAccountType "ComputerAccount" `
-OrganizationalUnitDistinguishedName "<ou-here>" `
-EncryptionType "'RC4','AES256'"
6. Open File Explorer and find the drive letter you used in the command in step 5.
7. Right-click the drive letter, then select Proper ties > Security from the drop-down menu.
8. Select Edit , then select Add… .
NOTE
Make sure that domain name matches your AD DS domain name. If it doesn’t, then that means the storage
account hasn't been domain joined. You'll need to use a domain-joined account in order to continue.
12. Add the Active Directory group with the computer accounts with Read & execute permissions to the
security group.
13. Select Apply . If you see a Windows Security prompt, select Yes to confirm your changes.
Next steps
If you run into any issues after setup, check out our Azure Files troubleshooting article.
Customize Remote Desktop Protocol (RDP)
properties for a host pool
3/7/2022 • 3 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Customizing a host pool's Remote Desktop Protocol (RDP) properties, such as multi-monitor experience and
audio redirection, lets you deliver an optimal experience for your users based on their needs. If you'd like to
change the default RDP file properties, you can customize RDP properties in Azure Virtual Desktop by either
using the Azure portal or by using the -CustomRdpProperty parameter in the Update-AzWvdHostPool
cmdlet.
See supported RDP file settings for a full list of supported properties and their default values.
Drive redirections enabled Drives, clipboard, printers, COM ports, smart cards, devices,
and usbdevicestore
VideoPlayback Enabled
EnableCredssp Enabled
NOTE
Multi-monitor mode is only enabled for Desktop app groups and will be ignored for RemoteApp app groups.
All default RDP file properties are exposed in the Azure Portal.
By default, the CustomRdpProperty field is null in the Azure portal. A null CustomRdpProperty field will apply all
default RDP properties to your host pool. An empty CustomRdpProperty field will not apply any default RDP
properties to your host pool.
Prerequisites
Before you begin, follow the instructions in Set up the Azure Virtual Desktop PowerShell module to set up your
PowerShell module and sign in to Azure.
Configure RDP properties in the Azure portal
To configure RDP properties in the Azure portal:
1. Sign in to Azure at https://portal.azure.com.
2. Enter Azure Vir tual Desktop into the search bar.
3. Under Services, select Azure Vir tual Desktop .
4. At the Azure Virtual Desktop page, select host pools in the menu on the left side of the screen.
5. Select the name of the host pool you want to update.
6. Select RDP Proper ties in the menu on the left side of the screen.
7. Set the property you want.
Alternatively, you can open the Advanced tab and add your RDP properties in a semicolon-separated
format like the PowerShell examples in the following sections.
8. When you're done, select Save to save your changes.
The next sections will tell you how to edit custom RDP properties manually in PowerShell.
To check if the cmdlet you just ran updated the property, run this cmdlet:
Name : <hostpoolname>
CustomRdpProperty : <customRDPpropertystring>
For example, if you were checking for the "audiocapturemode" property on a host pool named 0301HP, you'd
enter this cmdlet:
Name : 0301HP
CustomRdpProperty : audiocapturemode:i:1;
$properties="<property1>;<property2>;<property3>"
Update-AzWvdHostPool -ResourceGroupName <resourcegroupname> -Name <hostpoolname> -CustomRdpProperty
$properties
You can check to make sure the RDP property was added by running the following cmdlet:
Get-AzWvdHostPool -ResourceGroupName <resourcegroupname> -Name <hostpoolname> | format-list Name,
CustomRdpProperty
Name : <hostpoolname>
CustomRdpProperty : <customRDPpropertystring>
Based on our earlier cmdlet example, if you set up multiple RDP properties on the 0301HP host pool, your
cmdlet would look like this:
Name : 0301HP
CustomRdpProperty : audiocapturemode:i:1;audiomode:i:0;
To make sure you've successfully removed the setting, enter this cmdlet:
Name : <hostpoolname>
CustomRdpProperty : <CustomRDPpropertystring>
Next steps
Now that you've customized the RDP properties for a given host pool, you can sign in to a Azure Virtual
Desktop client to test them as part of a user session. These next how-to guides will tell you how to connect to a
session using the client of your choice:
Connect with the Windows Desktop client
Connect with the web client
Connect with the Android client
Connect with the macOS client
Connect with the iOS client
Configure the Azure Virtual Desktop load-balancing
method
3/7/2022 • 2 minutes to read • Edit Online
Configuring the load-balancing method for a host pool allows you to adjust the Azure Virtual Desktop
environment to better suit your needs.
NOTE
This does not apply to a persistent desktop host pool because users always have a 1:1 mapping to a session host within
the host pool.
Prerequisites
This article assumes you've followed the instructions in Set up the Azure Virtual Desktop PowerShell module to
download and install the PowerShell module and sign in to your Azure account.
After that, to make sure you've set the breadth-first load balancing method, run the following cmdlet:
Name : hostpoolname
LoadBalancerType : BreadthFirst
To configure a host pool to perform breadth-first load balancing and to use a new maximum session limit, run
the following PowerShell cmdlet:
To configure a host pool to perform depth-first load balancing, run the following PowerShell cmdlet:
NOTE
The depth-first load balancing algorithm distributes sessions to session hosts based on the maximum session host limit (
-MaxSessionLimit ). This parameter's default value is 999999 , which is also the highest possible number you can set
this variable to. This parameter is required when you use the depth-first load balancing algorithm. For the best possible
user experience, make sure to change the maximum session host limit parameter to a number that best suits your
environment.
Name : hostpoolname
LoadBalancerType : DepthFirst
MaxSessionLimit : 6
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
You can configure the assignment type of your personal desktop host pool to adjust your Azure Virtual Desktop
environment to better suit your needs. In this topic, we'll show you how to configure automatic or direct
assignment for your users.
NOTE
The instructions in this article only apply to personal desktop host pools, not pooled host pools, since users in pooled
host pools aren't assigned to specific session hosts.
Prerequisites
This article assumes you've already downloaded and installed the Azure Virtual Desktop PowerShell module. If
you haven't, follow the instructions in Set up the PowerShell module.
To assign a user to the personal desktop host pool, run the following PowerShell cmdlet:
To assign a user to the personal desktop host pool, run the following PowerShell cmdlet:
To assign a user to a specific session host, run the following PowerShell cmdlet:
IMPORTANT
Azure Virtual Desktop will not delete any VHD or profile data for unassigned personal desktops.
You must include the -Force parameter when running the PowerShell cmdlet to unassign a personal desktop. If you
don't include the -Force parameter, you'll receive an error message.
There must be no existing user sessions on the session host when you unassign the user from the personal desktop. If
there's an existing user session on the session host while you're unassigning it, you won't be able to unassign the
personal desktop successfully.
If the session host has no user assignment, nothing will happen when you run this cmdlet.
IMPORTANT
Azure Virtual Desktop will not delete any VHD or profile data for reassigned personal desktops.
You must include the -Force parameter when running the PowerShell cmdlet to reassign a personal desktop. If you
don't include the -Force parameter, you'll receive an error message.
There must be no existing user sessions on the session host when you reassign a personal desktop. If there's an
existing user session on the session host while you're reassigning it, you won't be able to reassign the personal
desktop successfully.
If the user principal name (UPN) you enter for the -AssignedUser parameter is the same as the UPN currently assigned
to the personal desktop, the cmdlet won't do anything.
If the session host currently has no user assignment, the personal desktop will be assigned to the provided UPN.
8. Select the user you want to assign the session host to from the list of available users.
9. When you're done, select Select .
Next steps
Now that you've configured the personal desktop assignment type, you can sign in to an Azure Virtual Desktop
client to test it as part of a user session. These articles will show you how to connect to a session using the client
of your choice:
Connect with the Windows Desktop client
Connect with the web client
Connect with the Android client
Connect with the iOS client
Connect with the macOS client
Apply Windows license to session host virtual
machines
3/7/2022 • 2 minutes to read • Edit Online
Customers who are properly licensed to run Azure Virtual Desktop workloads are eligible to apply a Windows
license to their session host virtual machines and run them without paying for another license. For more
information, see Azure Virtual Desktop pricing.
A session host VM with the applied Windows license will show you something like this:
Type : Microsoft.Compute/virtualMachines
Location : westus
LicenseType : Windows_Client
VMs without the applied Windows license will show you something like this:
Type : Microsoft.Compute/virtualMachines
Location : westus
LicenseType :
Run the following cmdlet to see a list of all session host VMs that have the Windows license applied in your
Azure subscription:
$vms = Get-AzVM
$vms | Where-Object {$_.LicenseType -like "Windows_Client"} | Select-Object ResourceGroupName, Name,
LicenseType
This article will walk you through how to use the Azure portal to create a custom image to use for your Azure
Virtual Desktop session hosts. This custom image, which we'll call a "golden image," contains all apps and
configuration settings you want to apply to your deployment. There are other approaches to customizing your
session hosts, such as using device management tools like Microsoft Endpoint Manager or automating your
image build using tools like Azure Image Builder with Azure DevOps. Which strategy works best depends on the
complexity and size of your planned Azure Virtual Desktop environment and your current application
deployment processes.
NOTE
If your machine will include an antivirus app, it may cause issues when you start sysprep. To avoid this, disable all antivirus
programs before running sysprep.
Capture the VM
After you've completed sysprep and shut down your machine in the Azure portal, open the VM tab and select
the Capture button to save the image for later use. When you capture a VM, you can either add the image to a
shared image gallery or capture it as a managed image. The Shared Image Gallery lets you add features and use
existing images in other deployments. Images from a Shared Image Gallery are highly-available, ensure easy
versioning, and you can deploy them at scale. However, if you have a simpler deployment, you may want to use
a standalone managed image instead.
IMPORTANT
We recommend using Shared Image Gallery images for production environments because of their enhanced capabilities,
such as replication and image versioning. When you create a capture, you'll need to delete the VM afterwards, as you'll no
longer be able to use it after the capture process is finished. Don't try to capture the same VM twice, even if there's an
issue with the capture. Instead, create a new VM from your latest snapshot, then run sysprep again. Once you've finished
the capture process, you can use your image to create your session hosts. To find the image, open the Host pool tab,
choose Galler y , then select all images. Next, select My items and look for your managed images under My images .
Your image definitions should appear under the shared items section.
Other recommendations
Here are some extra things you should keep in mind when creating a golden image:
Don't capture a VM that already exists in your host pools. The image will conflict with the existing VM's
configuration, and the new VM won't work.
Make sure to remove the VM from the domain before running sysprep.
Delete the base VM once you've captured the image from it.
After you've captured your image, don't use the same VM you captured again. Instead, create a new base VM
from the last snapshot you created. You'll need to periodically update and patch this new VM on a regular
basis.
Don't create a new base VM from an existing custom image.
Next steps
If you want to add a language pack to your image, see Language packs.
Prepare and customize a VHD image for Azure
Virtual Desktop
3/7/2022 • 7 minutes to read • Edit Online
This article tells you how to prepare a master virtual hard disk (VHD) image for upload to Azure, including how
to create virtual machines (VMs) and install software on them. These instructions are for a Azure Virtual
Desktop-specific configuration that can be used with your organization's existing processes.
IMPORTANT
We recommend you use an image from the Azure Image Gallery. However, if you do need to use a customized image,
make sure you don't already have the Azure Virtual Desktop Agent installed on your VM. Using a customized image with
the Azure Virtual Desktop Agent can cause problems with the image, such as blocking registration and preventing user
session connections.
Create a VM
Windows 10 Enterprise multi-session is available in the Azure Image Gallery. There are two options for
customizing this image.
The first option is to provision a virtual machine (VM) in Azure by following the instructions in Create a VM from
a managed image, and then skip ahead to Software preparation and installation.
The second option is to create the image locally by downloading the image, provisioning a Hyper-V VM, and
customizing it to suit your needs, which we cover in the following section.
Local image creation
Once you've downloaded the image to a local location, open Hyper-V Manager to create a VM with the VHD
you copied. The following instructions are a simple version, but you can find more detailed instructions in Create
a virtual machine in Hyper-V.
To create a VM with the copied VHD:
1. Open the New Vir tual Machine Wizard .
2. On the Specify Generation page, select Generation 1 .
Fixed disk
If you create a VM from an existing VHD, it creates a dynamic disk by default. It can be changed to a fixed disk by
selecting Edit Disk ... as shown in the following image. For more detailed instructions, see Prepare a Windows
VHD or VHDX to upload to Azure.
You can also run the following PowerShell cmdlet to change the disk to a fixed disk.
NOTE
You can implement best practices in configuration with either Group Policy Objects (GPOs) or registry imports. The
administrator can choose either option based on their organization's requirements.
For feedback hub collection of telemetry data on Windows 10 Enterprise multi-session, run this command:
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection" /v AllowTelemetry /t REG_DWORD /d 3 /f
Enter the following commands into the registry editor to fix 5k resolution support. You must run the commands
before you can enable the side-by-side stack.
4. Once you've created the image, you should see a notification like the one in the following screenshot:
Next steps
Now that you have an image, you can create or update host pools. To learn more about how to create and
update host pools, see the following articles:
Create a host pool with an Azure Resource Manager template
Tutorial: Create a host pool with Azure Marketplace
Create a host pool with PowerShell
Create a profile container for a host pool using a file share
Configure the Azure Virtual Desktop load-balancing method
If you encountered a connectivity problem after preparing or customizing your VHD image, check out the
troubleshooting guide for help.
Install Office on a master VHD image
3/7/2022 • 4 minutes to read • Edit Online
This article tells you how to install Microsoft 365 Apps for enterprise, OneDrive, and other common applications
on a master virtual hard disk (VHD) image for upload to Azure. If your users need to access certain line of
business (LOB) applications, we recommend you install them after completing the instructions in this article.
This article assumes you've already created a virtual machine (VM). If not, see Prepare and customize a master
VHD image
This article also assumes you have elevated access on the VM, whether it's provisioned in Azure or Hyper-V
Manager. If not, see Elevate access to manage all Azure subscription and management groups.
NOTE
These instructions are for a Azure Virtual Desktop-specific configuration that can be used with your organization's existing
processes.
NOTE
Visio's stencil search feature may not work as expected in Azure Virtual Desktop.
The Office Deployment Tool contains setup.exe. To install Office, run the following command in a command line:
Sample configuration.xml
The following XML sample will install the Monthly Enterprise Channel release.
<Configuration>
<Add OfficeClientEdition="64" Channel="MonthlyEnterprise">
<Product ID="O365ProPlusRetail">
<Language ID="en-US" />
<Language ID="MatchOS" />
<ExcludeApp ID="Groove" />
<ExcludeApp ID="Lync" />
<ExcludeApp ID="OneDrive" />
<ExcludeApp ID="Teams" />
</Product>
</Add>
<RemoveMSI/>
<Updates Enabled="FALSE"/>
<Display Level="None" AcceptEULA="TRUE" />
<Logging Level="Standard" Path="%temp%\WVDOfficeInstall" />
<Property Name="FORCEAPPSHUTDOWN" Value="TRUE"/>
<Property Name="SharedComputerLicensing" Value="1"/>
</Configuration>
NOTE
The Office team recommends using 64-bit install for the OfficeClientEdition parameter.
After installing Office, you can update the default Office behavior. Run the following commands individually or
in a batch file to update the behavior.
rem Mount the default user registry hive
reg load HKU\TempDefault C:\Users\Default\NTUSER.DAT
rem Must be executed with default registry hive mounted.
reg add HKU\TempDefault\SOFTWARE\Policies\Microsoft\office\16.0\common /v InsiderSlabBehavior /t REG_DWORD
/d 2 /f
rem Set Outlook's Cached Exchange Mode behavior
rem Must be executed with default registry hive mounted.
reg add "HKU\TempDefault\software\policies\microsoft\office\16.0\outlook\cached mode" /v enable /t REG_DWORD
/d 1 /f
reg add "HKU\TempDefault\software\policies\microsoft\office\16.0\outlook\cached mode" /v syncwindowsetting
/t REG_DWORD /d 1 /f
reg add "HKU\TempDefault\software\policies\microsoft\office\16.0\outlook\cached mode" /v
CalendarSyncWindowSetting /t REG_DWORD /d 1 /f
reg add "HKU\TempDefault\software\policies\microsoft\office\16.0\outlook\cached mode" /v
CalendarSyncWindowSettingMonths /t REG_DWORD /d 1 /f
rem Unmount the default user registry hive
reg unload HKU\TempDefault
4. Run this command from an elevated command prompt to set the AllUsersInstall registry value:
6. Run this command to configure OneDrive to start at sign in for all users:
8. Redirect and move Windows known folders to OneDrive by running the following command.
Next steps
Now that you've added Office to the image, you can continue to customize your master VHD image. See Prepare
and customize a master VHD image.
Scale session hosts using Azure Automation
3/7/2022 • 16 minutes to read • Edit Online
You can reduce your total Azure Virtual Desktop deployment cost by scaling your virtual machines (VMs). This
means shutting down and deallocating session host VMs during off-peak usage hours, then turning them back
on and reallocating them during peak hours.
In this article, you'll learn about the scaling tool built with the Azure Automation account and Azure Logic App
that automatically scales session host VMs in your Azure Virtual Desktop environment. To learn how to use the
scaling tool, skip ahead to Prerequisites.
P EA K O F F - P EA K
The time when maximum user session concurrency is The time when minimum user session concurrency is
expected to be reached. expected to be reached.
During peak usage time, the job checks the current number of sessions and the VM capacity of the current
running session host for each host pool. It uses this information to calculate if the running session host VMs can
support existing sessions based on the SessionThresholdPerCPU parameter defined for the
CreateOrUpdateAzLogicApp.ps1 file. If the session host VMs can't support existing sessions, the job starts
additional session host VMs in the host pool.
NOTE
SessionThresholdPerCPU doesn't restrict the number of sessions on the VM. This parameter only determines when new
VMs need to be started to load-balance the connections. To restrict the number of sessions, you need to follow the
instructions Update-AzWvdHostPool to configure the MaxSessionLimit parameter accordingly.
During the off-peak usage time, the job determines how many session host VMs should be shut down based on
the MinimumNumberOfRDSH parameter. If you set the LimitSecondsToForceLogOffUser parameter to a non-
zero positive value, the job will set the session host VMs to drain mode to prevent new sessions from
connecting to the hosts. The job will then notify any currently signed in users to save their work, wait the
configured amount of time, and then force the users to sign out. Once all user sessions on the session host VM
have been signed out, the job will shut down the VM. After the VM shuts down, the job will reset its session host
drain mode.
NOTE
If you manually set the session host VM to drain mode, the job won't manage the session host VM. If the session host
VM is running and set to drain mode, it will be treated as unavailable, which will make the job start additional VMs to
handle the load. We recommend you tag any Azure VMs before you manually set them to drain mode. You can name the
tag with the MaintenanceTagName parameter when you create Azure Logic App Scheduler later. Tags will help you
distinguish these VMs from the ones the scaling tool manages. Setting the maintenance tag also prevents the scaling tool
from making changes to the VM until you remove the tag.
If you set the LimitSecondsToForceLogOffUser parameter to zero, the job allows the session configuration
setting in specified group policies to handle signing off user sessions. To see these group policies, go to
Computer Configuration > Policies > Administrative Templates > Windows Components > Remote
Desktop Ser vices > Remote Desktop Session Host > Session Time Limits . If there are any active
sessions on a session host VM, the job will leave the session host VM running. If there aren't any active sessions,
the job will shut down the session host VM.
During any time, the job also takes host pool's MaxSessionLimit into account to determine if the current number
of sessions is more than 90% of the maximum capacity. If it is, the job will start additional session host VMs.
The job runs periodically based on a set recurrence interval. You can change this interval based on the size of
your Azure Virtual Desktop environment, but remember that starting and shutting down VMs can take some
time, so remember to account for the delay. We recommend setting the recurrence interval to every 15 minutes.
However, the tool also has the following limitations:
This solution applies only to pooled multi-session session host VMs.
This solution manages VMs in any region, but can only be used in the same subscription as your Azure
Automation account and Azure Logic App.
The maximum runtime of a job in the runbook is 3 hours. If starting or stopping the VMs in the host pool
takes longer than that, the job will fail. For more details, see Shared resources.
At least one VM or session host needs to be turned on for the scaling algorithm to work properly.
The scaling tool doesn't support scaling based on CPU or memory.
Scaling only works with existing hosts in the host pool. The scaling tool doesn't support scaling new session
hosts.
NOTE
The scaling tool controls the load balancing mode of the host pool it's currently scaling. The tool uses breadth-first load
balancing mode for both peak and off-peak hours.
Prerequisites
Before you start setting up the scaling tool, make sure you have the following things ready:
An Azure Virtual Desktop host pool
Session host pool VMs configured and registered with the Azure Virtual Desktop service
A user with Contributor access on Azure subscription
The machine you use to deploy the tool must have:
PowerShell 5.1 or later
The Azure Az PowerShell module
If you have everything ready, let's get started.
First, you'll need an Azure Automation account to run the PowerShell runbook. The process this section
describes is valid even if you have an existing Azure Automation account that you want to use to set up the
PowerShell runbook. Here's how to set it up:
1. Open PowerShell.
2. Run the following cmdlet to sign in to your Azure account.
Login-AzAccount
NOTE
Your account must have contributor rights on the Azure subscription where you want to deploy the scaling tool.
3. Run the following cmdlet to download the script for creating the Azure Automation account:
4. Run the following cmdlet to execute the script and create the Azure Automation account. You can either
fill in values for the parameters or comment them to use their defaults.
$Params = @{
"AADTenantId" = "<Azure_Active_Directory_tenant_ID>" # Optional. If not specified,
it will use the current Azure context
"SubscriptionId" = "<Azure_subscription_ID>" # Optional. If not specified,
it will use the current Azure context
"UseARMAPI" = $true
"ResourceGroupName" = "<Resource_group_name>" # Optional. Default:
"WVDAutoScaleResourceGroup"
"AutomationAccountName" = "<Automation_account_name>" # Optional. Default:
"WVDAutoScaleAutomationAccount"
"Location" = "<Azure_region_for_deployment>"
"WorkspaceName" = "<Log_analytics_workspace_name>" # Optional. If specified, Log
Analytics will be used to configure the custom log table that the runbook PowerShell script can send
logs to
}
.\CreateOrUpdateAzAutoAccount.ps1 @Params
NOTE
If your policy doesn't let you create scaling script resources in a specific region, update the policy assignment and
add the region you want to the list of allowed regions.
5. If you haven't created an automation account before, the cmdlet's output will include an encrypted
webhook URI in the automation account variable. Make sure to keep a record of the URI because you'll
use it as a parameter when you set up the execution schedule for the Azure Logic App. If you're updating
an existing automation account, you can retrieve the webhook URI using PowerShell to access variables.
6. If you specified the parameter WorkspaceName for Log Analytics, the cmdlet's output will also include
the Log Analytics Workspace ID and its Primary Key. Make sure to remember URI because you'll need to
use it again later as a parameter when you set up the execution schedule for the Azure Logic App.
7. After you've set up your Azure Automation account, sign in to your Azure subscription and check to make
sure your Azure Automation account and the relevant runbook have appeared in your specified resource
group, as shown in the following image:
To check if your webhook is where it should be, select the name of your runbook. Next, go to your
runbook's Resources section and select Webhooks .
Login-AzAccount
3. Run the following cmdlet to download the script for creating the Azure Logic App.
4. Run the following PowerShell script to create the Azure Logic App and execution schedule for your host
pool
NOTE
You'll need to run this script for each host pool you want to autoscale, but you need only one Azure Automation
account.
$AADTenantId = (Get-AzContext).Tenant.Id
$LogAnalyticsWorkspaceId = Read-Host -Prompt "If you want to use Log Analytics, enter the Log
Analytics Workspace ID returned by when you created the Azure Automation account, otherwise leave it
blank"
$LogAnalyticsPrimaryKey = Read-Host -Prompt "If you want to use Log Analytics, enter the Log
Analytics Primary Key returned by when you created the Azure Automation account, otherwise leave it
blank"
$RecurrenceInterval = Read-Host -Prompt "Enter how often you'd like the job to run in minutes, e.g.
'15'"
$BeginPeakTime = Read-Host -Prompt "Enter the start time for peak hours in local time, e.g. 9:00"
$BeginPeakTime = Read-Host -Prompt "Enter the start time for peak hours in local time, e.g. 9:00"
$EndPeakTime = Read-Host -Prompt "Enter the end time for peak hours in local time, e.g. 18:00"
$TimeDifference = Read-Host -Prompt "Enter the time difference between local time and UTC in hours,
e.g. +5:30"
$SessionThresholdPerCPU = Read-Host -Prompt "Enter the maximum number of sessions per CPU that will
be used as a threshold to determine when new session host VMs need to be started during peak hours"
$MinimumNumberOfRDSH = Read-Host -Prompt "Enter the minimum number of session host VMs to keep
running during off-peak hours"
$MaintenanceTagName = Read-Host -Prompt "Enter the name of the Tag associated with VMs you don't want
to be managed by this scaling tool"
$LimitSecondsToForceLogOffUser = Read-Host -Prompt "Enter the number of seconds to wait before
automatically signing out users. If set to 0, any session host VM that has user sessions, will be
left untouched"
$LogOffMessageTitle = Read-Host -Prompt "Enter the title of the message sent to the user before they
are forced to sign out"
$LogOffMessageBody = Read-Host -Prompt "Enter the body of the message sent to the user before they
are forced to sign out"
$WebhookURI = Read-Host -Prompt "Enter the webhook URI that has already been generated for this Azure
Automation account. The URI is stored as encrypted in the above Automation Account variable. To
retrieve the value, see https://docs.microsoft.com/azure/automation/shared-resources/variables?
tabs=azure-powershell#powershell-cmdlets-to-access-variables"
$Params = @{
"AADTenantId" = $AADTenantId # Optional. If not
specified, it will use the current Azure context
"SubscriptionID" = $AzSubscription.Id # Optional. If not
specified, it will use the current Azure context
"ResourceGroupName" = $ResourceGroup.ResourceGroupName # Optional. Default:
"WVDAutoScaleResourceGroup"
"Location" = $ResourceGroup.Location # Optional. Default:
"West US2"
"UseARMAPI" = $true
"HostPoolName" = $WVDHostPool.Name
"HostPoolResourceGroupName" = $WVDHostPool.ResourceGroupName # Optional. Default:
same as ResourceGroupName param value
"LogAnalyticsWorkspaceId" = $LogAnalyticsWorkspaceId # Optional. If not
specified, script will not log to the Log Analytics
"LogAnalyticsPrimaryKey" = $LogAnalyticsPrimaryKey # Optional. If not
specified, script will not log to the Log Analytics
"ConnectionAssetName" = $AutoAccountConnection.Name # Optional. Default:
"AzureRunAsConnection"
"RecurrenceInterval" = $RecurrenceInterval # Optional. Default:
15
"BeginPeakTime" = $BeginPeakTime # Optional. Default:
"09:00"
"EndPeakTime" = $EndPeakTime # Optional. Default:
"17:00"
"TimeDifference" = $TimeDifference # Optional. Default:
"-7:00"
"SessionThresholdPerCPU" = $SessionThresholdPerCPU # Optional. Default:
1
"MinimumNumberOfRDSH" = $MinimumNumberOfRDSH # Optional. Default:
1
"MaintenanceTagName" = $MaintenanceTagName # Optional.
"LimitSecondsToForceLogOffUser" = $LimitSecondsToForceLogOffUser # Optional. Default:
1
"LogOffMessageTitle" = $LogOffMessageTitle # Optional. Default:
"Machine is about to shutdown."
"LogOffMessageBody" = $LogOffMessageBody # Optional. Default:
"Your session will be logged off. Please save and close everything."
"WebhookURI" = $WebhookURI
}
.\CreateOrUpdateAzLogicApp.ps1 @Params
After you run the script, the Azure Logic App should appear in a resource group, as shown in the
following image.
To make changes to the execution schedule, such as changing the recurrence interval or time zone, go to
the Azure Logic App autoscale scheduler and select Edit to go to the Azure Logic App Designer.
WVDTenantScale_CL
| where hostpoolName_s == "<host_pool_name>"
| project TimeStampUTC = TimeGenerated, TimeStampLocal = TimeStamp_s, HostPool = hostpoolName_s,
LineNumAndMessage = logmessage_s, AADTenantId = TenantId
To view the total number of currently running session host VMs and active user sessions in your host
pool, enter the following query:
WVDTenantScale_CL
| where logmessage_s contains "Number of running session hosts:"
or logmessage_s contains "Number of user sessions:"
or logmessage_s contains "Number of user sessions per Core:"
| where hostpoolName_s == "<host_pool_name>"
| project TimeStampUTC = TimeGenerated, TimeStampLocal = TimeStamp_s, HostPool = hostpoolName_s,
LineNumAndMessage = logmessage_s, AADTenantId = TenantId
To view the status of all session host VMs in a host pool, enter the following query:
WVDTenantScale_CL
| where logmessage_s contains "Session host:"
| where hostpoolName_s == "<host_pool_name>"
| project TimeStampUTC = TimeGenerated, TimeStampLocal = TimeStamp_s, HostPool = hostpoolName_s,
LineNumAndMessage = logmessage_s, AADTenantId = TenantId
Report issues
Issue reports for the scaling tool are currently being handled by Microsoft Support. When you make an issue
report, make sure to follow the instructions in Reporting issues. If you have feedback about the tool or want to
request new features, open a GitHub issue labeled 4-WVD-scaling-tool on the RDS GitHub page.
Autoscale (preview) for Azure Virtual Desktop host
pools
3/7/2022 • 10 minutes to read • Edit Online
IMPORTANT
The autoscale feature is currently in preview. See the Supplemental Terms of Use for Microsoft Azure Previews for legal
terms that apply to Azure features that are in beta, preview, or otherwise not yet released into general availability.
The autoscale feature (preview) lets you scale your Azure Virtual Desktop deployment's virtual machines (VMs)
up or down to optimize deployment costs. Based on your needs, you can make a scaling plan based on:
Time of day
Specific days of the week
Session limits per session host
NOTE
Azure Virtual Desktop (classic) doesn't support the autoscale feature.
Autoscale doesn't support Azure Virtual Desktop for Azure Stack HCI
Autoscale doesn't support scaling of ephemeral disks.
Autoscale doesn't support scaling of generalized VMs.
For best results, we recommend using autoscale with VMs you deployed with Azure Virtual Desktop Azure
Resource Manager templates or first-party tools from Microsoft.
IMPORTANT
The preview version of this feature currently has the following limitations:
You can only use autoscale in the Azure public cloud.
You can only configure autoscale with the Azure portal.
You can only deploy the scaling plan to US and European regions.
Requirements
Before you create your first scaling plan, make sure you follow these guidelines:
You can currently only configure autoscale with pooled existing host pools.
You must create the scaling plan in the same region as the host pool you assign it to. You cannot assign a
scaling plan in one region to a host pool in another region.
All host pools you use the autoscale feature for must have a configured MaxSessionLimit parameter. Don't
use the default value. You can configure this value in the host pool settings in the Azure portal or run the
New-AZWvdHostPool or Update-AZWvdHostPool cmdlets in PowerShell.
You must grant Azure Virtual Desktop access to manage power on your VM Compute resources.
{
"properties": {
"roleName": "Autoscale",
"description": "Friendly description.",
"assignableScopes": [
"/subscriptions/<SubscriptionID>"
],
"permissions": [
{
"actions": [
"Microsoft.Insights/eventtypes/values/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/powerOff/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.DesktopVirtualization/hostpools/read",
"Microsoft.DesktopVirtualization/hostpools/write",
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read",
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/write",
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/delete",
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read",
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/sendMessage/action"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
]
}
}
3. Next, name the custom role and add a description. We recommend you name the role “Autoscale.”
4. On the Permissions tab, add the following permissions to the subscription you're assigning the role to:
"Microsoft.Insights/eventtypes/values/read"
"Microsoft.Compute/virtualMachines/deallocate/action"
"Microsoft.Compute/virtualMachines/restart/action"
"Microsoft.Compute/virtualMachines/powerOff/action"
"Microsoft.Compute/virtualMachines/start/action"
"Microsoft.Compute/virtualMachines/read"
"Microsoft.DesktopVirtualization/hostpools/read"
"Microsoft.DesktopVirtualization/hostpools/write"
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/read"
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/write"
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/delete"
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read"
"Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/sendMessage/action"
NOTE
Though an exclusion tag will exclude the tagged VM from power management scaling operations, tagged VMs
will still be considered as part of the calculation of the minimum percentage of hosts.
Make sure not to include any sensitive information in the exclusion tags such as user principal names or other
personally identifiable information.
10. Select Next , which should take you to the Schedules tab.
Configure a schedule
Schedules let you define when autoscale activates ramp-up and ramp-down modes throughout the day. In each
phase of the schedule, autoscale only turns off VMs when a session host has no sessions active. The default
values you'll see when you try to create a schedule are the suggested values for weekdays, but you can change
them as needed.
To create or change a schedule:
1. In the Schedules tab, select Add schedule .
2. Enter a name for your schedule into the Schedule name field.
3. In the Repeat on field, select which days your schedule will repeat on.
4. In the Ramp up tab, fill out the following fields:
For Star t time , select a time from the drop-down menu to start preparing VMs for peak business
hours.
For Load balancing algorithm , we recommend selecting breadth-first algorithm . Breadth-
first load balancing will distribute users across existing VMs to keep access times fast.
NOTE
The load balancing preference you select here will override the one you selected for your original host pool
settings.
For Minimum percentage of hosts , enter the percentage of session hosts you want to always
remain on in this phase. If the percentage you enter isn't a whole number, it's rounded up to the
nearest whole number. For example, in a host pool of seven session hosts, if you set the minimum
percentage of hosts during ramp-up hours to 10% , one VM will always stay on during ramp-up
hours, and it won't be turned off by the autoscale feature.
For Capacity threshold , enter the percentage of available host pool capacity that will trigger a
scaling action to take place. For example, if 2 session hosts in the host pool with a max session
limit of 20 are turned on, the available host pool capacity is 40. If you set the capacity threshold to
75% and the session hosts have more than 30 user sessions, the autoscale feature will turn on a
third session host. This will then change the available host pool capacity from 40 to 60.
5. In the Peak hours tab, fill out the following fields:
For Star t time , enter a start time for when your usage rate is highest during the day. Make sure
the time is in the same time zone you specified for your scaling plan. This time is also the end time
for the ramp-up phase.
For Load balancing , you can select either breadth-first or depth-first load balancing. Breadth-first
load balancing distributes new user sessions across all available session hosts in the host pool.
Depth-first load balancing distributes new sessions to any available session host with the highest
number of connections that hasn't reached its session limit yet. For more information about load-
balancing types, see Configure the Azure Virtual Desktop load-balancing method.
NOTE
You can't change the capacity threshold here. Instead, the setting you entered in Ramp-up will carry over to this
setting.
For Ramp-down , you'll enter values into similar fields to Ramp-up , but this time it will be for
when your host pool usage drops off. This will include the following fields:
Start time
Load-balancing algorithm
Minimum percentage of hosts (%)
Capacity threshold (%)
Force logoff users
IMPORTANT
If you've enabled the autoscale feature to force users to sign out during ramp-down, the feature will choose
the session host with the lowest number of user sessions to shut down. The autoscale feature will put the
session host in drain mode, send all active user sessions a notification telling them they'll be signed out, and
then sign out all users after the specified wait time is over. After the autoscale feature signs out all user
sessions, it then deallocates the VM. If you haven't enabled forced sign out during ramp-down, session hosts
with no active or disconnected sessions will be deallocated.
During ramp-down, the autoscale feature will only shut down VMs if all existing user sessions in the host pool
can be consolidated to fewer VMs without exceeding the capacity threshold.
NOTE
When you create or update a scaling plan that's already assigned to host pools, its changes will immediately be applied.
Add tags
After that, you'll need to enter tags. Tags are name and value pairs that categorize resources for consolidated
billing. You can apply the same tag to multiple resources and resource groups. To learn more about tagging
resources, see Use tags to organize your Azure resources.
NOTE
If you change resource settings on other tabs after creating tags, your tags will be automatically updated.
Once you're done, go to the Review + create tab and select Create to deploy your host pool.
Next steps
Now that you've created your scaling plan, here are some things you can do:
Assign your scaling plan to new and existing host pools
Enable diagnostics for your scaling plan
If you'd like to learn more about terms used in this article, check out our autoscale glossary. You can also look at
our autoscale FAQ if you have additional questions.
Enable scaling plans for existing and new host pools
(preview)
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
The autoscale feature is currently in preview. See the Supplemental Terms of Use for Microsoft Azure Previews for legal
terms that apply to Azure features that are in beta, preview, or otherwise not yet released into general availability.
You can enable scaling plans for any existing host pools in your deployment. When you apply your scaling plan
to the host pool, the plan will also apply to all session hosts within that host pool. Scaling also automatically
applies to any new session hosts you create in your assigned host pool.
If you disable a scaling plan, all assigned resources will remain in the scaling state they were in at the time you
disabled it.
If you've enabled the scaling plan during deployment, then you'll also have the option to disable the plan
for the selected host pool in the Scaling plan menu by unselecting the Enable scaling plan checkbox,
as shown in the following screenshot.
Edit an existing scaling plan
To edit an existing scaling plan:
1. Sign in to the Azure portal at https://portal.azure.com.
2. Go to Azure Vir tual Desktop .
3. Select Scaling plan , then select the name of the scaling plan you want to edit. The settings window
should open.
4. To edit the plan's display name, description, time zone, or exclusion tags, go to the Proper ties tab.
5. To assign host pools or edit schedules, go to the Manage tab.
Next steps
Review how to create a scaling plan at Autoscale (preview) for Azure Virtual Desktop session hosts.
Learn how to troubleshoot your scaling plan at Enable diagnostics for your scaling plan.
Learn more about terms used in this article at our autoscale glossary.
View our autoscale FAQ to answer commonly asked questions.
Set up diagnostics for the autoscale feature
(preview)
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
The autoscale feature is currently in preview. See the Supplemental Terms of Use for Microsoft Azure Previews for legal
terms that apply to Azure features that are in beta, preview, or otherwise not yet released into general availability.
Diagnostics lets you monitor potential issues and fix them before they interfere with your autoscale (preview)
scaling plan.
Currently, you can either send diagnostic logs for the autoscale feature to an Azure Storage account or consume
logs with the Events hub. If you're using an Azure Storage account, make sure it's in the same region as your
scaling plan. Learn more about diagnostic settings at Create diagnostic settings. For more information about
resource log data ingestion time, see Log data ingestion time in Azure Monitor.
{
"host_Ring": "R0",
"Level": 4,
"ActivityId": "c1111111-1111-1111-b111-11111cd1ba1b1",
"time": "2021-08-31T16:00:46.5246835Z",
"resourceId": "/SUBSCRIPTIONS/AD11111A-1C21-1CF1-A7DE-
CB1111E1D111/RESOURCEGROUPS/TEST/PROVIDERS/MICROSOFT.DESKTOPVIRTUALIZATION/SCALINGPLANS/TESTPLAN",
"operationName": "HostPoolLoadBalancerTypeUpdated",
"category": "Autoscale",
"resultType": "Succeeded",
"level": "Informational",
"correlationId": "35ec619b-b5d8-5b5f-9242-824aa4d2b878",
"properties": {
"Message": "Host pool's load balancing algorithm updated",
"HostPoolArmPath": "/subscriptions/AD11111A-1C21-1CF1-A7DE-
CB1111E1D111/resourcegroups/test/providers/microsoft.desktopvirtualization/hostpools/testHostPool ",
"PreviousLoadBalancerType": "BreadthFirst",
"NewLoadBalancerType": "DepthFirst"
}
}. L
Next steps
Review how to create a scaling plan at Autoscale for Azure Virtual Desktop session hosts.
Assign your scaling plan to new or existing host pools.
Learn more about terms used in this article at our autoscale glossary.
View our autoscale FAQ to answer commonly asked questions.
Autoscale (preview) glossary
3/7/2022 • 4 minutes to read • Edit Online
This article is a list of definitions for key terms and concepts related to the autoscale (preview) feature for Azure
Virtual Desktop.
Autoscale
The autoscale feature is Azure Virtual Desktop’s native scaling service that turns VMs on and off based on the
number of sessions on the session hosts in the host pool and which phase of the scaling plan schedule the
workday is in.
Scaling tool
Azure Virtual Desktop’s scaling tool uses Azure Automation and Azure Logic Apps to scale the VMs in a host
pool based on how many user sessions per CPU core there are during peak and off-peak hours.
Scaling plan
A scaling plan is an Azure Virtual Desktop Azure Resource Manager object that defines the schedules for scaling
session hosts in a host pool. You can assign one scaling plan to multiple host pools. Each host pool can only
have one scaling plan assigned to it.
Schedule
Schedules are sub-resources of scaling plans that specify the start time, capacity threshold, minimum
percentage of hosts, load-balancing algorithm, and other configuration settings for the different phases of the
day.
Ramp up
The ramp-up phase of a scaling plan schedule is usually at the beginning of the work day, when users start to
sign in and start their sessions. In this phase, the number of active user sessions usually increases at a rapid
pace without reaching the maximum number of active sessions for the day yet.
Peak
The peak phase of a scaling plan schedule is when your host pool reaches the maximum number of active user
sessions for the day. In this phase, the number of active sessions usually holds steady until the peak phase ends.
New active user sessions can be established during this phase, but usually at a slower rate than the ramp-up
phase.
Ramp down
The ramp-down phase of a scaling plan schedule is usually at the end of the work day, when users start to sign
out and end their sessions for the evening. In this phase, the number of active user sessions usually decreases
rapidly.
Off-peak
The off-peak phase of the scaling plan schedule is when the host pool usually reaches the minimum number of
active user sessions for the day. During this phase, there aren't usually many active users, but you can keep a
small amount of resources on to accommodate users who work after the peak and ramp-down phases.
Capacity threshold
The capacity threshold is the percentage of a host pool's capacity that, when reached, triggers a scaling action to
happen.
For example:
If the used host pool capacity is below the capacity threshold and the autoscale feature can turn off virtual
machines (VMs) without going over the capacity threshold, then the feature will turn the VMs off.
If the used host pool capacity goes over the capacity threshold, then the autoscale feature will turn more VMs
on until the used host pool capacity goes below the capacity threshold.
Scaling action
Scaling actions are when the autoscale feature turns VMs on or off.
Force logoff
A force logoff, or forced sign-out, is when the service ends an active user session or a disconnected user session
without the user's consent.
Exclusion tag
An exclusion tag is a property of a scaling plan that's a tag name you can apply to VMs that you want to exclude
from scaling actions. The autoscale feature only performs scaling actions on VMs without tag names that match
the exclusion tag.
Next steps
For more information about the autoscale feature, see the autoscale feature document.
For more information about the scaling script, see the scaling script document.
Customize the feed for Azure Virtual Desktop users
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
You can customize the feed so the RemoteApp and remote desktop resources appear in a recognizable way for
your users.
Prerequisites
This article assumes you've already downloaded and installed the Azure Virtual Desktop PowerShell module. If
you haven't, follow the instructions in Set up the PowerShell module.
To assign a friendly name to a RemoteApp, run the following cmdlet with the required parameters:
For example, let's say you retrieved the current applications with the following example cmdlet:
To confirm you've successfully updated the friendly name, run this cmdlet:
FriendlyName : WordUpdate
To assign a friendly name to the remote desktop resource, run the following PowerShell cmdlet:
Next steps
Now that you've customized the feed for users, you can sign in to a Azure Virtual Desktop client to test it out. To
do so, continue to the Connect to Azure Virtual Desktop How-tos:
Connect with Windows 10 or Windows 7
Connect with the web client
Connect with the Android client
Connect with the iOS client
Connect with the macOS client
Use Log Analytics for the diagnostics feature
3/7/2022 • 6 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Azure Virtual Desktop uses Azure Monitor for monitoring and alerts like many other Azure services. This lets
admins identify issues through a single interface. The service creates activity logs for both user and
administrative actions. Each activity log falls under the following categories:
Management Activities:
Track whether attempts to change Azure Virtual Desktop objects using APIs or PowerShell are
successful. For example, can someone successfully create a host pool using PowerShell?
Feed:
Can users successfully subscribe to workspaces?
Do users see all resources published in the Remote Desktop client?
Connections:
When users initiate and complete connections to the service.
Host registration:
Was the session host successfully registered with the service upon connecting?
Errors:
Are users encountering any issues with specific activities? This feature can generate a table that tracks
activity data for you as long as the information is joined with the activities.
Checkpoints:
Specific steps in the lifetime of an activity that were reached. For example, during a session, a user was
load balanced to a particular host, then the user was signed on during a connection, and so on.
Connections that don't reach Azure Virtual Desktop won't show up in diagnostics results because the
diagnostics role service itself is part of Azure Virtual Desktop. Azure Virtual Desktop connection issues can
happen when the user is experiencing network connectivity issues.
Azure Monitor lets you analyze Azure Virtual Desktop data and review virtual machine (VM) performance
counters, all within the same tool. This article will tell you more about how to enable diagnostics for your Azure
Virtual Desktop environment.
NOTE
To learn how to monitor your VMs in Azure, see Monitoring Azure virtual machines with Azure Monitor. Also, make sure
to review the performance counter thresholds for a better understanding of your user experience on the session host.
IMPORTANT
Remember to enable diagnostics for each Azure Resource Manager object that you want to monitor. Data will be
available for activities after diagnostics has been enabled. It might take a few hours after first set-up.
5. Enter a name for your settings configuration, then select Send to Log Analytics . The name you use
shouldn't have spaces and should conform to Azure naming conventions. As part of the logs, you can
select all the options that you want added to your Log Analytics, such as Checkpoint, Error, Management,
and so on.
6. Select Save .
NOTE
Log Analytics gives you the option to stream data to Event Hubs or archive it in a storage account. To learn more about
this feature, see Stream Azure monitoring data to an event hub and Archive Azure resource logs to storage account.
NOTE
For more detailed information about the tables stored in Azure Monitor Logs, see the Azure Monitor data refence. All
tables related to Azure Virtual Desktop are labeled "WVD."
Example queries
Access example queries through the Azure Monitor Log Analytics UI:
1. Go to your Log Analytics workspace, and then select Logs . The example query UI is shown automatically.
2. Change the filter to Categor y .
3. Select Azure Vir tual Desktop to review available queries.
4. Select Run to run the selected query.
Learn more about the sample query interface in Saved queries in Azure Monitor Log Analytics.
The following query list lets you review connection information or issues for a single user. You can run these
queries in the Log Analytics query editor. For each query, replace userupn with the UPN of the user you want to
look up.
To find all connections for a single user:
WVDConnections
|where UserName == "userupn"
|take 100
|sort by TimeGenerated asc, CorrelationId
WVDConnections
|where UserName == "userupn"
|take 100
|sort by TimeGenerated asc, CorrelationId
|summarize dcount(CorrelationId) by bin(TimeGenerated, 1d)
WVDErrors
| where UserName == "userupn"
|take 100
WVDErrors
| where CodeSymbolic =="ErrorSymbolicCode"
| summarize count(UserName) by CodeSymbolic
NOTE
When a user opens Full Desktop, their app usage in the session isn't tracked as checkpoints in the WVDCheckpoints
table.
The ResourcesAlias column in the WVDConnections table shows whether a user has connected to a full desktop or a
published app. The column only shows the first app they open during the connection. Any published apps the user
opens are tracked in WVDCheckpoints.
The WVDErrors table shows you management errors, host registration issues, and other issues that happen while the
user subscribes to a list of apps or desktops.
WVDErrors helps you to identify issues that can be resolved by admin tasks. The value on ServiceError always says
“false” for those types of issues. If ServiceError = “true”, you'll need to escalate the issue to Microsoft. Ensure you
provide the CorrelationID for the errors you escalate.
Next steps
To review common error scenarios that the diagnostics feature can identify for you, see Identify and diagnose
issues.
Publish built-in apps in Azure Virtual Desktop
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
This article will tell you how to publish apps in your Azure Virtual Desktop environment.
NOTE
Azure Virtual Desktop only supports publishing apps with install locations that begin with
C:\Program Files\WindowsApps .
Next steps
Learn about how to configure feeds to organize how apps are displayed for users at Customize feed for
Azure Virtual Desktop users.
Learn about the MSIX app attach feature at Set up MSIX app attach.
Set up MSIX app attach with the Azure portal
3/7/2022 • 7 minutes to read • Edit Online
This article will walk you through how to set up MSIX app attach in a Azure Virtual Desktop environment.
Requirements
Here's what you need to configure MSIX app attach:
A functioning Azure Virtual Desktop deployment. To learn how to deploy Azure Virtual Desktop (classic), see
Create a tenant in Azure Virtual Desktop. To learn how to deploy Azure Virtual Desktop with Azure Resource
Manager integration, see Create a host pool with the Azure portal.
An Azure Virtual Desktop host pool with at least one active session host.
The MSIX packaging tool.
An MSIX-packaged application expanded into an MSIX image that's uploaded into a file share.
A file share in your Azure Virtual Desktop deployment where the MSIX package will be stored.
The file share where you uploaded the MSIX image must also be accessible to all virtual machines (VMs) in
the host pool. Users will need read-only permissions to access the image.
If the certificate isn't publicly trusted, follow the instructions in Install certificates.
rem Disable Content Delivery auto download apps that they want to promote to users:
NOTE
MSIX applications can be delivered with MSIX app attach to both remote app and desktop app groups
3. Once you're in the app group, select the Applications tab. The Applications grid will display all existing
apps within the app group.
4. Select + Add to open the Add application tab.
If you're using a remote app group, choose one of the following options:
Start menu
App path
MSIX package
For Application name , enter a descriptive name for the application.
You can also configure the following optional features:
For Display name , enter a new name for the package that your users will see.
For Description , enter a short description of the app package.
If you're using a remote app group, you can also configure these options:
Icon path
Icon index
Show in web feed
6. When you're done, select Save .
NOTE
When a user is assigned to remote app group and desktop app group from the same host pool the desktop app group
will be displayed in the feed.
NOTE
MSIX app attach remote apps may disappear from the feed when you test remote apps during public preview. The apps
don't appear because the host pool you're using in the evaluation environment is being served by an RD Broker in the
production environment. Because the RD Broker in the production environment doesn't register the presence of the MSIX
app attach remote apps, the apps won't appear in the feed.
Next steps
Ask our community questions about this feature at the Azure Virtual Desktop TechCommunity.
You can also leave feedback for Azure Virtual Desktop at the Azure Virtual Desktop feedback hub.
Here are some other articles you might find helpful:
MSIX app attach glossary
MSIX app attach FAQ
Set up MSIX app attach using PowerShell
3/7/2022 • 5 minutes to read • Edit Online
In addition to the Azure portal, you can also set up MSIX app attach manually with PowerShell. This article will
walk you through how to use PowerShell to set up MSIX app attach.
Requirements
Here's what you need to configure MSIX app attach:
A functioning Azure Virtual Desktop deployment. To learn how to deploy Azure Virtual Desktop (classic),
see Create a tenant in Azure Virtual Desktop. To learn how to deploy Azure Virtual Desktop with Azure
Resource Manager integration, see Create a host pool with the Azure portal.
A Azure Virtual Desktop host pool with at least one active session host.
A Desktop remote app group.
The MSIX packaging tool.
An MSIX-packaged application expanded into an MSIX image that's uploaded into a file share.
A file share in your Azure Virtual Desktop deployment where the MSIX package will be stored.
The file share where you uploaded the MSIX image must also be accessible to all virtual machines (VMs)
in the host pool. Users will need read-only permissions to access the image.
Download and install PowerShell Core.
Download the public preview Azure PowerShell module and expand it to a local folder.
Install the Azure module by running the following cmdlet:
Connect-AzAccount
After you run it, authenticate your account using your credentials. In this case, you might be asked for a device
URL or a token.
NOTE
For the public preview, we will provide the module as separate ZIP files that you must manually import.
Before you start, you can run the following cmdlet to see if the Az.DesktopVirtualization module is already
installed on your session or VM:
If you wan to uninstall an existing copy of the module and start over, run this cmdlet:
Uninstall-Module Az.DesktopVirtualization
If the module is blocked on your VM, run this cmdlet to unblock it:
Unblock-File "<path>\Az.DesktopVirtualization.psm1"
With that cleanup out of the way, it's time to import the module.
1. Run the following cmdlet, then press the R key when prompted to agree to run the custom code.
2. Once you've run the import cmdlet, check to see if it has the cmdlets for MSIX by running the following
cmdlet:
If the cmdlets are there, the output should look like this:
If you don't see this output, close all PowerShell and PowerShell Core sessions and try again.
$subId = $obj.Subscription.Id
$ws = "<WorksSpaceName>"
$hp = "<HostPoolName>"
To set up the resource group where the session host VMs are configured:
$rg = "<ResourceGroupName>"
$obj = Expand-AzWvdMsixImage -HostPoolName $hp -ResourceGroupName $rg -SubscriptionId $subID -Uri <UNCPath>
Run this cmdlet to add the MSIX package to your desired host pool:
Once you're done, confirm the package was created with this cmdlet:
Alternatively, you can also get a particular package based on its display name with this cmdlet:
When you've found the name of the app group you want to publish apps to, use its name in this cmdlet:
$grName = "<AppGroupName>"
To publish the app to a remote app group, run this cmdlet instead:
NOTE
If a user is assigned to both a remote app group and a desktop app group in the same host pool, when the user connects
to their remote desktop, they will see MSIX apps from both groups.
Next steps
Ask our community questions about this feature at the Azure Virtual Desktop TechCommunity.
You can also leave feedback for Azure Virtual Desktop at the Azure Virtual Desktop feedback hub.
Here are some other articles you might find helpful:
MSIX app attach glossary
MSIX app attach FAQ
Create PowerShell scripts for MSIX app attach
3/7/2022 • 6 minutes to read • Edit Online
This topic will walk you through how to set up PowerShell scripts for MSIX app attach.
Install certificates
You must install certificates on all session hosts in the host pool that will host the apps from your MSIX app
attach packages.
If your app uses a certificate that isn't public-trusted or was self-signed, here's how to install it:
1. Right-click the package and select Proper ties .
2. In the window that appears, select the Digital signatures tab. There should be only one item in the list on
the tab. Select that item to highlight the item, then select Details .
3. When the digital signature details window appears, select the General tab, then select View Cer tificate ,
then select Install cer tificate .
4. When the installer opens, select local machine as your storage location, then select Next .
5. If the installer asks you if you want to allow the app to make changes to your device, select Yes .
6. Select Place all cer tificates in the following store , then select Browse .
7. When the select certificate store window appears, select Trusted people , then select OK .
8. Select Next and Finish .
NOTE
This change will require that you restart the virtual machine.
NOTE
If you don't see a parent folder, that means the MSIX wasn't expanded properly. Redo the previous section and try
again.
4. Open the parent folder. If correctly expanded, you'll see a folder with the same name as the package.
Update the $packageName variable to match the name of this folder.
For example, VSCodeUserSetup-x64-1.38.1_1.38.1.0_x64__8wekyb3d8bbwe .
5. Open a command prompt and enter mountvol . This command will display a list of volumes and their
GUIDs. Copy the GUID of the volume where the drive letter matches the drive you mounted your VHD to
in step 2.
For example, in this example output for the mountvol command, if you mounted your VHD to Drive C,
you'll want to copy the value above C:\ :
Possible values for VolumeName along with current mount points are:
\\?\Volume{a12b3456-0000-0000-0000-10000000000}\
*** NO MOUNT POINTS ***
\\?\Volume{c78d9012-0000-0000-0000-20000000000}\
E:\
\\?\Volume{d34e5678-0000-0000-0000-30000000000}\
C:\
6. Update the $volumeGuid variable with the volume GUID you just copied.
7. Open an Admin PowerShell prompt and update the following PowerShell script with the variables that
apply to your environment.
#MSIX app attach staging sample
#region variables
$vhdSrc="<path to vhd>"
$packageName = "<package name>"
$parentFolder = "<package parent folder>"
$parentFolder = "\" + $parentFolder + "\"
$volumeGuid = "<vol guid>"
$msixJunction = "C:\temp\AppAttach\"
#endregion
#region mountvhd
try
{
Mount-Diskimage -ImagePath $vhdSrc -NoDriveLetter -Access ReadOnly
Write-Host ("Mounting of " + $vhdSrc + " was completed!") -BackgroundColor Green
}
catch
{
Write-Host ("Mounting of " + $vhdSrc + " has failed!") -BackgroundColor Red
}
#endregion
#region makelink
$msixDest = "\\?\Volume{" + $volumeGuid + "}\"
if (!(Test-Path $msixJunction))
{
md $msixJunction
}
#region stage
[Windows.Management.Deployment.PackageManager,Windows.Management.Deployment,ContentType=WindowsRuntim
e] | Out-Null
Add-Type -AssemblyName System.Runtime.WindowsRuntime
$asTask = ([System.WindowsRuntimeSystemExtensions].GetMethods() | Where { $_.ToString() -eq
'System.Threading.Tasks.Task`1[TResult] AsTask[TResult,TProgress]
(Windows.Foundation.IAsyncOperationWithProgress`2[TResult,TProgress])'})[0]
$asTaskAsyncOperation = $asTask.MakeGenericMethod([Windows.Management.Deployment.DeploymentResult],
[Windows.Management.Deployment.DeploymentProgress])
$packageManager = [Windows.Management.Deployment.PackageManager]::new()
$path = $msixJunction + $parentFolder + $packageName
$path = ([System.Uri]$path).AbsoluteUri
$asyncOperation = $packageManager.StagePackageAsync($path, $null, "StageInPlace")
$task = $asTaskAsyncOperation.Invoke($null, @($asyncOperation))
$task
#endregion
#region variables
$packageName = "<package name>"
$path = "C:\Program Files\WindowsApps\" + $packageName + "\AppxManifest.xml"
#endregion
#region register
Add-AppxPackage -Path $path -DisableDevelopmentMode -Register
#endregion
#region variables
$packageName = "<package name>"
#endregion
#region deregister
Remove-AppxPackage -PreserveRoamableApplicationData $packageName
#endregion
$vhdSrc="<path to vhd>"
#region variables
$packageName = "<package name>"
$msixJunction = "C:\temp\AppAttach"
#endregion
#region deregister
Remove-AppxPackage -AllUsers -Package $packageName
Remove-Item "$msixJunction\$packageName" -Recurse -Force -Verbose
#endregion
NOTE
You can shut down the device even while the $volumeGuid point remains after executing the destage script.
NOTE
You can run the task scheduler with the stage script. To run the script, set the task trigger to When the computer
star ts , then enable Run with highest privileges .
#TODO - Update $contentID with the ContentID value from the unencoded license file (.xml)
$contentID = "{'ContentID'_in_unencoded_license_file}"
#TODO - Update $licenseBlob with the entire String in the encoded license file (.bin)
$licenseBlob = "{Entire_String_in_encoded_license_file}"
$session = New-CimSession
#The final string passed into the AddLicenseMethod should be of the form <License Content="encoded license
blob" />
$licenseString = '<License Content='+ '"' + $licenseBlob +'"' + ' />'
try
{
$instance = New-CimInstance -Namespace $namespaceName -ClassName $className -Property
@{ParentID=$parentID;InstanceID=$contentID}
$session.InvokeMethod($namespaceName, $instance, $methodName, $params)
}
catch [Exception]
{
write-host $_ | out-string
}
Next steps
This feature isn't currently supported, but you can ask questions to the community at the Azure Virtual Desktop
TechCommunity.
You can also leave feedback for Azure Virtual Desktop at the Azure Virtual Desktop feedback hub.
Prepare an MSIX image for Azure Virtual Desktop
3/7/2022 • 2 minutes to read • Edit Online
MSIX app attach is an application layering solution that allows you to dynamically attach apps from an MSIX
package to a user session. The MSIX package system separates apps from the operating system, making it easier
to build images for virtual machines. MSIX packages also give you greater control over which apps your users
can access in their virtual machines. You can even separate apps from the master image and give them to users
later.
Instructions on how to convert a desktop installer (such as MSI, EXE, ClickOnce, App-V, or Script) to MSIX are
available in Create an MSIX package from any desktop installer (MSI, EXE, ClickOnce, or App-V).
NOTE
If you haven't already, make sure you enable Hyper-V by following the instructions in Install Hyper-V on Windows 10.
NOTE
Make sure the VHD is large enough to hold the expanded MSIX package.
3. Run the following cmdlet to mount the VHD you just created:
5. After that, run this cmdlet to create a new partition for the initialized VHD:
7. Finally, create a parent folder on the mounted VHD. This step is required because the MSIX package must
have a parent folder to work properly. It doesn't matter what you name the parent folder, so long as the
parent folder exists.
Expand MSIX
After that, you'll need to expand the MSIX image by "unpacking" its files into the VHD.
To expand the MSIX image:
1. Download the msixmgr tool and save the .zip folder to a folder within a session host VM.
2. Unzip the msixmgr tool .zip folder.
3. Put the source MSIX package into the same folder where you unzipped the msixmgr tool.
4. Open a command prompt as Administrator and navigate to the folder where you downloaded and
unzipped the msixmgr tool.
5. Run the following cmdlet to unpack the MSIX into the VHD you created in the previous section.
NOTE
If you're using packages from the Microsoft Store for Business or Education on your network or on devices not
connected to the internet, you'll need to download and install package licenses from the Microsoft Store to run
the apps. To get the licenses, see Use packages offline.
6. Go the mounted VHD and open the app folder to make sure the package contents are there.
7. Unmount the VHD.
Next steps
Ask our community questions about this feature at the Azure Virtual Desktop TechCommunity.
You can also leave feedback for Azure Virtual Desktop at the Azure Virtual Desktop feedback hub.
Here are some other articles you might find helpful:
MSIX app attach glossary
MSIX app attach FAQ
Set up a file share for MSIX app attach
3/7/2022 • 4 minutes to read • Edit Online
All MSIX images must be stored on a network share that can be accessed by users in a host pool with read-only
permissions.
MSIX app attach doesn't have any dependencies on the type of storage fabric the file share uses. The
considerations for the MSIX app attach share are same as those for an FSLogix share. To learn more about
storage requirements, see Storage options for FSLogix profile containers in Azure Virtual Desktop.
Performance requirements
MSIX app attach image size limits for your system depend on the storage type you're using to store the VHD or
VHDx files, as well as the size limitations of the VHD, VHDX or CIM files and the file system.
The following table gives an example of how many resources a single 1 GB MSIX image with one MSIX app
inside of it requires for each VM:
Latency 400 ms
Requirements can vary widely depending how many MSIX-packaged applications are stored in the MSIX image.
For larger MSIX images, you'll need to allocate more bandwidth.
Storage recommendations
Azure offers multiple storage options that can be used for MISX app attach. We recommend using Azure Files or
Azure NetApp Files as those options offer the best value between cost and management overhead. The article
Storage options for FSLogix profile containers in Azure Virtual Desktop compares the different managed storage
solutions Azure offers in the context of Azure Virtual Desktop.
Optimize MSIX app attach performance
Here are some other things we recommend you do to optimize MSIX app attach performance:
The storage solution you use for MSIX app attach should be in the same datacenter location as the
session hosts.
To avoid performance bottlenecks, exclude the following VHD, VHDX, and CIM files from antivirus scans:
<MSIXAppAttachFileShare\>\*.VHD
<MSIXAppAttachFileShare\>\*.VHDX
\\storageaccount.file.core.windows.net\share*.VHD
\\storageaccount.file.core.windows.net\share*.VHDX
<MSIXAppAttachFileShare>.CIM
\\storageaccount.file.core.windows.net\share**.CIM
Separate the storage fabric for MSIX app attach from FSLogix profile containers.
All VM system accounts and user accounts must have read-only permissions to access the file share.
Any disaster recovery plans for Azure Virtual Desktop must include replicating the MSIX app attach file
share in your secondary failover location. To learn more about disaster recovery, see Set up a business
continuity and disaster recovery plan.
Session host (VM computer objects) Storage File Data SMB Share Read and Execute, Read, List folder
Contributor contents
Admins on File Share Storage File Data SMB Share Elevated Full control
Contributor
Users on File Share Storage File Data SMB Share Read and Execute, Read, List folder
Contributor contents
To assign session host VMs permissions for the storage account and file share:
1. Create an Active Directory Domain Services (AD DS) security group.
2. Add the computer accounts for all session host VMs as members of the group.
3. Sync the AD DS group to Azure Active Directory (Azure AD).
4. Create a storage account.
5. Create a file share under the storage account by following the instructions in Create an Azure file share.
6. Join the storage account to AD DS by following the instructions in Part one: enable AD DS authentication
for your Azure file shares.
7. Assign the synced AD DS group to Azure AD, and assign the storage account the Storage File Data SMB
Share Contributor role.
8. Mount the file share to any session host by following the instructions in Part two: assign share-level
permissions to an identity.
9. Grant NTFS permissions on the file share to the AD DS group.
10. Set up NTFS permissions for the user accounts. You'll need an operating unit (OU) sourced from the AD
DS that the accounts in the VM belong to.
Once you've assigned the identity to your storage, follow the instructions in the articles in Next steps to grant
other required permissions to the identity you've assigned to the VMs.
You'll also need to make sure your session host VMs have New Technology File System (NTFS) permissions. You
must have an operational unit container that's sourced from Active Directory Domain Services (AD DS), and
your users must be members of that operational unit to use these permissions.
Next steps
Here are the other things you'll need to do after you've set up the file share:
Learn how to set up Azure Active Directory Domain Services (AD DS) at Create a profile container with Azure
Files and AD DS.
Learn how to set up Azure Files and Azure AD DS at Create a profile container with Azure Files and Azure AD
DS.
Learn how to set up Azure NetApp Files for MSIX app attach at Create a profile container with Azure NetApp
Files and AD DS.
Learn how to use a virtual machine-based file share at Create a profile container for a host pool using a file
share.
Once you're finished, here are some other resources you might find helpful:
Ask our community questions about this feature at the Azure Virtual Desktop TechCommunity.
You can also leave feedback for Azure Virtual Desktop at the Azure Virtual Desktop feedback hub.
MSIX app attach glossary
MSIX app attach FAQ
Using the MSIXMGR tool
3/7/2022 • 2 minutes to read • Edit Online
The MSIXMGR tool is for expanding MSIX-packaged applications into MSIX images. The tool takes an MSIX-
packaged application (.MSIX) and expands it into a VHD, VHDx, or CIM file. The resulting MSIX image is stored in
the Azure Storage account that your Azure Virtual Desktop deployment uses.This article will show you how to
use the MSIXMGR tool.
NOTE
To guarantee compatibility, make sure the CIMs storing your MSIX images are generated on the OS version you're
running in your Azure Virtual Desktop host pools. MSIXMGR can create CIM files, but you can only use those files with a
host pool running Windows 10 20H2.
Requirements
Before you can follow the instructions in this article, you'll need to do the following things:
Download the MSIXMGR tool
Get an MSIX-packaged application (.MSIX file)
Get administrative permissions on the machine where you'll create the MSIX image
Remember to replace the placeholder values with the relevant values. For example:
6. Now that you've created the image, go to the destination folder and make sure you successfully created
the MSIX image (.VHDX).
Create an MSIX image in a CIM file
You can also use the command in step 5 to create CIM and VHDX files by replacing the file type and destination
path.
For example, here's how you'd use that command to make a CIM file:
Next steps
Learn more about MSIX app attach at What is MSIX app attach?
To learn how to set up app attach, check out these articles:
Set up MSIX app attach with the Azure portal
Set up MSIX app attach using PowerShell
Create PowerShell scripts for MSIX app attach
Prepare an MSIX image for Azure Virtual Desktop
Set up a file share for MSIX app attach
If you have questions about MSIX app attach, see our App attach FAQ and App attach glossary.
Use Microsoft Teams on Azure Virtual Desktop
3/7/2022 • 8 minutes to read • Edit Online
IMPORTANT
Media optimization for Teams is supported for Microsoft 365 Government (GCC) and GCC-High environments. Media
optimization for Teams is not supported for Microsoft 365 DoD.
NOTE
Media optimization for Microsoft Teams is only available for the following two clients:
Windows Desktop and client on Windows 10 machines. Windows Desktop client version 1.2.1026.0 or later.
macOS Remote Desktop client, version 10.7.7 or later (preview)
IMPORTANT
Teams for macOS is currently in PREVIEW. See the Supplemental Terms of Use for Microsoft Azure Previews for legal terms
that apply to Azure features that are in beta, preview, or otherwise not yet released into general availability.
Microsoft Teams on Azure Virtual Desktop supports chat and collaboration. With media optimizations, it also
supports calling and meeting functionality. To learn more about how to use Microsoft Teams in Virtual Desktop
Infrastructure (VDI) environments, see Teams for Virtualized Desktop Infrastructure.
With media optimization for Microsoft Teams, the Remote Desktop client handles audio and video locally for
Teams calls and meetings. You can still use Microsoft Teams on Azure Virtual Desktop with other clients without
optimized calling and meetings. Teams chat and collaboration features are supported on all platforms. To
redirect local devices in your remote session, check out Customize Remote Desktop Protocol properties for a
host pool.
Prerequisites
Before you can use Microsoft Teams on Azure Virtual Desktop, you'll need to do these things:
Prepare your network for Microsoft Teams.
Install the Remote Desktop client on a Windows 10 or Windows 10 IoT Enterprise device that meets the
Microsoft Teams hardware requirements for Teams.
Connect to a Windows 10 Multi-session or Windows 10 Enterprise virtual machine (VM).
IsWVDEnvironment DWORD 1
1.4.2111.18001 12/02/2021
1.1.2110.16001 10/15/2021
1.0.2106.14001 07/29/2021
1.0.2006.11001 07/28/2020
0.11.0 05/29/2020
2. Run one of the following commands to install the MSI to the host VM:
Per-user installation
This process is the default installation, which installs Teams to the %AppData% user folder. Teams
won't work properly with per-user installation on a non-persistent setup.
Per-machine installation
This installs Teams to the Program Files (x86) folder on a 32-bit operating system and to the
Program Files folder on a 64-bit operating system. At this point, the golden image setup is
complete. Installing Teams per-machine is required for non-persistent setups.
There are two flags that may be set when installing teams, ALLUSER=1 and ALLUSERS=1 . It is
important to understand the difference between these parameters. The ALLUSER=1 parameter is
used only in VDI environments to specify a per-machine installation. The ALLUSERS=1 parameter
can be used in non-VDI and VDI environments. When you set this parameter, Teams Machine-
Wide Installer appears in Program and Features in Control Panel as well as Apps & features in
Windows Settings. All users with admin credentials on the machine can uninstall Teams.
NOTE
Users and admins can't disable automatic launch for Teams during sign-in at this time.
3. To uninstall the MSI from the host VM, run this command:
This uninstalls Teams from the Program Files (x86) folder or Program Files folder, depending on the
operating system environment.
NOTE
When you install Teams with the MSI setting ALLUSER=1, automatic updates will be disabled. We recommend you
make sure to update Teams at least once a month. To learn more about deploying the Teams desktop app, check
out Deploy the Teams desktop app to the VM.
IMPORTANT
If you're using a version of the Remote Desktop client for macOS that's earlier than 10.7.7, in order to use our latest
Teams optimization features, you'll need to update your client to version 10.7.7 or later, then go to Microsoft Remote
Desktop Preferences > General and enable Teams optimizations. If you're using the client for the first time and already
have version 10.7.7 or later installed, you won't need to do this, because Teams optimizations are enabled by default.
To learn more, check out Customize Remote Desktop Protocol properties for a host pool.
Enable Azure multifactor authentication for Azure
Virtual Desktop
3/7/2022 • 3 minutes to read • Edit Online
IMPORTANT
If you're visiting this page from the Azure Virtual Desktop (classic) documentation, make sure to return to the Azure
Virtual Desktop (classic) documentation once you're finished.
The Windows client for Azure Virtual Desktop is an excellent option for integrating Azure Virtual Desktop with
your local machine. However, when you configure your Azure Virtual Desktop account into the Windows Client,
there are certain measures you'll need to take to keep yourself and your users safe.
When you first sign in, the client asks for your username, password, and Azure multifactor authentication. After
that, the next time you sign in, the client will remember your token from your Azure Active Directory (AD)
Enterprise Application. When you select Remember me on the prompt for credentials for the session host, your
users can sign in after restarting the client without needing to reenter their credentials.
While remembering credentials is convenient, it can also make deployments on Enterprise scenarios or personal
devices less secure. To protect your users, you can make sure the client keeps asking for Azure multifactor
authentication credentials more frequently. This article will show you how to configure the Conditional Access
policy for Azure Virtual Desktop to enable this setting.
Prerequisites
Here's what you'll need to get started:
Assign users a license that includes Azure Active Directory Premium P1 or P2.
An Azure Active Directory group with your users assigned as group members.
Enable Azure multifactor authentication for all your users. For more information about how to do that, see
How to require two-step verification for a user.
NOTE
The following setting also applies to the Azure Virtual Desktop web client.
IMPORTANT
Don't select the app called Azure Virtual Desktop Azure Resource Manager Provider (50e95039-b200-4007-
bc97-8d5790743a63). This app is only used for retrieving the user feed and shouldn't have multifactor
authentication.
If you're using Azure Virtual Desktop (classic), if the Conditional Access policy blocks all access and only excludes
Azure Virtual Desktop app IDs, you can fix this by adding the app ID 9cdead84-a844-4324-93f2-b2e6bb768d07
to the policy. Not adding this app ID will block feed discovery of Azure Virtual Desktop (classic) resources.
10. Go to Conditions > Client apps . In Configure , select Yes , and then select where to apply the policy:
Select Browser if you want the policy to apply to the web client.
Select Mobile apps and desktop clients if you want to apply the policy to other clients.
Select both check boxes if you want to apply the policy to all clients.
11. Once you've selected your app, choose Select , and then select Done .
NOTE
To find the App ID of the app you want to select, go to Enterprise Applications and select Microsoft
Applications from the application type drop-down menu.
12. Under Access controls > Grant , select Grant access , Require multi-factor authentication , and
then Select .
13. Under Access controls > Session , select Sign-in frequency , set the value to the time you want
between prompts, and then select Select . For example, setting the value to 1 and the unit to Hours , will
require multifactor authentication if a connection is launched an hour after the last one.
14. Confirm your settings and set Enable policy to On .
15. Select Create to enable your policy.
NOTE
When you use the web client to sign in to Azure Virtual Desktop through your browser, the log will list the client app ID
as a85cf173-4192-42f8-81fa-777a763e6e2c (Azure Virtual Desktop client). This is because the client app is internally
linked to the server app ID where the conditional access policy was set.
Next steps
Learn more about Conditional Access policies
Learn more about user sign in frequency
Configure AD FS single sign-on for Azure Virtual
Desktop
3/7/2022 • 12 minutes to read • Edit Online
This article will walk you through the process of configuring Active Directory Federation Service (AD FS) single
sign-on (SSO) for Azure Virtual Desktop.
NOTE
Azure Virtual Desktop (Classic) doesn't support this feature.
Requirements
Before configuring AD FS single sign-on, you must have the following setup running in your environment:
You must deploy the Active Director y Cer tificate Ser vices (CA) role. All servers running the role must
be domain-joined, have the latest Windows updates installed, and be configured as enterprise certificate
authorities.
You must deploy the Active Director y Federation Ser vices (AD FS) role. All servers running this role
must be domain-joined, have the latest Windows updates installed, and be running Windows Server 2016 or
later. See our federation tutorial to get started setting up this role.
We recommend setting up the Web Application Proxy role to secure your environment's connection to the
AD FS servers. All servers running this role must have the latest Windows updates installed, and be running
Windows Server 2016 or later. See this Web Application Proxy guide to get started setting up this role.
You must deploy Azure AD Connect to sync users to Azure AD. Azure AD Connect must be configured in
federation mode.
Set up your PowerShell environment for Azure Virtual Desktop on the AD FS server.
When using Windows 10 20H1 or 20H2 to connect to Azure Virtual Desktop, you must install the 2021-04
Cumulative Update for Windows 10 (KB5001330) or later for single sign-on to function properly.
NOTE
This solution is not supported with Azure AD Domain Services. You must use an Active Directory Domain Controller.
Supported clients
The following Azure Virtual Desktop clients support this feature:
Windows Desktop client
Web client
NOTE
This solution generates new short-term certificates every time a user signs in, which can fill up the Certificate Authority
database if you have many users. You can avoid overloading your database by setting up a CA for non-persistent
certificate processing. If you do this, on the duplicated smartcard logon certificate template, make sure you enable only
Do not store cer tificates and requests in the CA database . Don't enable Do not include revocation
information in issued cer tificates or the configuration won't work.
Import-Module adfs
(Get-AdfsCertificateAuthority).EnrollmentAgentCertificateTemplateName
NOTE
Since this certificate is requested on-demand, we recommend shortening the validity period to 8 hours and the
renewal period to 1 hour.
5. Select the Subject name tab and then select Supply in the request . When you see a warning
message, select OK .
NOTE
If you already have an EnrollmentAgentCertificateTemplate configured, ensure you use the existing template name
instead of ADFSEnrollmentAgent.
NOTE
You need the $config variable values to complete the next part of the instructions, so don't close the PowerShell
window you used to complete the previous instructions. You can either keep using the same PowerShell window
or leave it open while launching a new PowerShell session.
If you're using a shared key in the Key Vault, run the following PowerShell cmdlet on the AD FS
server with ADFSServiceUrl replaced with the full URL to reach your AD FS service:
Install-Script ConfigureWVDSSO
$config = ConfigureWVDSSO.ps1 -ADFSAuthority "<ADFSServiceUrl>" [-WvdWebAppAppIDUri "<WVD Web
App URI>"] [-RdWebURL "<RDWeb URL>"]
NOTE
You need the WvdWebAppAppIDUri and RdWebURL properties to configure an environment in a
sovereign cloud like Azure Government. In the Azure Commercial Cloud, these properties are
automatically set to https://www.wvd.microsoft.com and https://rdweb.wvd.microsoft.com
respectively.
If you're using a certificate in the Key Vault, run the following PowerShell cmdlet on the AD FS
server with ADFSServiceUrl replaced with the full URL to reach your AD FS service:
Install-Script ConfigureWVDSSO
$config = ConfigureWVDSSO.ps1 -ADFSAuthority "<ADFSServiceUrl>" -UseCert -CertPath "<Path to
the pfx file>" -CertPassword <Password to the pfx file> [-WvdWebAppAppIDUri "<WVD Web App
URI>"] [-RdWebURL "<RDWeb URL>"]
NOTE
You need the WvdWebAppAppIDUri and RdWebURL properties to configure an environment in a
sovereign cloud like Azure Government. In the Azure Commercial Cloud, these properties are
automatically set to https://www.wvd.microsoft.com and https://rdweb.wvd.microsoft.com
respectively.
3. Set the access policy on the Azure Key Vault by running the following PowerShell cmdlet:
Set-AzKeyVaultAccessPolicy -VaultName "<Key Vault Name>" -ServicePrincipalName 9cdead84-a844-4324-
93f2-b2e6bb768d07 -PermissionsToSecrets get -PermissionsToKeys sign
4. Store the shared key or certificate in Azure Key Vault with a Tag containing a coma separated list of
subscription IDs allowed to use the secret.
If you're using a shared key in the Key Vault, run the following PowerShell cmdlet to store the
shared key and set the tag:
$hp = Get-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group
Name>"
$secret = Set-AzKeyVaultSecret -VaultName "<Key Vault Name>" -Name "adfsssosecret" -
SecretValue (ConvertTo-SecureString -String $config.SSOClientSecret -AsPlainText -Force) -Tag
@{ 'AllowedWVDSubscriptions' = $hp.Id.Split('/')[2]}
If your certificate is already in the Key Vault, run the following PowerShell cmdlet to set the tag:
$hp = Get-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group
Name>"
$secret = Update-AzKeyVaultCertificate -VaultName "<Key Vault Name>" -Name "<Certificate
Name>" -Tag @{ 'AllowedWVDSubscriptions' = $hp.Id.Split('/')[2]} -PassThru
If you have a local certificate, run the following PowerShell cmdlet to import the certificate in the
Key Vault and set the tag:
$hp = Get-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group
Name>"
$secret = Import-AzKeyVaultCertificate -VaultName "<Key Vault Name>" -Name "adfsssosecret" -
Tag @{ 'AllowedWVDSubscriptions' = $hp.Id.Split('/')[2]} -FilePath "<Path to pfx>" -Password
(ConvertTo-SecureString -String "<pfx password>" -AsPlainText -Force)
NOTE
You can optionally configure how often users are prompted for credentials by changing the AD FS single sign-on settings.
By default, users will be prompted every 8 hours on unregistered devices.
Update-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" -
SsoadfsAuthority "<ADFSServiceUrl>" -SsoClientId "<WVD Web App URI>" -SsoSecretType
SharedKeyInKeyVault -SsoClientSecretKeyVaultPath $secret.Id
NOTE
You need to set the SsoClientId property to match the Azure cloud you're deploying SSO in. In the Azure
Commercial Cloud, this property should be set to https://www.wvd.microsoft.com . However, the required
setting for this property will be different for other clouds, like the Azure Government cloud.
If you're using a certificate in the Key Vault, run the following PowerShell cmdlet:
Update-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" -
SsoadfsAuthority "<ADFSServiceUrl>" -SsoClientId "<WVD Web App URI>" -SsoSecretType
CertificateInKeyVault -SsoClientSecretKeyVaultPath $secret.Id
NOTE
You need to set the SsoClientId property to match the Azure cloud you're deploying SSO in. In the Azure
Commercial Cloud, this property should be set to https://www.wvd.microsoft.com . However, the required
setting for this property will be different for other clouds, like the Azure Government cloud.
Get-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" | fl *
You can follow the steps to Configure your Azure Virtual Desktop host pool using the same SsoClientId,
SsoClientSecretKeyVaultPath, SsoSecretType, and SsoadfsAuthority values.
Removing SSO
To disable SSO on the host pool, run the following cmdlet:
Update-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" -
SsoadfsAuthority ''
If you also want to disable SSO on your AD FS server, run this cmdlet:
Install-Script UnConfigureWVDSSO
UnConfigureWVDSSO.ps1 -WvdWebAppAppIDUri "<WVD Web App URI>" -WvdClientAppApplicationID "a85cf173-4192-42f8-
81fa-777a763e6e2c"
NOTE
The WvdWebAppAppIDUri property needs to match the Azure cloud you are deploying in. In the Azure Commercial
Cloud, this property is https://www.wvd.microsoft.com . It will be different for other clouds like the Azure Government
cloud.
Next steps
Now that you've configured single sign-on, you can sign in to a supported Azure Virtual Desktop client to test it
as part of a user session. If you want to learn how to connect to a session using your new credentials, check out
these articles:
Connect with the Windows Desktop client
Connect with the web client
Configure Microsoft Endpoint Configuration
Manager
3/7/2022 • 2 minutes to read • Edit Online
This article explains how to configure Microsoft Endpoint Configuration Manager to automatically apply updates
to a Azure Virtual Desktop host running Windows 10 Enterprise multi-session.
Prerequisites
To configure this setting, you'll need the following things:
Make sure you've installed the Microsoft Endpoint Configuration Manager Agent on your virtual machines.
Make sure your version of Microsoft Endpoint Configuration Manager is at least on branch level 1906. For
best results, use branch level 1910 or higher.
NOTE
Currently, you can't update Windows 10 Enterprise multi-session version 21H2 and Windows 11 Enterprise multi-session
with their corresponding Windows client updates.
IMPORTANT
Multimedia redirection for Azure Virtual Desktop is currently in preview. See the Supplemental Terms of Use for Microsoft
Azure Previews for legal terms that apply to Azure features that are in beta, preview, or otherwise not yet released into
general availability.
NOTE
Azure Virtual Desktop doesn't currently support multimedia redirection on Azure Virtual Desktop for Microsoft 365
Government (GCC), GCC-High environments, and Microsoft 365 DoD.
Multimedia redirection on Azure Virtual Desktop is only available for the Windows Desktop client on Windows 10
machines. Multimedia redirection requires the Windows Desktop client, version 1.2.2222 or later.
Multimedia redirection (MMR) gives you smooth video playback while watching videos in your Azure Virtual
Desktop browser. Multimedia redirection remotes the media element from the browser to the local machine for
faster processing and rendering. Both Microsoft Edge and Google Chrome support the multimedia redirection
feature. However, the public preview version of multimedia redirection for Azure Virtual Desktop has restricted
playback on YouTube. To test YouTube within your organization's deployment, you'll need to enable an extension.
Requirements
Before you can use Multimedia Redirection on Azure Virtual Desktop, you'll need to do these things:
1. Install the Windows Desktop client on a Windows 10 or Windows 10 IoT Enterprise device that meets the
hardware requirements for Teams on a Windows PC. Installing version 1.2.2222 or later of the client will
also install the multimedia redirection plugin (MsMmrDVCPlugin.dll) on the client device. To learn more
about updates and new versions, see What's new in the Windows Desktop client.
2. Create a host pool for your users.
3. Configure the client machine to let your users access the Insiders program. To configure the client for the
Insider group, set the following registry information:
Key : HKLM\Software\Microsoft\MSRDC\Policies
Type : REG_SZ
Name : ReleaseRing
Data : insider
To learn more about the Insiders program, see Windows Desktop client for admins.
4. Use the MSI installer (MsMmrHostMri) to install the multimedia redirection extensions for your internet
browser on your Azure VM. Multimedia redirection for Azure Virtual Desktop currently only supports
Microsoft Edge and Google Chrome.
To learn more about group policy configuration, see Microsoft Edge group policy.
Configure Google Chrome group policies for multimedia redirection
To configure the Google Chrome group policies, you'll need to edit the Google Chrome Administrative Template.
You should see the extension configuration options under Administrative Templates > Google > Google
Chrome Extensions > Extension management settings .
The following example is much like the code example in Configure Microsoft Edge group policies for multimedia
redirection. This policy will force the multimedia redirection extension to install with the icon pinned in the top-
right menu, and will only allow multimedia redirection to load on YouTube.
Select the notification to allow your users to enable the extension. Users should also pin the extension so that
they can see from the icon if multimedia redirection is connected.
The multimedia redirection status icon
To quickly tell if multimedia redirection is active in your browser, we've added the following icon states:
IC O N STAT E DEF IN IT IO N
The red square with an "X" inside of it means that the client
couldn't connect to multimedia redirection.
Selecting the icon will display a pop-up menu that has a checkbox you can select to enable or disable
multimedia redirection on all websites. It also lists the version numbers for each component of the service.
If you're submitting an issue from the host, you'd format it like this:
4. In the Explain in more detail field, describe the issue you're experiencing. We recommend also
including the URL of the video you were watching when the issue happened.
5. Once you're done, select Next .
6. Select the Problem bubble, then select Apps and Remote Desktop from the two drop-down menus, as
shown in the following screenshot.
7. Select Next .
8. Check to see if there's a similar issue in the list to the one you plan to submit.
If a bubble appears that links to an active bug, make sure the bug's description matches the issue
you're reporting. If it does, select the bubble, then select Link to bug , as shown in the following
screenshot.
9. Select Next .
10. In the Add more details window, select Include data about Remote Desktop (Default) , then
answer all questions with as much detail as possible.
If you'd like to add a video recording of the issue, select Include data about Remote Desktop
(Default) , then select the Star t recording button. While recording, open Remote Desktop and do the
process that led to the issue happening. When you're done, return to the browser, then test the video to
make sure it recorded properly.
Once you're done, agree to send the attached files and diagnostics to Microsoft, then select Submit .
Known issues and limitations
The following issues are ones we're already aware of, so you won't need to report them:
Multimedia redirection only works on the Windows Desktop client, not the web client.
Multimedia redirection doesn't currently support protected content, so videos from Pluralsight and
Netflix won't work.
During public preview, multimedia redirection will be disabled on all sites except YouTube. However, if you
have the extension, you can enable multimedia redirection for all websites. We added the extension so
organizations can test the feature on their company websites.
There's a small chance that the MSI installer won't be able to install the extension during internal testing.
If you run into this issue, you'll need to install the multimedia redirection extension from the Microsoft
Edge Store or Google Chrome Store.
Multimedia redirection browser extension (Microsoft Edge)
Multimedia browser extension (Google Chrome)
Installing the extension on host machines with the MSI installer will either prompt users to accept the
extension the first time they open the browser or display a warning or error message. If users deny this
prompt, it can cause the extension to not load. To avoid this issue, install the extensions by editing the
group policy.
When you resize the video window, the window's size will adjust faster than the video itself. You'll also see
this issue when minimizing and maximizing the window.
Next steps
If you're interested in video streaming on other parts of Azure Virtual Desktop, check out Teams for Azure
Virtual Desktop.
Add language packs to a Windows 10 multi-session
image
3/7/2022 • 8 minutes to read • Edit Online
Azure Virtual Desktop is a service that your users can deploy anytime, anywhere. That's why it's important that
your users be able to customize which language their Windows 10 Enterprise multi-session image displays.
There are two ways you can accommodate the language needs of your users:
Build dedicated host pools with a customized image for each language.
Have users with different language and localization requirements in the same host pool, but customize their
images to ensure they can select whichever language they need.
The latter method is a lot more efficient and cost-effective. However, it's up to you to decide which method best
suits your needs. This article will show you how to customize languages for your images.
Prerequisites
You need the following things to customize your Windows 10 Enterprise multi-session images to add multiple
languages:
An Azure virtual machine (VM) with Windows 10 Enterprise multi-session, version 1903 or later
The Language ISO, Feature on Demand (FOD) Disk 1, and Inbox Apps ISO of the OS version the image
uses. You can download them here:
Language ISO:
Windows 10, version 1903 or 1909 Language Pack ISO
Windows 10, version 2004 or later Language Pack ISO
FOD Disk 1 ISO:
Windows 10, version 1903 or 1909 FOD Disk 1 ISO
Windows 10, version 2004 or later FOD Disk 1 ISO
Inbox Apps ISO:
Windows 10, version 1903 or 1909 Inbox Apps ISO
Windows 10, version 2004 Inbox Apps ISO
Windows 10, version 20H2 Inbox Apps ISO
Windows 10, version 21H1 or 21H2 Inbox Apps ISO
If you use Local Experience Pack (LXP) ISO files to localize your images, you will also need to
download the appropriate LXP ISO for the best language experience
If you're using Windows 10, version 1903 or 1909:
Windows 10, version 1903 or 1909 LXP ISO
If you're using Windows 10, version 2004, 20H2, or 21H1, use the information in Adding
languages in Windows 10: Known issues to figure out which of the following LXP ISOs is right
for you:
Windows 10, version 2004 or later 10C LXP ISO
Windows 10, version 2004 or later 11C LXP ISO
Windows 10, version 2004 or later 1C LXP ISO
Windows 10, version 2004 or later 2C LXP ISO
Windows 10, version 2004 or later 4B LXP ISO
Windows 10, version 2004 or later 5C LXP ISO
Windows 10, version 2004 or later 7C LXP ISO
Windows 10, version 2004 or later 9C LXP ISO
Windows 10, version 2004 or later 10C LXP ISO
An Azure Files Share or a file share on a Windows File Server Virtual Machine
NOTE
The file share (repository) must be accessible from the Azure VM you plan to use to create the custom image.
NOTE
If you're working with limited storage, only copy the files for the languages you know your users need. You can tell
the files apart by looking at the language codes in their file names. For example, the French file has the code "fr-
FR" in its name. For a complete list of language codes for all available languages, see Available language packs for
Windows.
IMPORTANT
Some languages require additional fonts included in satellite packages that follow different naming conventions.
For example, Japanese font file names include “Jpan."
6. Set the permissions on the language content repository share so that you have read access from the VM
you'll use to build the custom image.
##Spanish##
Add-AppProvisionedPackage -Online -PackagePath $LIPContent\es-es\LanguageExperiencePack.es-es.Neutral.appx -
LicensePath $LIPContent\es-es\License.xml
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Client-Language-Pack_x64_es-es.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Basic-es-es-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Handwriting-es-es-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-OCR-es-es-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Speech-es-es-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-TextToSpeech-es-es-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-NetFx3-OnDemand-
Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-InternetExplorer-Optional-
Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-MSPaint-FoD-
Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Notepad-FoD-
Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-PowerShell-ISE-FOD-
Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Printing-WFS-FoD-
Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-StepsRecorder-
Package~31bf3856ad364e35~amd64~es-es~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-WordPad-FoD-
Package~31bf3856ad364e35~amd64~es-es~.cab
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("es-es")
Set-WinUserLanguageList $LanguageList -force
##French##
Add-AppProvisionedPackage -Online -PackagePath $LIPContent\fr-fr\LanguageExperiencePack.fr-fr.Neutral.appx -
LicensePath $LIPContent\fr-fr\License.xml
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Client-Language-Pack_x64_fr-fr.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Basic-fr-fr-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Handwriting-fr-fr-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-OCR-fr-fr-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Speech-fr-fr-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-TextToSpeech-fr-fr-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-NetFx3-OnDemand-
Package~31bf3856ad364e35~amd64~fr-fr~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-InternetExplorer-Optional-
Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-MSPaint-FoD-
Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Notepad-FoD-
Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-PowerShell-ISE-FOD-
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-PowerShell-ISE-FOD-
Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Printing-WFS-FoD-
Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-StepsRecorder-
Package~31bf3856ad364e35~amd64~fr-FR~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-WordPad-FoD-
Package~31bf3856ad364e35~amd64~fr-FR~.cab
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("fr-fr")
Set-WinUserLanguageList $LanguageList -force
##Chinese(PRC)##
Add-AppProvisionedPackage -Online -PackagePath $LIPContent\zh-cn\LanguageExperiencePack.zh-cn.Neutral.appx -
LicensePath $LIPContent\zh-cn\License.xml
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Client-Language-Pack_x64_zh-cn.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Basic-zh-cn-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Fonts-Hans-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Handwriting-zh-cn-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-OCR-zh-cn-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Speech-zh-cn-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-TextToSpeech-zh-cn-
Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-NetFx3-OnDemand-
Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-InternetExplorer-Optional-
Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-MSPaint-FoD-
Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Notepad-FoD-
Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-PowerShell-ISE-FOD-
Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Printing-WFS-FoD-
Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-StepsRecorder-
Package~31bf3856ad364e35~amd64~zh-cn~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-WordPad-FoD-
Package~31bf3856ad364e35~amd64~zh-cn~.cab
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("zh-cn")
Set-WinUserLanguageList $LanguageList -force
The script might take a while depending on the number of languages you need to install.
Once the script is finished running, check to make sure the language packs installed correctly by going to Star t
> Settings > Time & Language > Language . If the language files are there, you're all set.
After adding additional languages to the Windows image, the inbox apps are also required to be updated to
support the added languages. This can be done by refreshing the pre-installed apps with the content from the
inbox apps ISO. To perform this refresh in an environment where the VM doesn't have internet access, you can
use the following PowerShell script template to automate the process and update only installed versions of
inbox apps.
#########################################
## Update Inbox Apps for Multi Language##
#########################################
##Set Inbox App Package Content Stores##
[string] $AppsContent = "F:\"
IMPORTANT
The inbox apps included in the ISO aren't the latest versions of the pre-installed Windows apps. To get the latest version
of all apps, you need to update the apps using the Windows Store App and perform an manual search for updates after
you've installed the additional languages.
2. Stop the VM, then capture it in a managed image by following the instructions in Create a managed
image of a generalized VM in Azure.
3. You can now use the customized image to deploy a Azure Virtual Desktop host pool. To learn how to
deploy a host pool, see Tutorial: Create a host pool with the Azure portal.
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("es-es")
$LanguageList.Add("fr-fr")
$LanguageList.Add("zh-cn")
Set-WinUserLanguageList $LanguageList -force
After a user changes their language settings, they'll need to sign out of their Azure Virtual Desktop session and
sign in again for the changes to take effect.
Next steps
If you're curious about known issues for language packs, see Adding language packs in Windows 10, version
1803 and later versions: Known issues.
If you have any other questions about Windows 10 Enterprise multi-session, check out our FAQ.
Add languages to a Windows 11 Enterprise image
3/7/2022 • 5 minutes to read • Edit Online
It's important to make sure users within your organization from all over the world can use your Azure Virtual
Desktop deployment. That's why you can customize the Windows 11 Enterprise image you use for your virtual
machines (VMs) to have different language packs. Starting with Windows 11, non-administrator user accounts
can now add both the display language and its corresponding language features. This feature means you won't
need to pre-install language packs for users in a personal host pool. For pooled host pools, we still recommend
you add the languages you plan to add to a custom image. You can use the instructions in this article for both
single-session and multi-session versions of Windows 11 Enterprise.
When your organization includes users with multiple different languages, you have two options:
Create one dedicated host pool with a customized image per language.
Have multiple users with different languages in the same host pool.
The second option is more efficient in terms of resources and cost, but requires a few extra steps. Fortunately,
this article will help walk you through how to build an image that can accommodate users of all languages and
localization needs.
Requirements
Before you can add languages to a Windows 11 Enterprise VM, you'll need to have the following things ready:
An Azure VM with Windows 11 Enterprise installed
A Language and Optional Features (LoF) ISO. You can download the ISO at Windows 11 Language and
Optional Features LoF ISO
An Azure Files share or a file share on a Windows File Server VM
NOTE
The file share repository must be accessible from the Azure VM that you're going to use to create the custom image.
NOTE
If you're working with limited storage, you can use the mounted "Languages and Optional Features" ISO as a
repository. To learn how to create a repository, see Build a custom FOD and language pack repository.
IMPORTANT
Some languages require additional fonts included in satellite packages that follow different naming conventions.
For example, Japanese font file names include “Jpan."
5. Set the permissions on the language content repository share so that you have read access from the VM
you'll use to build the custom image.
########################################################
## Add Languages to running Windows Image for Capture##
########################################################
##Disable Language Pack Cleanup##
##Disable Language Pack Cleanup##
Disable-ScheduledTask -TaskPath "\Microsoft\Windows\AppxDeploymentClient\" -TaskName "Pre-staged app
cleanup"
Disable-ScheduledTask -TaskPath "\Microsoft\Windows\MUI\" -TaskName "LPRemove"
Disable-ScheduledTask -TaskPath "\Microsoft\Windows\LanguageComponentsInstaller" -TaskName
"Uninstallation"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Control Panel\International" /v
"BlockCleanupOfUnusedPreinstalledLangPacks" /t REG_DWORD /d 1 /f
$additionalCapabilityList = @(
"Language.Basic~~~$sourceLanguage~0.0.1.0",
"Language.Handwriting~~~$sourceLanguage~0.0.1.0",
"Language.OCR~~~$sourceLanguage~0.0.1.0",
"Language.Speech~~~$sourceLanguage~0.0.1.0",
"Language.TextToSpeech~~~$sourceLanguage~0.0.1.0"
)
foreach($feature in $additionalFODList){
Dism /Online /Add-Package /PackagePath:$feature
}
if($langGroup){
Dism /Online /Add-Capability /CapabilityName:Language.Fonts.$langGroup~~~und-$langGroup~0.0.1.0
}
The script might take a while to finish depending on the number of languages you need to install. You can
also install additional languages after initial setup by running the script again with a different
$targetLanguage parameter.
5. To automatically select the appropriate installation files, download and save the Available Windows 10
1809 Languages and Features on Demand table as a CSV file, then save it in the same folder as your
PowerShell script.
6. Once the script is finished running, check to make sure the language packs installed correctly by going to
Star t > Settings > Time & Language > Language . If the language files are there, you're all set.
7. Finally, if the VM is connected to the Internet while installing languages, you'll need to run a cleanup
process to remove any unnecessary language experience packs. To clean up the files, run these
commands:
To clean up different language packs, replace "es-ES" with a different language code.
8. Once you're done with cleanup, disconnect the share.
2. If you run into any issues, check the SetupErr.log file in your C drive at Windows > System32 >
Sysprep > Panther . After that, follow the instructions in Sysprep fails with Microsoft Store apps to
troubleshoot your setup.
3. If setup is successful, stop the VM, then capture it in a managed image by following the instructions in
Create a managed image of a generalized VM in Azure.
4. You can now use the customized image to deploy an Azure Virtual Desktop host pool. To learn how to
deploy a host pool, see Tutorial: Create a host pool with the Azure portal.
NOTE
When a user changes their display language, they'll need to sign out of their Azure Virtual Desktop session, then sign
back in. They must sign out from the Start menu.
Next steps
Learn how to install language packages for Windows 10 multi-session VMs at Add language packs to a
Windows 10 multi-session image.
For a list of known issues, see Adding languages in Windows 10: Known issues.
How to resolve Azure Advisor recommendations
3/7/2022 • 2 minutes to read • Edit Online
This article describes how you can resolve recommendations that appear in Azure Advisor for Azure Virtual
Desktop.
This recommendation appears under Operational Excellence. The recommendation should also show you a
warning message like this:
"You don't have a validation environment enabled in this subscription. When you made your host pools, you
selected No for "Validation environment" in the Properties tab. To ensure business continuity through Azure
Virtual Desktop service deployments, make sure you have at least one host pool with a validation environment
where you can test for potential issues.”
You can make this warning message go away by enabling a validation environment in one of your host pools.
To enable a validation environment:
1. Go to your Azure portal home page and select the host pool you want to change.
2. Next, select the host pool you want to change from a production environment to a validation
environment.
3. In your host pool, select Proper ties on the left column. Next, scroll down until you see “Validation
environment.” Select Yes , then select Apply .
These changes won't make the warning go away immediately, but it should disappear eventually. Azure Advisor
updates twice a day. Until then, you can postpone or dismiss the recommendation manually. We recommend
you let the recommendation go away on its own. That way, Azure Advisor can let you know if it comes across
any problems as the settings change.
Next steps
If you're looking for more in-depth guides about how to resolve common issues, check out Troubleshooting
overview, feedback, and support for Azure Virtual Desktop.
Use Azure Monitor for Azure Virtual Desktop to
monitor your deployment
3/7/2022 • 9 minutes to read • Edit Online
Azure Monitor for Azure Virtual Desktop is a dashboard built on Azure Monitor Workbooks that helps IT
professionals understand their Azure Virtual Desktop environments. This topic will walk you through how to set
up Azure Monitor for Azure Virtual Desktop to monitor your Azure Virtual Desktop environments.
Requirements
Before you start using Azure Monitor for Azure Virtual Desktop, you'll need to set up the following things:
All Azure Virtual Desktop environments you monitor must be based on the latest release of Azure Virtual
Desktop that’s compatible with Azure Resource Manager.
At least one configured Log Analytics Workspace. Use a designated Log Analytics workspace for your Azure
Virtual Desktop session hosts to ensure that performance counters and events are only collected from
session hosts in your Azure Virtual Desktop deployment.
Enable data collection for the following things in your Log Analytics workspace:
Diagnostics from your Azure Virtual Desktop environment
Recommended performance counters from your Azure Virtual Desktop session hosts
Recommended Windows Event Logs from your Azure Virtual Desktop session hosts
The data setup process described in this article is the only one you'll need to monitor Azure Virtual Desktop. You
can disable all other items sending data to your Log Analytics workspace to save costs.
Anyone monitoring Azure Monitor for Azure Virtual Desktop for your environment will also need the following
read-access permissions:
Read-access to the Azure subscriptions that hold your Azure Virtual Desktop resources
Read-access to the subscription's resource groups that hold your Azure Virtual Desktop session hosts
Read access to the Log Analytics workspace or workspaces
NOTE
Read access only lets admins view data. They'll need different permissions to manage resources in the Azure Virtual
Desktop portal.
NOTE
Standard data storage charges for Log Analytics will apply. To start, we recommend you choose the pay-as-you-go model
and adjust as you scale your deployment and take in more data. To learn more, see Azure Monitor pricing.
NOTE
If you don't see the error message, you don't need to do steps 2 through 4.
NOTE
If you don't see the error message, you don't need to do steps 2-4.
NOTE
If you don't see the Session hosts section or error message, all session hosts are set up correctly. Skip ahead to set up
instructions for Workspace performance counters.
NOTE
The host machine needs to be running to install the Log Analytics extension. If automatic deployment doesn't work, you
can install the extension on a host manually instead. To learn how to install the extension manually, see Log Analytics
virtual machine extension for Windows.
NOTE
To learn about viewing or deleting your personal data collected by the service, see Azure Data Subject Requests for the
GDPR. For more information about GDPR, see the GDPR section of the Service Trust portal.
Next steps
Now that you’ve configured Azure Monitor for your Azure Virtual Desktop environment, here are some
resources that might help you start monitoring your environment:
Check out our glossary to learn more about terms and concepts related to Azure Monitor for Azure Virtual
Desktop.
To estimate, measure, and manage your data storage costs, see Estimate Azure Monitor costs.
If you encounter a problem, check out our troubleshooting guide for help and known issues.
To see what's new in each version update, see What's new in Azure Monitor for Azure Virtual Desktop.
Azure Virtual Desktop disaster recovery
3/7/2022 • 8 minutes to read • Edit Online
To keep your organization's data safe, you may need to adopt a business continuity and disaster recovery
(BCDR) strategy. A sound BCDR strategy keeps your apps and workload up and running during planned and
unplanned service or Azure outages.
Azure Virtual Desktop offers BCDR for the Azure Virtual Desktop service to preserve customer metadata during
outages. When an outage occurs in a region, the service infrastructure components will fail over to the
secondary location and continue functioning as normal. You can still access service-related metadata, and users
can still connect to available hosts. End-user connections will stay online as long as the tenant environment or
hosts remain accessible.
To make sure users can still connect during a region outage, you need to replicate their virtual machines (VMs)
in a different location. During outages, the primary site fails over to the replicated VMs in the secondary
location. Users can continue to access apps from the secondary location without interruption. On top of VM
replication, you'll need to keep user identities accessible at the secondary location. If you're using profile
containers, you'll also need to replicate them. Finally, make sure your business apps that rely on data in the
primary location can fail over with the rest of the data.
To summarize, to keep your users connected during an outage, you'll need to do the following things in this
order:
Replicate the VMs in a secondary location.
If you're using profile containers, set up data replication in the secondary location.
Make sure user identities you set up in the primary location are available in the secondary location.
Make sure any line-of-business applications relying on data in your primary location are failed over to the
secondary location.
VM replication
First, you'll need to replicate your VMs to the secondary location. Your options for doing so depend on how your
VMs are configured:
You can configure all your VMs for both pooled and personal host pools with Azure Site Recovery. With this
method, you'll only need to set up one host pool and its related app groups and workspaces.
You can create a new host pool in the failover region while keeping all resources in your failover location
turned off. For this method, you'd need to set up new app groups and workspaces in the failover region. You
can then use an Azure Site Recovery plan to turn host pools on.
You can create a host pool that's populated by VMs built in both the primary and failover regions while
keeping the VMs in the failover region turned off. In this case, you only need to set up one host pool and its
related app groups and workspaces. You can use an Azure Site Recovery plan to power on host pools with
this method.
We recommend you use Azure Site Recovery to manage replicating VMs in other Azure locations, as described
in Azure-to-Azure disaster recovery architecture. We especially recommend using Azure Site Recovery for
personal host pools, because Azure Site Recovery supports both server-based and client-based SKUs.
If you use Azure Site Recovery, you won't need to register these VMs manually. The Azure Virtual Desktop agent
in the secondary VM will automatically use the latest security token to connect to the service instance closest to
it. The VM (session host) in the secondary location will automatically become part of the host pool. The end-user
will have to reconnect during the process, but apart from that, there are no other manual operations.
If there are existing user connections during the outage, before the admin can start failover to the secondary
region, you need to end the user connections in the current region.
To disconnect users in Azure Virtual Desktop (classic), run this cmdlet:
Invoke-RdsUserSessionLogoff
To disconnect users in the Azure-integrated version of Azure Virtual Desktop, run this cmdlet:
Remove-AzWvdUserSession
Once you've signed out all users in the primary region, you can fail over the VMs in the primary region and let
users connect to the VMs in the secondary region. For more information about how this process works, see
Replicate Azure VMs to another Azure region.
Virtual network
Next, consider your network connectivity during the outage. You'll need to make sure you've set up a virtual
network (VNET) in your secondary region. If your users need to access on-premises resources, you'll need to
configure this VNET to access them. You can establish on-premises connections with a VPN, ExpressRoute, or
virtual WAN.
We recommend you use Azure Site Recovery to set up the VNET in the failover region because it preserves your
primary network's settings and doesn't need peering.
User identities
Next, ensure that the domain controller is available at the secondary location.
There are three ways to keep the domain controller available:
Have Active Directory Domain Controller at secondary location
Use an on-premises Active Directory Domain Controller
Replicate Active Directory Domain Controller using Azure Site Recovery
Set up FSLogix Cloud Cache for both app and user data.
Set up disaster recovery for app data only to ensure access to business-critical data at all times. With this
method, you can retrieve user data after the outage is over.
Let’s take a look at how to configure FSLogix to set up disaster recovery for each option.
FSLogix configuration
The FSLogix agent can support multiple profile locations if you configure the registry entries for FSLogix.
To configure the registry entries:
1. Open the Registr y Editor .
2. Go to Computer > HKEY_LOCAL_MACHINE > SOFTWARE > FSLogix > Profiles .
4. In the Value Data field, enter the locations you want to use.
5. When you're done, select OK .
If the first location is unavailable, the FSLogix agent will automatically fail over to the second, and so on.
We recommend you configure the FSLogix agent with a path to the secondary location in the main region. Once
the primary location shuts down, the FLogix agent will replicate as part of the VM Azure Site Recovery
replication. Once the replicated VMs are ready, the agent will automatically attempt to path to the secondary
region.
For example, let's say your primary session host VMs are in the Central US region, but your profile container is
in the Central US region for performance reasons.
In this case, you would configure the FSLogix agent with a path to the storage in Central US. You would
configure the session host VMs to replicate in West US. Once the path to Central US fails, the agent will try to
create a new path for storage in West US instead.
S2D
Since S2D handles replication across regions internally, you don't need to manually set up the secondary path.
Network drives (VM with extra drives)
If you replicate the network storage VMs using Azure Site Recovery like the session host VMs, then the recovery
keeps the same path, which means you don't need to reconfigure FSlogix.
Azure Files
Azure Files supports cross-region asynchronous replication that you can specify when you create the storage
account. If the asynchronous nature of Azure Files already covers your disaster recovery goals, then you don't
need to do additional configuration.
If you need synchronous replication to minimize data loss, then we recommend you use FSLogix Cloud Cache
instead.
NOTE
This section doesn't cover the failover authentication mechanism for Azure Files.
App dependencies
Finally, make sure that any business apps that rely on data located in the primary region can fail over to the
secondary location. Also, be sure to configure the settings the apps need to work in the new location. For
example, if one of the apps is dependent on the SQL backend, make sure to replicate SQL in the secondary
location. You should configure the app to use the secondary location as either part of the failover process or as
its default configuration. You can model app dependencies on Azure Site Recovery plans. To learn more, see
About recovery plans.
Security-conscious customers, such as financial or government organizations, often sign in using Smartcards.
Smartcards make deployments more secure by requiring multifactor authentication (MFA). However, for the
RDP portion of a Azure Virtual Desktop session, Smartcards require a direct connection, or "line of sight," with
an Active Directory (AD) domain controller for Kerberos authentication. Without this direct connection, users
can't automatically sign in to the organization's network from remote connections. Users in a Azure Virtual
Desktop deployment can use the KDC proxy service to proxy this authentication traffic and sign in remotely. The
KDC proxy allows for authentication for the Remote Desktop Protocol of a Azure Virtual Desktop session, letting
the user sign in securely. This makes working from home much easier, and allows for certain disaster recovery
scenarios to run more smoothly.
However, setting up the KDC proxy typically involves assigning the Windows Server Gateway role in Windows
Server 2016 or later. How do you use a Remote Desktop Services role to sign in to Azure Virtual Desktop? To
answer that, let's take a quick look at the components.
There are two components to the Azure Virtual Desktop service that need to be authenticated:
The feed in the Azure Virtual Desktop client that gives users a list of available desktops or applications they
have access to. This authentication process happens in Azure Active Directory, which means this component
isn't the focus of this article.
The RDP session that results from a user selecting one of those available resources. This component uses
Kerberos authentication and requires a KDC proxy for remote users.
This article will show you how to configure the feed in the Azure Virtual Desktop client in the Azure portal. If you
want to learn how to configure the RD Gateway role, see Deploy the RD Gateway role.
Requirements
To configure a Azure Virtual Desktop session host with a KDC proxy, you'll need the following things:
Access to the Azure portal and an Azure administrator account.
The remote client machines must be running either Windows 10 or Windows 7 and have the Windows
Desktop client installed. Currently, the web client is not supported.
You must have a KDC proxy already installed on your machine. To learn how to do that, see Set up the RD
Gateway role for Azure Virtual Desktop.
The machine's OS must be Windows Server 2016 or later.
Once you've made sure you meet these requirements, you're ready to get started.
5. Select Save .
6. The selected host pool should now begin to issue RDP connection files that include the kdcproxyname
value you entered in step 4.
Next steps
To learn how to manage the Remote Desktop Services side of the KDC proxy and assign the RD Gateway role,
see Deploy the RD Gateway role.
If you're interested in scaling your KDC proxy servers, learn how to set up high availability for KDC proxy at Add
high availability to the RD Web and Gateway web front.
Start Virtual Machine on Connect
3/7/2022 • 5 minutes to read • Edit Online
The Start Virtual Machine (VM) on Connect feature lets you save costs by allowing end users to turn on their
VMs only when they need them. You can then turn off VMs when they're not needed.
NOTE
Azure Virtual Desktop (classic) doesn't support this feature.
NOTE
If your VMs and host pool are in different subscriptions, the RBAC role needs to be created in the subscription that the
VMs are in.
NOTE
You might see both the Windows Virtual Desktop and Windows Virtual Desktop Azure Resource Manager
Provider first party applications appear if you've deployed Azure Virtual Desktop (classic). Assign the role to both
apps.
To use the JSON template, save the JSON file, add the relevant subscription information to Assignable Scopes,
then run the following cmdlet in PowerShell:
To learn more about creating custom roles, see Create or update Azure custom roles using Azure PowerShell.
IMPORTANT
You can only configure this feature in existing host pools. This feature isn't available when you create a new host pool.
User experience
In typical sessions, the time it takes for a user to connect to a deallocated VM increases because the VM needs
time to turn on again, much like turning on a physical computer. The Remote Desktop client has an indicator that
lets the user know the PC is being powered on while they're connecting.
Troubleshooting
If the feature runs into any issues, we recommend you use the Azure Virtual Desktop diagnostics feature to
check for problems. If you receive an error message, make sure to pay close attention to the message content
and copy down the error name somewhere for reference.
You can also use Azure Monitor for Azure Virtual Desktop to get suggestions for how to resolve issues.
If the VM doesn't turn on, you'll need to check the health of the VM you tried to turn on before you do anything
else.
Next steps
If you run into any issues that the troubleshooting documentation or the diagnostics feature couldn't solve,
check out the Start VM on Connect FAQ.
Start VM on Connect FAQ
3/7/2022 • 2 minutes to read • Edit Online
This article covers frequently asked questions about the Start Virtual Machine (VM) on Connect feature for
Azure Virtual Desktop host pools.
NOTE
Make sure to set the time limit for the "End a disconnected session" policy to a value greater than five minutes. A low time
limit can cause users' sessions to end if their network loses connection for too long, resulting in lost work.
Signing users out won't deallocate their VMs. To learn how to deallocate VMs, see Start or stop VMs during off
hours for personal host pools and Scale session hosts using Azure Automation for pooled host pools.
Next steps
To learn how to configure Start VM on Connect, see Start virtual machine on connect.
If you have more general questions about Azure Virtual Desktop, check out our general FAQ.
Use drain mode to isolate session hosts and apply
patches
3/7/2022 • 2 minutes to read • Edit Online
Drain mode isolates a session host when you want to apply patches and do maintenance without disrupting
user sessions. When isolated, the session host won't accept new user sessions. Any new connections will be
redirected to the next available session host. Existing connections in the session host will keep working until the
user signs out or the administrator ends the session. When the session host is in drain mode, admins can also
remotely connect to the server without going through the Azure Virtual Desktop service. You can apply this
setting to both pooled and personal desktops.
IMPORTANT
You'll need to run this command for every session host you're applying the setting to.
Next steps
If you want to learn more about the Azure portal for Azure Virtual Desktop, check out our tutorials. If you're
already familiar with the basics, check out some of the other features you can use with the Azure portal, such as
MSIX app attach and Azure Advisor.
If you're using the PowerShell method and want to see what else the module can do, check out Set up the
PowerShell module for Azure Virtual Desktop and our PowerShell reference.
Set up Azure Virtual Desktop for Azure Stack HCI
(preview)
3/7/2022 • 7 minutes to read • Edit Online
IMPORTANT
Azure Virtual Desktop for Azure Stack HCI is currently in preview. See the Supplemental Terms of Use for Microsoft Azure
Previews for legal terms that apply to Azure features that are in beta, preview, or otherwise not yet released into general
availability.
With Azure Virtual Desktop for Azure Stack HCI (preview), you can use Azure Virtual Desktop session hosts in
your on-premises Azure Stack HCI infrastructure. For more information, see Azure Virtual Desktop for Azure
Stack HCI (preview).
Requirements
In order to use Azure Virtual Desktop for Azure Stack HCI, you'll need the following things:
An Azure Stack HCI cluster registered with Azure.
An Azure subscription for Azure Virtual Desktop session host pool creation with all required admin
permissions.
An on-premises Active Directory (AD) synced with Azure Active Directory.
A stable connection to Azure from your on-premises network.
Access from your on-premises network to all the required URLs listed in Azure Virtual Desktop's required
URL list for virtual machines.
NOTE
Install the Remote Desktop Session Host (RDSH) role if the VM is running a Windows Server OS.
5. Enable Azure to manage the new virtual machine through Azure Arc by installing the Connected Machine
agent to it. Follow the directions in Connect hybrid machines with Azure Arc-enabled servers to install the
Windows agent to the virtual machine.
6. Add the virtual machine to the Azure Virtual Desktop host pool you created earlier by installing the Azure
Virtual Desktop Agent. After that, follow the instructions in Register the VMs to the Azure Virtual Desktop
host pool to register the VM to the Azure Virtual Desktop service.
7. Follow the directions in Create app groups and manage user assignments to create an app group for
testing and assign user access to it.
8. Go to the web client and grant your users access to the new deployment.
Optional configurations
Now that you've set up Azure Virtual Desktop for Azure Stack HCI, here are a few extra things you can do
depending on your deployment's needs.
Create a profile container using a file share on Azure Stack HCI
To create a profile container using a file share:
1. Deploy a file share on a single or clustered Windows Server VM deployment. The Windows Server VMs
with file server role can also be colocated on the same cluster where the session host VMs are deployed.
2. Connect to the virtual machine with the credentials you provided when creating the virtual machine.
3. On the virtual machine, launch Control Panel and select System .
4. Select Computer name, select Change settings , and then select Change… .
5. Select Domain , then enter the Active Directory domain on the virtual network.
6. Authenticate with a domain account that has privileges to domain-join machines.
7. Follow the directions in Prepare the VM to act as a file share to prepare your VM for deployment.
8. Follow the directions in Configure the FSLogix profile container to configure your profile container for
use.
Download supported OS images from Azure Marketplace
You can run any OS images that both Azure Virtual Desktop and Azure Stack HCI support on your deployment.
To learn which OSes Azure Virtual Desktop supports, see Supported VM OS images.
You have two options to download an image:
Deploy a VM with your preferred OS image, then follow the instructions in Download a Windows VHD from
Azure.
Download a Windows Virtual Hard Disk (VHD) from Azure without deploying a VM.
Downloading a Windows VHD without deploying a VM has several extra steps. To download a VHD from Azure
without deploying a VM, you'll need to complete the instructions in the following sections in order.
Requirements to download a VHD without a VM
Before you begin, make sure you're connected to Azure and are running Azure Cloud Shell in either a command
prompt or in the bash environment. You can also run CLI reference commands via the Azure CLI.
If you're using a local installation, run the az login command to sign into Azure.
After that, follow any other prompts you see to finish signing in. For additional sign-in options, see Sign in with
the Azure CLI.
If this is your first time using Azure CLI, install any required extensions by following the instructions in Use
extensions with the Azure CLI.
Finally, run the az version command to make sure your client is up to date. If it's out of date, run the az upgrade
command to upgrade to the latest version.
Search Azure Marketplace for Azure Virtual Desktop images
You can find the image you're looking for by using the Search function in Azure Marketplace in the Azure
portal. To find images specifically for Azure Virtual Desktop, you can run one of the following example queries.
If you're looking for Windows 10 multi-session, you can run a search with this criteria:
MicrosoftWindowsDesktop:Windows-10:21h1-evd-g2:latest
If you're looking for Windows Server 2019 datacenter, you can run the following criteria in your Azure CLI:
MicrosoftWindowsServer:windowsserver-gen2preview:2019-datacenter-gen2:latest
IMPORTANT
Make sure to only use generation 2 ("gen2") images. Azure Virtual Desktop for Azure Stack HCI doesn't support creating
a VM with a first-generation ("gen1") image. Avoid SKUs with a "-g1" suffix.
2. Run these commands to create the disk and generate a Serial Attached SCSI (SAS) access URL.
Export a VHD from the managed disk to Azure Stack HCI cluster
After that, you'll need to export the VHD you created from the managed disk to your Azure Stack HCI cluster,
which will let you create new VMs. You can use the following method in a regular web browser or Storage
Explorer.
To export the VHD:
1. Open a browser and go to the SAS URL of the managed disk you generated in Create a new Azure
managed disk from the image. You can download the VHD image for the image you downloaded at the
Azure Marketplace at this URL.
2. Download the VHD image. The downloading process may take several minutes, so be patient. Make sure
the image has fully downloaded before going to the next section.
NOTE
If you're running azcopy, you may need to skip the md5check by running this command:
NOTE
Optionally, you can also convert the download VHD to a dynamic VHDx by running this command:
Next steps
If you need to refresh your memory about the basics or pricing information, go to Azure Virtual Desktop for
Azure Stack HCI.
If you have additional questions, check out our FAQ.
Troubleshooting overview, feedback, and support
for Azure Virtual Desktop
3/7/2022 • 4 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
This article provides an overview of the issues you may encounter when setting up an Azure Virtual Desktop
environment and provides ways to resolve the issues.
Report issues
To report issues or suggest features for Azure Virtual Desktop with Azure Resource Manager integration, visit
the Azure Virtual Desktop Tech Community. You can use the Tech Community to discuss best practices or
suggest and vote for new features.
When you make a post asking for help or propose a new feature, make sure you describe your topic in as much
detail as possible. Detailed information can help other users answer your question or understand the feature
you're proposing a vote for.
Escalation tracks
Before doing anything else, make sure to check the Azure status page and Azure Service Health to make sure
your Azure service is running properly.
Use the following table to identify and resolve issues you may encounter when setting up an environment using
Remote Desktop client. Once your environment's set up, you can use our new Diagnostics service to identify
issues for common scenarios.
ISSUE SUGGEST ED SO L UT IO N
Session host pool Azure Virtual Network (VNET) and Express Open an Azure support request, then select the appropriate
Route settings service (under the Networking category).
Session host pool Virtual Machine (VM) creation when Azure Open an Azure support request, then select Azure Vir tual
Resource Manager templates provided with Azure Virtual Desktop for the service.
Desktop aren't being used
For issues with the Azure Resource Manager templates that
are provided with Azure Virtual Desktop, see Azure Resource
Manager template errors section of Host pool creation.
ISSUE SUGGEST ED SO L UT IO N
Managing Azure Virtual Desktop session host environment Open an Azure support request.
from the Azure portal
For management issues when using Remote Desktop
Services/Azure Virtual Desktop PowerShell, see Azure Virtual
Desktop PowerShell or open an Azure support request,
select Azure Vir tual Desktop for the service, select
Configuration and management for the problem type,
then select Issues configuring environment using
PowerShell for the problem subtype.
Managing Azure Virtual Desktop configuration tied to host See Azure Virtual Desktop PowerShell, or open an Azure
pools and application groups (app groups) support request, select Azure Vir tual Desktop for the
service, then select the appropriate problem type.
Deploying and manage FSLogix Profile Containers See Troubleshooting guide for FSLogix products and if that
doesn't resolve the issue, Open an Azure support request,
select Azure Vir tual Desktop for the service, select
FSLogix for the problem type, then select the appropriate
problem subtype.
Remote desktop clients malfunction on start See Troubleshoot the Remote Desktop client and if that
doesn't resolve the issue, Open an Azure support request,
select Azure Vir tual Desktop for the service, then select
Remote Desktop clients for the problem type.
Connected but no feed Troubleshoot using the User connects but nothing is
displayed (no feed) section of Azure Virtual Desktop service
connections.
Feed discovery problems due to the network Your users need to contact their network administrator.
Connecting clients See Azure Virtual Desktop service connections and if that
doesn't solve your issue, see Session host virtual machine
configuration.
Responsiveness of remote applications or desktop If issues are tied to a specific application or product, contact
the team responsible for that product.
Licensing messages or errors If issues are tied to a specific application or product, contact
the team responsible for that product.
Issues with third-party authentication methods or tools Verify that your third-party provider supports Azure Virtual
Desktop scenarios and approach them regarding any known
issues.
ISSUE SUGGEST ED SO L UT IO N
Issues using Log Analytics for Azure Virtual Desktop For issues with the diagnostics schema, open an Azure
support request.
Issues using Microsoft 365 apps Contact the Microsoft 365 admin center with one of the
Microsoft 365 admin center help options.
Next steps
To troubleshoot issues while creating a host pool in an Azure Virtual Desktop environment, see host pool
creation.
To troubleshoot issues while configuring a virtual machine (VM) in Azure Virtual Desktop, see Session host
virtual machine configuration.
To troubleshoot issues related to the Azure Virtual Desktop agent or session connectivity, see Troubleshoot
common Azure Virtual Desktop Agent issues.
To troubleshoot issues with Azure Virtual Desktop client connections, see Azure Virtual Desktop service
connections.
To troubleshoot issues with Remote Desktop clients, see Troubleshoot the Remote Desktop client
To troubleshoot issues when using PowerShell with Azure Virtual Desktop, see Azure Virtual Desktop
PowerShell.
To learn more about the service, see Azure Virtual Desktop environment.
To go through a troubleshoot tutorial, see Tutorial: Troubleshoot Resource Manager template deployments.
To learn about auditing actions, see Audit operations with Resource Manager.
To learn about actions to determine errors during deployment, see View deployment operations.
Troubleshoot the Azure Virtual Desktop getting
started feature
3/7/2022 • 7 minutes to read • Edit Online
The Azure Virtual Desktop getting started feature uses nested templates to deploy Azure resources for
validation and automation in Azure Virtual Desktop. The getting started feature creates either two or three
resource groups based on whether the subscription it's running on has existing Active Directory Domain
Services (AD DS) or Azure Active Directory Domain Services (Azure AD DS) or not. All resource groups start
with the same user-defined prefix.
When you run the nested templates, they create three resource groups and a template that provisions Azure
Resource Manager resources. The following lists show each resource group and the templates they run.
The resource group that ends in "-deployment" runs these templates:
easy-button-roleassignment-job-linked-template
easy-button-prerequisitecompletion-job-linked-template
easy-button-prerequisite-job-linked-template
easy-button-inputvalidation-job-linked-template
easy-button-deploymentResources-linked-template
easy-button-prerequisite-user-setup-linked-template
NOTE
The easy-button-prerequisite-user-setup-linked-template is optional and will only appear if you created a validation user.
NOTE
This resource group is optional, and will only appear if your subscription doesn't have Azure AD DS or AD DS.
No subscriptions
In this issue, you see an error message that says "no subscriptions" when opening the getting started feature.
This happens when you try to open the feature without an active Azure subscription.
To fix this issue, check to see if your subscription or the affected user has an active Azure subscription. If they
don't, assign the user the Owner Role-based Access Control (RBAC) role on their subscription.
You don’t have permissions
This issue happens when you open the getting started feature and get an error message that says, "You don't
have permissions." This message appears when the user running the feature doesn't have Owner permissions
on their active Azure subscription.
To fix this issue, sign in with an Azure account that has Owner permissions, then assign the Owner RBAC role to
the affected account.
To resolve this issue, uninstall the Microsoft.Powershell.DSC extension, then run the getting started feature
again.
The running command stopped because the preference variable "ErrorActionPreference" or common
parameter is set to Stop: Error while creating and adding validation user <your-username-here> to
group <your-resource-group-here>
There currently isn't a way to fix this issue permanently. As a workaround, run The Azure Virtual Desktop getting
started feature again, but this time don't create a validation user. After that, create your new users with the
manual process only.
Validate that the domain administrator UPN exists for a new profile
To check if the UPN address is causing the issue with the template:
1. Select easy-button-prerequisite-job-linked-template and then on the failed step. Confirm the error
message.
2. Navigate to the <prefix>-deployment resource group and click on the resourceSetupRunbook .
3. Select the status, which should say Failed .
4. Select the Output tab.
If the UPN exists on your new subscription, there are two potential causes for the issue:
The getting started feature didn't create the domain administrator profile, because the user already exists. To
resolve this, run the getting started feature again, but this time enter a username that doesn't already exist in
your identity provider.
The getting started feature didn't create the validation user profile. To resolve this issue, run the getting
started feature again, but this time don't create any validation users. After that, create new users with the
manual process only.
{
"status": "Failed",
"error": {
"code": "ResourceDeploymentFailure",
"message": "The resource operation completed with terminal provisioning state 'Failed'."
}
}
{
"status": "Failed",
"error": {
"code": "BadRequest",
"message": "Multiple VMExtensions per handler not supported for OS type 'Windows'. VMExtension
'Microsoft.Powershell.DSC' with handler 'Microsoft.Powershell.DSC' already added or specified in input."
}
}
To resolve this issue, before you run the getting started feature, make sure to remove any currently running
instance of Microsoft.Powershell.DSC from the domain controller VM.
Failure in easy-button-prerequisitecompletion-job-linked-template
The user group for the validation users is located in the "USERS" container. However, the user group must be
synced to Azure AD in order to work properly. If it isn't, you'll get an error message that looks like this:
{
"status": "Failed",
"error": {
"code": "ResourceDeploymentFailure",
"message": "The resource operation completed with terminal provisioning state ‘Failed’."
}
}
To make sure the issue is caused by the validation user group not syncing, open the <prefix>-prerequisites
resource group and look for a file named prerequisiteSetupCompletionRunbook . Select the runbook, then
select All Logs .
To resolve this issue:
1. Enable syncing with Azure AD for the "USERS" container.
2. Create the AVDValidationUsers group in an organization unit that's syncing with Azure.
Next steps
Learn more about the getting started feature at Deploy Azure Virtual Desktop with the getting started feature.
Host pool creation
3/7/2022 • 9 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
This article covers issues during the initial setup of the Azure Virtual Desktop tenant and the related session host
pool infrastructure.
Provide feedback
Visit the Azure Virtual Desktop Tech Community to discuss the Azure Virtual Desktop service with the product
team and active community members.
Cause : There aren't active subscriptions in the account you signed in to Azure with, or the account doesn't have
permissions to view the subscriptions.
Fix : Sign in to the subscription where you'll deploy the session host virtual machines (VMs) with an account that
has at least contributor-level access.
Error: "Exceeding quota limit"
If your operation goes over the quota limit, you can do one of the following things:
Create a new host pool with the same parameters but fewer VMs and VM cores.
Open the link you see in the statusMessage field in a browser to submit a request to increase the quota
for your Azure subscription for the specified VM SKU.
Error: Can't see user assignments in app groups.
Cause : This error usually happens after you've moved the subscription from 1 Azure Active Directory (AD)
tenant to another. If your old assignments are still tied to the old Azure AD tenant, the Azure portal will lose track
of them.
Fix : You'll need to reassign users to app groups.
I only see US when setting the location for my service objects
Cause : Azure doesn't currently support that region for the Azure Virtual Desktop service. To learn about which
geographies we support, check out Data locations. If Azure Virtual Desktop supports the location but it still
doesn't appear when you're trying to select a location, that means your resource provider hasn't updated yet.
Fix : To get the latest list of regions, re-register the resource provider:
1. Go to Subscriptions and select the relevant subscription.
2. Select Resource Provider .
3. Select Microsoft.DesktopVir tualization , then select Re-register from the action menu.
When you re-register the resource provider, you won't see any specific UI feedback or update statuses. The re-
registration process also won't interfere with your existing environments.
Cause 1: Credentials provided for joining VMs to the domain are incorrect.
Fix 1: See the "Incorrect credentials" error for VMs are not joined to the domain in Session host VM
configuration.
Cause 2: Domain name doesn't resolve.
Fix 2: See Error: Domain name doesn't resolve in Session host VM configuration.
Cause 3: Your virtual network (VNET) DNS configuration is set to Default .
To fix this, do the following things:
1. Open the Azure portal and go to the Vir tual networks tab.
2. Find your VNET, then select DNS ser vers .
3. The DNS servers menu should appear on the right side of your screen. On that menu, select Custom .
4. Make sure the DNS servers listed under Custom match your domain controller or Active Directory domain. If
you don't see your DNS server, you can add it by entering its value into the Add DNS ser ver field.
Error: Your deployment failed...\Unauthorized
Cause: The subscription you're using is a type that can't access required features in the region where the
customer is trying to deploy. For example, MSDN, Free, or Education subscriptions can show this error.
Fix: Change your subscription type or region to one that can access the required features.
Error: VMExtensionProvisioningError
Cause 1: Transient error with the Azure Virtual Desktop environment.
Cause 2: Transient error with connection.
Fix: Confirm Azure Virtual Desktop environment is healthy by signing in using PowerShell. Finish the VM
registration manually in Create a host pool with PowerShell.
Error: The Admin Username specified isn't allowed
{ …{ "provisioningOperation":
"Create", "provisioningState": "Failed", "timestamp": "2019-01-29T20:53:18.904917Z", "duration":
"PT3.0574505S", "trackingId":
"1f460af8-34dd-4c03-9359-9ab249a1a005", "statusCode": "BadRequest", "statusMessage": { "error": { "code":
"InvalidParameter", "message":
"The Admin Username specified is not allowed.", "target": "adminUsername" } … }
Cause: PowerShell DSC extension was not able to get admin access on the VM.
Fix: Confirm username and password have administrative access on the virtual machine and run the Azure
Resource Manager template again.
Error: DeploymentFailed – PowerShell DSC Configuration 'FirstSessionHost' completed with Error(s)
Cause: PowerShell DSC extension was not able to get admin access on the VM.
Fix: Confirm username and password provided have administrative access on the virtual machine and run the
Azure Resource Manager template again.
Error: DeploymentFailed – InvalidResourceReference
Example of raw error:
Cause: Part of the resource group name is used for certain resources being created by the template. Due to the
name matching existing resources, the template may select an existing resource from a different group.
Fix: When running the Azure Resource Manager template to deploy session host VMs, make the first two
characters unique for your subscription resource group name.
Error: DeploymentFailed – InvalidResourceReference
Example of raw error:
{"code":"DeploymentFailed","message":"At least one resource deployment operation
failed. Please list deployment operations for details. Please see https://aka.ms/arm-
debug for usage details.","details":[{"code":"Conflict","message":"{\r\n \"status\":
\"Failed\",\r\n \"error\": {\r\n \"code\": \"ResourceDeploymentFailure\",\r\n
\"message\": \"The resource operation completed with terminal provisioning state
'Failed'.\",\r\n \"details\": [\r\n {\r\n \"code\": \"DeploymentFailed\",\r\n
\"message\": \"At least one resource deployment operation failed. Please list
deployment operations for details. Please see https://aka.ms/arm-debug for usage
details.\",\r\n \"details\": [\r\n {\r\n \"code\": \"BadRequest\",\r\n \"message\":
\"{\\r\\n \\\"error\\\": {\\r\\n \\\"code\\\": \\\"InvalidResourceReference\\\",\\r\\n
\\\"message\\\": \\\"Resource /subscriptions/EXAMPLE/resourceGroups/ernani-wvd-
demo/providers/Microsoft.Network/virtualNetworks/wvd-vnet/subnets/default
referenced by resource
/subscriptions/EXAMPLE/resourceGroups/DEMO/providers/Microsoft.Network/networkInterfaces
/EXAMPLE was not found. Please make sure that the referenced resource exists, and that both
resources are in the same region.\\\",\\r\\n \\\"details\\\": []\\r\\n }\\r\\n}\"\r\n
}\r\n ]\r\n }\r\n ]\r\n }\r\n\
Cause: This error is because the NIC created with the Azure Resource Manager template has the same name as
another NIC already in the VNET.
Fix: Use a different host prefix.
Error: DeploymentFailed – Error downloading
Example of raw error:
Cause: This error is due to a static route, firewall rule, or NSG blocking the download of the zip file tied to the
Azure Resource Manager template.
Fix: Remove blocking static route, firewall rule, or NSG. Optionally, open the Azure Resource Manager template
json file in a text editor, take the link to zip file, and download the resource to an allowed location.
Error: Can't delete a session host from the host pool after deleting the VM
Cause: You need to delete the session host before you delete the VM.
Fix: Put the session host in drain mode, sign out all users from the session host, then delete the host.
Next steps
For an overview on troubleshooting Azure Virtual Desktop and the escalation tracks, see Troubleshooting
overview, feedback, and support.
To troubleshoot issues while configuring a virtual machine (VM) in Azure Virtual Desktop, see Session host
virtual machine configuration.
To troubleshoot issues related to the Azure Virtual Desktop agent or session connectivity, see Troubleshoot
common Azure Virtual Desktop Agent issues.
To troubleshoot issues with Azure Virtual Desktop client connections, see Azure Virtual Desktop service
connections.
To troubleshoot issues with Remote Desktop clients, see Troubleshoot the Remote Desktop client
To troubleshoot issues when using PowerShell with Azure Virtual Desktop, see Azure Virtual Desktop
PowerShell.
To learn more about the service, see Azure Virtual Desktop environment.
To go through a troubleshoot tutorial, see Tutorial: Troubleshoot Resource Manager template deployments.
To learn about auditing actions, see Audit operations with Resource Manager.
To learn about actions to determine the errors during deployment, see View deployment operations.
Session host virtual machine configuration
3/7/2022 • 13 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Use this article to troubleshoot issues you're having when configuring the Azure Virtual Desktop session host
virtual machines (VMs).
Provide feedback
Visit the Azure Virtual Desktop Tech Community to discuss the Azure Virtual Desktop service with the product
team and active community members.
Azure Virtual Desktop Agent and Azure Virtual Desktop Boot Loader
aren't installed
The recommended way to provision VMs is using the Azure portal creation template. The template
automatically installs the Azure Virtual Desktop Agent and Azure Virtual Desktop Agent Boot Loader.
Follow these instructions to confirm the components are installed and to check for error messages.
1. Confirm that the two components are installed by checking in Control Panel > Programs > Programs
and Features . If Azure Vir tual Desktop Agent and Azure Vir tual Desktop Agent Boot Loader aren't
visible, they aren't installed on the VM.
2. Open File Explorer and navigate to C:\Windows\Temp\ScriptLog.log . If the file is missing, it indicates
that the PowerShell DSC that installed the two components wasn't able to run in the security context
provided.
3. If the file C:\Windows\Temp\ScriptLog.log is present, open it and check for error messages.
Error: Azure Virtual Desktop Agent and Azure Virtual Desktop Agent Boot Loader are missing.
C:\Windows\Temp\ScriptLog.log is also missing
Cause 1: Credentials provided during input for the Azure Resource Manager template were incorrect or
permissions were insufficient.
Fix 1: Manually add the missing components to the VMs using Create a host pool with PowerShell.
Cause 2: PowerShell DSC was able to start and execute but failed to complete as it can't sign in to Azure Virtual
Desktop and obtain needed information.
Fix 2: Confirm the items in the following list.
Make sure the account doesn't have MFA.
Confirm the host pool's name is accurate and the host pool exists in Azure Virtual Desktop.
Confirm the account has at least Contributor permissions on the Azure subscription or resource group.
Error: Authentication failed, error in C:\Windows\Temp\ScriptLog.log
Cause: PowerShell DSC was able to execute but couldn't connect to Azure Virtual Desktop.
Fix: Confirm the items in the following list.
Manually register the VMs with the Azure Virtual Desktop service.
Confirm account used for connecting to Azure Virtual Desktop has permissions on the Azure subscription or
resource group to create host pools.
Confirm account doesn't have MFA.
Azure Virtual Desktop Agent isn't registering with the Azure Virtual
Desktop service
When the Azure Virtual Desktop Agent is first installed on session host VMs (either manually or through the
Azure Resource Manager template and PowerShell DSC), it provides a registration token. The following section
covers troubleshooting issues that apply to the Azure Virtual Desktop Agent and the token.
Error: The status filed in Get-AzWvdSessionHost cmdlet shows status as Unavailable
psping rdbroker.wvdselfhost.microsoft.com:443
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\WinStations\rds-sxs\"fEnableWinstation":DWORD=1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\ClusterSettings\"SessionDirectoryListener":rdp-sxs
Error: O_REVERSE_CONNECT_STACK_FAILURE
Cause: The side-by-side stack isn't installed on the session host VM.
Fix: Follow these instructions to install the side-by-side stack on the session host VM.
1. Use Remote Desktop Protocol (RDP) to get directly into the session host VM as local administrator.
2. Install the side-by-side stack using Create a host pool with PowerShell.
NOTE
VMname is the machine name of the VM with the malfunctioning side-by-side stack.
NOTE
This dialog will show up only the first time PsExec is run.
8. After the command prompt session opens on the VM with the malfunctioning side-by-side stack, run
qwinsta and confirm that an entry named rdp-sxs is available. If not, a side-by-side stack isn't present on
the VM so the issue isn't tied to the side-by-side stack.
9. Run the following command, which will list Microsoft components installed on the VM with the
malfunctioning side-by-side stack.
10. Run the command below with product names from step above.
wmic product where name="<Remote Desktop Services Infrastructure Agent>" call uninstall
\\<VMname>\c$\
NOTE
VMname is the machine name of the VM with the malfunctioning side-by-side stack.
15. The recommended process: from the PsExec tool, start PowerShell and navigate to the folder from the
previous step and run disablesxsstackrc.ps1. Alternatively, you can run the following cmdlets:
16. When the cmdlets are done running, restart the VM with the malfunctioning side-by-side stack.
NOTE
Azure Virtual Desktop only requires an RDS client access license (CAL) when your host pool contains Windows Server
session hosts. To learn how to configure an RDS CAL, see License your RDS deployment with client access licenses.
NOTE
If you set group policy through your domain, disable this setting on policies that target these Windows 10 Enterprise
multi-session VMs.
Now that you know your version number, skip ahead to the relevant section.
Version 1809
If your version number says "1809," install the KB4516077 update.
Version 1903
Redeploy the host operating system with the latest version of the Windows 10, version 1903 image from the
Azure Gallery.
We couldn't connect to the remote PC because of a security error
If your users see an error that says, "We couldn't connect to the remote PC because of a security error. If this
keeps happening, ask your admin or tech support for help," validate any existing policies that change default
RDP permissions. One policy that might cause this error to appear is "Allow log on through Remote Desktop
Services security policy."
To learn more about this policy, see Allow log on through Remote Desktop Services.
Next steps
For an overview on troubleshooting Azure Virtual Desktop and the escalation tracks, see Troubleshooting
overview, feedback, and support.
To troubleshoot issues while creating a host pool in an Azure Virtual Desktop environment, see Environment
and host pool creation.
To troubleshoot issues while configuring a virtual machine (VM) in Azure Virtual Desktop, see Session host
virtual machine configuration.
To troubleshoot issues related to the Azure Virtual Desktop agent or session connectivity, see Troubleshoot
common Azure Virtual Desktop Agent issues.
To troubleshoot issues with Azure Virtual Desktop client connections, see Azure Virtual Desktop service
connections.
To troubleshoot issues with Remote Desktop clients, see Troubleshoot the Remote Desktop client
To troubleshoot issues when using PowerShell with Azure Virtual Desktop, see Azure Virtual Desktop
PowerShell.
To learn more about the service, see Azure Virtual Desktop environment.
To go through a troubleshoot tutorial, see Tutorial: Troubleshoot Resource Manager template deployments.
To learn about auditing actions, see Audit operations with Resource Manager.
To learn about actions to determine the errors during deployment, see View deployment operations.
Management issues
3/7/2022 • 2 minutes to read • Edit Online
This article describes common management errors and gives suggestions for how to solve them.
Failed to create registration key Registration token couldn't be created. Try creating it again
with a shorter expiry time (between 1 hour and 1 month).
Failed to delete registration key Registration token couldn't be deleted. Try deleting it again.
If it still doesn't work, use PowerShell to check if the token is
still there. If it's there, delete it with PowerShell.
Failed to change session host drain mode Couldn't change drain mode on the VM. Check the VM
status. If the VM isn't available, you can't change drain
mode.
Failed to disconnect user sessions Couldn't disconnect the user from the VM. Check the VM
status. If the VM isn't available, you can't disconnect the user
session. If the VM is available, check the user session status
to see if it's disconnected.
Failed to log off all user(s) within the session host Could not sign users out of the VM. Check the VM status. If
unavailable, users can't be signed out. Check user session
status to see if they're already signed out. You can force sign
out with PowerShell.
Failed to unassign user from application group Could not unpublish an app group for a user. Check to see if
user is available on Azure AD. Check to see if the user is part
of a user group that the app group is published to.
There was an error retrieving the available locations Check location of VM used in the create host pool wizard. If
image is not available in that location, add image in that
location or choose a different VM location.
Next steps
To review common error scenarios that the diagnostics feature can identify for you, see Identify and diagnose
issues.
Azure Virtual Desktop PowerShell
3/7/2022 • 3 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Use this article to resolve errors and issues when using PowerShell with Azure Virtual Desktop. For more
information on Remote Desktop Services PowerShell, see Azure Virtual Desktop PowerShell.
Provide feedback
Visit the Azure Virtual Desktop Tech Community to discuss the Azure Virtual Desktop service with the product
team and active community members.
Cause: The user specified by the -SignInName parameter can't be found in the Azure Active Directory tied to
the Azure Virtual Desktop environment.
Fix: Make sure of the following things.
The user should be synced to Azure Active Directory.
The user shouldn't be tied to business-to-consumer (B2C) or business-to-business (B2B) commerce.
The Azure Virtual Desktop environment should be tied to correct Azure Active Directory.
Error: New-AzRoleAssignment: "The client with object id does not have authorization to perform action over
scope (code: AuthorizationFailed)"
Cause 1: The account being used doesn't have Owner permissions on the subscription.
Fix 1: A user with Owner permissions needs to execute the role assignment. Alternatively, the user needs to be
assigned to the User Access Administrator role to assign a user to an application group.
Cause 2: The account being used has Owner permissions but isn't part of the environment's Azure Active
Directory or doesn't have permissions to query the Azure Active Directory where the user is located.
Fix 2: A user with Active Directory permissions needs to execute the role assignment.
Error: New-AzWvdHostPool -- the location is not available for resource type
New-AzWvdHostPool_CreateExpanded: The provided location 'southeastasia' is not available for resource type
'Microsoft.DesktopVirtualization/hostpools'. List of available regions for the resource type is
'eastus,eastus2,westus,westus2,northcentralus,southcentralus,westcentralus,centralus'.
Cause: Azure Virtual Desktop supports selecting the location of host pools, application groups, and workspaces
to store service metadata in certain locations. Your options are restricted to where this feature is available. This
error means that the feature isn't available in the location you chose.
Fix: In the error message, a list of supported regions will be published. Use one of the supported regions instead.
Error: New-AzWvdApplicationGroup must be in same location as host pool
Cause: There's a location mismatch. All host pools, application groups, and workspaces have a location to store
service metadata. Any objects you create that are associated with each other must be in the same location. For
example, if a host pool is in eastus , then you also need to create the application groups in eastus . If you create
a workspace to register these application groups to, that workspace needs to be in eastus as well.
Fix: Retrieve the location the host pool was created in, then assign the application group you're creating to that
same location.
Next steps
For an overview on troubleshooting Azure Virtual Desktop and the escalation tracks, see Troubleshooting
overview, feedback, and support.
To troubleshoot issues while setting up your Azure Virtual Desktop environment and host pools, see
Environment and host pool creation.
To troubleshoot issues while configuring a virtual machine (VM) in Azure Virtual Desktop, see Session host
virtual machine configuration.
To troubleshoot issues with Azure Virtual Desktop client connections, see Azure Virtual Desktop service
connections.
To troubleshoot issues with Remote Desktop clients, see Troubleshoot the Remote Desktop client
To learn more about the service, see Azure Virtual Desktop environment.
To learn about auditing actions, see Audit operations with Resource Manager.
To learn about actions to determine the errors during deployment, see View deployment operations.
Troubleshoot common Azure Virtual Desktop Agent
issues
3/7/2022 • 16 minutes to read • Edit Online
The Azure Virtual Desktop Agent can cause connection issues because of multiple factors:
An error on the broker that makes the agent stop the service.
Problems with updates.
Issues with installing during the agent installation, which disrupts connection to the session host.
This article will guide you through solutions to these common scenarios and how to address connection issues.
NOTE
For troubleshooting issues related to session connectivity and the Azure Virtual Desktop agent, we recommend you
review the event logs in Event Viewer > Windows Logs > Application . Look for events that have one of the
following sources to identify your issue:
WVD-Agent
WVD-Agent-Updater
RDAgentBootLoader
MsiInstaller
Error: INVALID_REGISTRATION_TOKEN
Go to Event Viewer > Windows Logs > Application . If you see an event with ID 3277, that says
INVALID_REGISTRATION_TOKEN in the description, the registration token that you have isn't recognized as
valid.
To resolve this issue, create a valid registration token:
1. To create a new registration token, follow the steps in the Generate a new registration key for the VM
section.
2. Open the Registry Editor.
3. Go to HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > RDInfraAgent .
4. Select IsRegistered .
5. In the Value data: entry box, type 0 and select Ok .
6. Select RegistrationToken .
7. In the Value data: entry box, paste the registration token from step 1.
7. If the network is blocking broker connection, the pages will not load, as shown in the following
screenshot.
8. If the network is blocking these URLs, you will need to unblock the required URLs. For more information,
see Required URL List.
9. If this does not resolve your issue, make sure that you do not have any group policies with ciphers that
block the agent to broker connection. Azure Virtual Desktop uses the same TLS 1.2 ciphers as Azure Front
Door. For more information, see Connection Security.
Error: 3703
Go to Event Viewer > Windows Logs > Application . If you see an event with ID 3703 that says "RD Gateway
Url: is not accessible" in the description, the agent is unable to reach the gateway URLs. To successfully connect
to your session host and allow network traffic to these endpoints to bypass restrictions, you must unblock the
URLs from the Required URL List. Also, make sure your firewall or proxy settings don't block these URLs.
Unblocking these URLs is required to use Azure Virtual Desktop.
To resolve this issue, verify that your firewall and/or DNS settings are not blocking these URLs:
1. Use Azure Firewall to protect Azure Virtual Desktop deployments..
2. Configure your Azure Firewall DNS settings.
Error: 3019
Go to Event Viewer > Windows Logs > Application . If you see an event with ID 3019, this means the agent
can't reach the web socket transport URLs. To successfully connect to your session host and allow network traffic
to bypass these restrictions, you must unblock the URLs listed in the the Required URL list. Work with the Azure
Networking team to make sure your firewall, proxy, and DNS settings aren't blocking these URLs. You can also
check your network trace logs to identify where the Azure Virtual Desktop service is being blocked. If you open
a support request for this particular issue, make sure to attach your network trace logs to the request.
Error: InstallationHealthCheckFailedException
Go to Event Viewer > Windows Logs > Application . If you see an event with ID 3277 that says
"InstallationHealthCheckFailedException" in the description, that means the stack listener isn't working because
the terminal server has toggled the registry key for the stack listener.
To resolve this issue:
1. Check to see if the stack listener is working.
2. If the stack listener isn't working, manually uninstall and reinstall the stack component.
Error: ENDPOINT_NOT_FOUND
Go to Event Viewer > Windows Logs > Application . If you see an event with ID 3277 that says
"ENDPOINT_NOT_FOUND" in the description that means the broker couldn't find an endpoint to establish a
connection with. This connection issue can happen for one of the following reasons:
There aren't VMs in your host pool
The VMs in your host pool aren't active
All VMs in your host pool have exceeded the max session limit
None of the VMs in your host pool have the agent service running on them
To resolve this issue:
1. Make sure the VM is powered on and hasn't been removed from the host pool.
2. Make sure that the VM hasn't exceeded the max session limit.
3. Make sure the agent service is running and the stack listener is working.
4. Make sure the agent can connect to the broker.
5. Make sure your VM has a valid registration token.
6. Make sure the VM registration token hasn't expired.
Error: InstallMsiException
Go to Event Viewer > Windows Logs > Application . If you see an event with ID 3277, that says
InstallMsiException in the description, the installer is already running for another application while you're
trying to install the agent, or a policy is blocking the msiexec.exe program from running.
To resolve this issue, disable the following policy:
Turn off Windows Installer
Category Path: Computer Configuration\Administrative Templates\Windows Components\Windows
Installer
NOTE
This isn't a comprehensive list of policies, just the ones we're currently aware of.
To disable a policy:
1. Open a command prompt as an administrator.
2. Enter and run rsop.msc .
3. In the Resultant Set of Policy window that pops up, go to the category path.
4. Select the policy.
5. Select Disabled .
6. Select Apply .
Error: Win32Exception
Go to Event Viewer > Windows Logs > Application . If you see an event with ID 3277, that says
InstallMsiException in the description, a policy is blocking cmd.exe from launching. Blocking this program
prevents you from running the console window, which is what you need to use to restart the service whenever
the agent updates.
To resolve this issue, disable the following policy:
Prevent access to the command prompt
Category Path: User Configuration\Administrative Templates\System
NOTE
This isn't a comprehensive list of policies, just the ones we're currently aware of.
To disable a policy:
1. Open a command prompt as an administrator.
2. Enter and run rsop.msc .
3. In the Resultant Set of Policy window that pops up, go to the category path.
4. Select the policy.
5. Select Disabled .
6. Select Apply .
5. If fReverseConnectMode isn't set to 1 , select fReverseConnectMode and enter 1 in its value field.
6. If fEnableWinStation isn't set to 1 , select fEnableWinStation and enter 1 into its value field.
7. Restart your VM.
NOTE
To change the fReverseConnectMode or fEnableWinStation mode for multiple VMs at a time, you can do one of the
following two things:
Export the registry key from the machine that you already have working and import it into all other machines that
need this change.
Create a group policy object (GPO) that sets the registry key value for the machines that need the change.
7. Go to HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Terminal Ser ver >
ClusterSettings .
8. Under ClusterSettings , find SessionDirector yListener and make sure its data value is rdp-sxs....
9. If SessionDirector yListener isn't set to rdp-sxs..., you'll need to follow the steps in the Uninstall the agent
and boot loader section to first uninstall the agent, boot loader, and stack components, and then Reinstall the
agent and boot loader. This will reinstall the side-by-side stack.
Error: DownloadMsiException
Go to Event Viewer > Windows Logs > Application . If you see an event with ID 3277, that says
DownloadMsiException in the description, there isn't enough space on the disk for the RDAgent.
To resolve this issue, make space on your disk by:
Deleting files that are no longer in user
Increasing the storage capacity of your VM
Error: Agent fails to update with MissingMethodException
Go to Event Viewer > Windows Logs > Application . If you see an event with ID 3389 that says
"MissingMethodException: Method not found" in the description, that means the Azure Virtual Desktop agent
didn't update successfully and reverted to an earlier version. This may be because the version number of the
.NET framework currently installed on your VMs is lower than 4.7.2. To resolve this issue, you need to upgrade
the .NET to version 4.7.2 or later by following the installation instructions in the .NET Framework documentation.
If the status listed for the session host or hosts in your host pool always says "Unavailable" or "Upgrading," the
agent or stack didn't install successfully.
To resolve this issue, reinstall the side-by-side stack:
1. Open a command prompt as an administrator.
2. Enter net stop RDAgentBootLoader .
3. Go to Control Panel > Programs > Programs and Features .
4. Uninstall the latest version of the Remote Desktop Ser vices SxS Network Stack or the version listed in
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Terminal Ser ver >
WinStations under ReverseConnectListener .
5. Open a console window as an administrator and go to Program Files > Microsoft RDInfra .
6. Select the SxSStack component or run the msiexec /i SxsStack-<version>.msi command to install the MSI.
7. Restart your VM.
8. Go back to the command prompt and run the qwinsta command.
9. Verify that the stack component installed in step 6 says Listen next to it.
If so, enter net star t RDAgentBootLoader in the command prompt and restart your VM.
If not, you will need to re-register your VM and reinstall the agent component.
Error: NAME_ALREADY_REGISTERED
The name of your VM has already been registered and is probably a duplicate.
To resolve this issue:
1. Follow the steps in the Remove the session host from the host pool section.
2. Create another VM. Make sure to choose a unique name for this VM.
3. Go to the Azure portal and open the Over view page for the host pool your VM was in.
4. Open the Session Hosts tab and check to make sure all session hosts are in that host pool.
5. Wait for 5-10 minutes for the session host status to say Available .
NOTE
You may see multiple instances of these programs. Make sure to remove all of them.
3. Open the Registration key tab and select Generate new key .
4. Enter the expiration date and then select Ok .
NOTE
The expiration date can be no less than an hour and no longer than 27 days from its generation time and date. We highly
recommend you set the expiration date to the 27 day maximum.
5. Copy the newly generated key to your clipboard. You'll need this key later.
Step 4: Reinstall the agent and boot loader
By reinstalling the most updated version of the agent and boot loader, the side-by-side stack and Geneva
monitoring agent automatically get installed as well. To reinstall the agent and boot loader:
1. Sign in to your VM as an administrator and use the correct version of the agent installer for your
deployment depending on which version of Windows your VM is running. If you have a Windows 10 VM,
follow the instructions in Register virtual machines to download the Azure Vir tual Desktop Agent and
the Azure Vir tual Desktop Agent Bootloader . If you have a Windows 7 VM, follow steps 13-14 in
Register virtual machines to download the Azure Vir tual Desktop Agent and the Azure Vir tual
Desktop Agent Manager .
Next steps
If the issue continues, create a support case and include detailed information about the problem you're having
and any actions you've taken to try to resolve it. The following list includes other resources you can use to
troubleshoot issues in your Azure Virtual Desktop deployment.
For an overview on troubleshooting Azure Virtual Desktop and the escalation tracks, see Troubleshooting
overview, feedback, and support.
To troubleshoot issues while creating a host pool in a Azure Virtual Desktop environment, see Environment
and host pool creation.
To troubleshoot issues while configuring a virtual machine (VM) in Azure Virtual Desktop, see Session host
virtual machine configuration.
To troubleshoot issues with Azure Virtual Desktop client connections, see Azure Virtual Desktop service
connections.
To troubleshoot issues with Remote Desktop clients, see Troubleshoot the Remote Desktop client.
To troubleshoot issues when using PowerShell with Azure Virtual Desktop, see Azure Virtual Desktop
PowerShell.
To learn more about the service, see Azure Virtual Desktop environment.
To go through a troubleshoot tutorial, see Tutorial: Troubleshoot Resource Manager template deployments.
To learn about auditing actions, see Audit operations with Resource Manager.
To learn about actions to determine the errors during deployment, see View deployment operations.
Azure Virtual Desktop service connections
3/7/2022 • 2 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects. If you're using
Azure Virtual Desktop (classic) without Azure Resource Manager objects, see this article.
Use this article to resolve issues with Azure Virtual Desktop client connections.
Provide feedback
You can give us feedback and discuss the Azure Virtual Desktop Service with the product team and other active
community members at the Azure Virtual Desktop Tech Community.
Next steps
For an overview on troubleshooting Azure Virtual Desktop and the escalation tracks, see Troubleshooting
overview, feedback, and support.
To troubleshoot issues while creating a Azure Virtual Desktop environment and host pool in a Azure Virtual
Desktop environment, see Environment and host pool creation.
To troubleshoot issues while configuring a virtual machine (VM) in Azure Virtual Desktop, see Session host
virtual machine configuration.
To troubleshoot issues related to the Azure Virtual Desktop agent or session connectivity, see Troubleshoot
common Azure Virtual Desktop Agent issues.
To troubleshoot issues when using PowerShell with Azure Virtual Desktop, see Azure Virtual Desktop
PowerShell.
To go through a troubleshoot tutorial, see Tutorial: Troubleshoot Resource Manager template deployments.
Troubleshoot the Remote Desktop client
3/7/2022 • 3 minutes to read • Edit Online
This article describes common issues with the Remote Desktop client and how to fix them.
If you're using an earlier version of the Remote Desktop client, we recommend you uninstall and reinstall the
client.
nslookup rdweb.wvd.microsoft.com
Try connecting with another client, like Remote Desktop client for Windows 7 or Windows 10, and check to see if
you can open the web client.
Can't open other websites while connected to the web client
If you can't open other websites while you're connected to the web client, there might be network connection
problems or a network outage. We recommend you contact network support.
Nslookup can't resolve the name
If nslookup can't resolve the name, then there might be network connection problems or a network outage. We
recommend you contact network support.
Your client can't connect but other clients on your network can connect
If your browser starts acting up or stops working while you're using the web client, follow these instructions to
troubleshoot it:
1. Restart the browser.
2. Clear browser cookies. See How to delete cookie files in Internet Explorer.
3. Clear browser cache. See clear browser cache for your browser.
4. Open browser in Private mode.
Next steps
For an overview on troubleshooting Azure Virtual Desktop and the escalation tracks, see Troubleshooting
overview, feedback, and support.
To troubleshoot issues while creating a Azure Virtual Desktop environment and host pool in a Azure Virtual
Desktop environment, see Environment and host pool creation.
To troubleshoot issues while configuring a virtual machine (VM) in Azure Virtual Desktop, see Session host
virtual machine configuration.
To troubleshoot issues related to the Azure Virtual Desktop agent or session connectivity, see Troubleshoot
common Azure Virtual Desktop Agent issues.
To troubleshoot issues when using PowerShell with Azure Virtual Desktop, see Azure Virtual Desktop
PowerShell.
To go through a troubleshoot tutorial, see Tutorial: Troubleshoot Resource Manager template deployments.
Diagnose graphics performance issues in Remote
Desktop
3/7/2022 • 4 minutes to read • Edit Online
To diagnose experience quality issues with your remote sessions, counters have been provided under the
RemoteFX Graphics section of Performance Monitor. This article helps you pinpoint and fix graphics-related
performance bottlenecks during Remote Desktop Protocol (RDP) sessions using these counters.
NOTE
While counters have RemoteFX in their names, they include remote desktop graphics in vGPU scenarios as well.
NOTE
Each active session on a host has its own instance of each performance counter.
Diagnose issues
Graphics-related performance issues generally fall into four categories:
Low frame rate
Random stalls
High input latency
Poor frame quality
Addressing low frame rate, random stalls, and high input latency
First check the Output Frames/Second counter. It measures the number of frames made available to the client. If
this value is less than the Input Frames/Second counter, frames are being skipped. To identify the bottleneck, use
the Frames Skipped/Second counters.
There are three types of Frames Skipped/Second counters:
Frames Skipped/Second (Insufficient Server Resources)
Frames Skipped/Second (Insufficient Network Resources)
Frames Skipped/Second (Insufficient Client Resources)
A high value for any of the Frames Skipped/Second counters implies that the problem is related to the resource
the counter tracks. For example, if the client doesn't decode and present frames at the same rate the server
provides the frames, the Frames Skipped/Second (Insufficient Client Resources) counter will be high.
If the Output Frames/Second counter matches the Input Frames/Second counter, yet you still notice unusual lag
or stalling, Average Encoding Time may be the culprit. Encoding is a synchronous process that occurs on the
server in the single-session (vGPU) scenario and on the VM in the multi-session scenario. Average Encoding
Time should be under 33 ms. If Average Encoding Time is under 33 ms but you still have performance issues,
there may be an issue with the app or operating system you are using.
For more information about diagnosing app-related issues, see User Input Delay performance counters.
Because RDP supports an Average Encoding Time of 33 ms, it supports an input frame rate up to 30
frames/second. Note that 33 ms is the maximum supported frame rate. In many cases, the frame rate
experienced by the user will be lower, depending on how often a frame is provided to RDP by the source. For
example, tasks like watching a video require a full input frame rate of 30 frames/second, but less
computationally intensive tasks like infrequently editing a document result in a much lower value for Input
Frames/Second with no degradation in the user's experience quality.
Addressing poor frame quality
Use the Frame Quality counter to diagnose frame quality issues. This counter expresses the quality of the output
frame as a percentage of the quality of the source frame. The quality loss may be due to RemoteFX, or it may be
inherent to the graphics source. If RemoteFX caused the quality loss, the issue may be a lack of network or
server resources to send higher-fidelity content.
Mitigation
If server resources are causing the bottleneck, try one of the following approaches to improve performance:
Reduce the number of sessions per host.
Increase the memory and compute resources on the server.
Drop the resolution of the connection.
If network resources are causing the bottleneck, try one of the following approaches to improve network
availability per session:
Reduce the number of sessions per host.
Use a higher-bandwidth network.
Drop the resolution of the connection.
If client resources are causing the bottleneck, try one of the following approaches to improve performance:
Install the most recent Remote Desktop client.
Increase memory and compute resources on the client machine.
NOTE
We currently don't support the Source Frames/Second counter. For now, the Source Frames/Second counter will always
display 0.
Next steps
To create a GPU optimized Azure virtual machine, see Configure graphics processing unit (GPU) acceleration
for Azure Virtual Desktop environment.
For an overview of troubleshooting and escalation tracks, see Troubleshooting overview, feedback, and
support.
To learn more about the service, see Windows Desktop environment.
Connections to Azure AD-joined VMs
3/7/2022 • 4 minutes to read • Edit Online
IMPORTANT
This content applies to Azure Virtual Desktop with Azure Resource Manager Azure Virtual Desktop objects.
Use this article to resolve issues with connections to Azure Active Directory (Azure AD)-joined VMs in Azure
Virtual Desktop.
Provide feedback
Visit the Azure Virtual Desktop Tech Community to discuss the Azure Virtual Desktop service with the product
team and active community members.
All clients
Your account is configured to prevent you from using this device
If you come across an error saying Your account is configured to prevent you from using this device.
For more information, contact your system administrator , ensure the user account was given the Virtual
Machine User Login role on the VMs.
I can't sign in, even though I'm using the right credentials
If you can't sign in and keep receiving an error message that says your credentials are incorrect, first make sure
you're using the right credentials. If you keep seeing error messages, ask yourself the following questions:
Does your Conditional Access policy exclude multifactor authentication requirements for the Azure Windows
VM sign-in cloud application?
Have you assigned the Vir tual Machine User Login role-based access control (RBAC) permission to the
VM or resource group for each user?
If you answered "no" to either of these questions, follow the instructions in Enable multifactor authentication to
reconfigure your multifactor authentication.
WARNING
VM sign-ins don't support per-user enabled or enforced Azure AD multifactor authentication. If you try to sign in with
multifactor authentication on a VM, you won't be able to sign in and will receive an error message.
If you can access your Azure AD sign-in logs through Log Analytics, you can see if you've enabled multifactor
authentication and which Conditional Access policy is triggering the event. The events shown are non-interactive
user login events for the VM, which means the IP address will appear to come from the external IP address that
your VM accesses Azure AD from.
You can access your sign-in logs by running the following Kusto query:
let UPN = "userupn";
AADNonInteractiveUserSignInLogs
| where UserPrincipalName == UPN
| where AppId == "38aa3b87-a06d-4817-b275-7a316988d93b"
| project ['Time']=(TimeGenerated), UserPrincipalName, AuthenticationRequirement, ['MFA
Result']=ResultDescription, Status, ConditionalAccessPolicies, DeviceDetail, ['Virtual Machine
IP']=IPAddress, ['Cloud App']=ResourceDisplayName
| order by ['Time'] desc
Web client
Sign in failed. Please check your username and password and try again
If you come across an error saying Oops, we couldn't connect to NAME. Sign in failed. Please check
your username and password and tr y again. when using the web client, ensure that you enabled
connections from other clients.
We couldn't connect to the remote PC because of a security error
If you come across an error saying Oops, we couldn't connect to NAME. We couldn't connect to the
remote PC because of a security error. If this keeps happening, ask your admin or tech suppor t for
help., you have Conditional Access policies restricting access. Follow the instructions in Enable multifactor
authentication to enable multifactor authentication for your Azure AD-joined VMs.
Android client
Error code 2607 - We couldn't connect to the remote PC because your credentials did not work
If you come across an error saying We couldn't connect to the remote PC because your credentials did
not work . The remote machine is AADJ joined. with error code 2607 when using the Android client,
ensure that you enabled connections from other clients.
Next steps
For an overview on troubleshooting Azure Virtual Desktop and the escalation tracks, see Troubleshooting
overview, feedback, and support.
To troubleshoot issues while creating an Azure Virtual Desktop environment and host pool in an Azure
Virtual Desktop environment, see Environment and host pool creation.
To troubleshoot issues while configuring a virtual machine (VM) in Azure Virtual Desktop, see Session host
virtual machine configuration.
To troubleshoot issues related to the Azure Virtual Desktop agent or session connectivity, see Troubleshoot
common Azure Virtual Desktop Agent issues.
To troubleshoot issues when using PowerShell with Azure Virtual Desktop, see Azure Virtual Desktop
PowerShell.
To go through a troubleshoot tutorial, see Tutorial: Troubleshoot Resource Manager template deployments.
Troubleshoot Azure Monitor for Azure Virtual
Desktop
3/7/2022 • 3 minutes to read • Edit Online
This article presents known issues and solutions for common problems in Azure Monitor for Azure Virtual
Desktop.
Next steps
To get started, see Use Azure Monitor for Azure Virtual Desktop to monitor your deployment.
To estimate, measure, and manage your data storage costs, see Estimate Azure Monitor costs.
Check out our glossary to learn more about terms and concepts related to Azure Monitor for Azure Virtual
Desktop.
Troubleshoot Azure Files authorization
3/7/2022 • 2 minutes to read • Edit Online
This article describes common issues related to Azure Files authentication with Azure Active Directory (AD), and
suggestions for how to fix them.
DC=ouname,DC=domainprefix,DC=topleveldomain
For example:
DC=storageAccounts,DC=wvdcontoso,DC=com
If the storage account doesn't instantly appear in your Azure AD, don't worry. It usually takes 30 minutes
for a new storage account to sync with Azure AD, so be patient. If the sync doesn't happen after 30
minutes, see the next section.
Next steps
If you need to refresh your memory about the Azure Files setup process, see Authorize an account for Azure
Files.