Windows Client
Windows Client
Applies to:
Windows 10
Windows 11
In this topic
This topic provides an overview of new solutions and online content related to deploying Windows client in
your organization.
For an all-up overview of new features in Windows 10, see What's new in Windows 10.
Windows 11
Check out the following new articles about Windows 11:
Overview of Windows 11
Plan for Windows 11
Prepare for Windows 11
The Windows ADK for Windows 11 is available.
Deployment tools
SetupDiag is included with Windows 10, version 2004 and later, and Windows 11.
New capabilities are available for Delivery Optimization and Windows Update for Business.
VPN support is added to Windows Autopilot
An in-place upgrade wizard is available in Configuration Manager.
The Windows 10 deployment and update landing page has been redesigned, with additional content added and
more content coming soon.
Microsoft 365
Microsoft 365 is a new offering from Microsoft that combines
Windows 10
Office 365
Enterprise Mobility and Security (EMS).
See Deploy Windows 10 with Microsoft 365 for an overview, which now includes a link to download a nifty
M365 Enterprise poster.
Troubleshooting guidance
Resolve Windows 10 upgrade errors was published in October of 2016 and will continue to be updated with
new fixes. The topic provides a detailed explanation of the Windows 10 upgrade process and instructions on
how to locate, interpret, and resolve specific errors that can be encountered during the upgrade process.
Related topics
Overview of Windows as a service
Windows 10 deployment considerations
Windows 10 release information
Windows 10 Specifications & Systems Requirements
Windows 10 upgrade paths
Windows 10 deployment tools
Windows 10 deployment scenarios
3/26/2021 • 11 minutes to read • Edit Online
Applies to
Windows 10
To successfully deploy the Windows 10 operating system in your organization, it is important to understand the
different ways that it can be deployed, especially now that there are new scenarios to consider. Choosing among
these scenarios, and understanding the capabilities and limitations of each, is a key task.
The following table summarizes various Windows 10 deployment scenarios. The scenarios are each assigned to
one of three categories.
Modern deployment methods are recommended unless you have a specific need to use a different
procedure. These methods are supported with existing tools such as Microsoft Deployment Toolkit (MDT) and
Microsoft Endpoint Configuration Manager. These methods are discussed in detail on the Modern Desktop
Deployment Center.
Note: Once you have deployed Windows 10 in your organization, it is important to stay up to date by
creating a deployment plan for Windows 10 feature updates.
Dynamic deployment methods enable you to configure applications and settings for specific use cases.
Traditional deployment methods use existing tools to deploy operating system images.
IMPORTANT
The Windows Autopilot and Subscription Activation scenarios require that the beginning OS be Windows 10 version
1703, or later.
Except for clean install scenarios such as traditional bare metal and Windows Autopilot, all the methods described can
optionally migrate apps and settings to the new OS.
Dynamic provisioning
For new PCs, organizations have historically replaced the version of Windows included on the device with their
own custom Windows image, because this was often faster and easier than leveraging the preinstalled version.
But this is an added expense due to the time and effort required. With the new dynamic provisioning capabilities
and tools provided with Windows 10, it is now possible to avoid this.
The goal of dynamic provisioning is to take a new PC out of the box, turn it on, and transform it into a
productive organization device, with minimal time and effort. The types of transformations that are available
include:
Windows 10 Subscription Activation
Windows 10 Subscription Activation is a modern deployment method that enables you to change the SKU from
Pro to Enterprise with no keys and no reboots. For more information about Subscription Activation, see
Windows 10 Subscription Activation.
Azure Active Directory (AAD) join with automatic mobile device management (MDM ) enrollment
In this scenario, the organization member just needs to provide their work or school user ID and password; the
device can then be automatically joined to Azure Active Directory and enrolled in a mobile device management
(MDM) solution with no additional user interaction. Once done, the MDM solution can finish configuring the
device as needed. For more information, see Azure Active Directory integration with MDM.
Provisioning package configuration
Using the Windows Imaging and Configuration Designer (ICD), IT administrators can create a self-contained
package that contains all of the configuration, settings, and apps that need to be applied to a machine. These
packages can then be deployed to new PCs through a variety of means, typically by IT professionals. For more
information, see Configure devices without MDM.
These scenarios can be used to enable “choose your own device” (CYOD) programs where the organization’s
users can pick their own PC and not be restricted to a small list of approved or certified models (programs that
are difficult to implement using traditional deployment scenarios).
While the initial Windows 10 release includes a variety of provisioning settings and deployment mechanisms,
these will continue to be enhanced and extended based on feedback from organizations. As with all Windows
features, organizations can submit suggestions for additional features through the Windows Feedback app or
through their Microsoft Support contacts.
Traditional deployment:
New versions of Windows have typically been deployed by organizations using an image-based process built on
top of tools provided in the Windows Assessment and Deployment Kit, Windows Deployment Services, the
Deploy Windows 10 with the Microsoft Deployment Toolkit, and Microsoft Endpoint Configuration Manager.
With the release of Windows 10, all of these tools are being updated to fully support Windows 10. Although
newer scenarios such as in-place upgrade and dynamic provisioning may reduce the need for traditional
deployment capabilities in some organizations, these traditional methods remain important and will continue to
be available to organizations that need them.
The traditional deployment scenario can be divided into different sub-scenarios. These are explained in detail in
the following sections, but the following provides a brief summary:
New computer. A bare-metal deployment of a new machine.
Computer refresh. A reinstall of the same machine (with user-state migration and an optional full
Windows Imaging (WIM) image backup).
Computer replace. A replacement of the old machine with a new machine (with user-state migration and
an optional full WIM image backup).
New computer
Also called a "bare metal" deployment. This scenario occurs when you have a blank machine you need to deploy,
or an existing machine you want to wipe and redeploy without needing to preserve any existing data. The setup
starts from a boot media, using CD, USB, ISO, or Pre-Boot Execution Environment (PXE). You can also generate a
full offline media that includes all the files needed for a client deployment, allowing you to deploy without
having to connect to a central deployment share. The target can be a physical computer, a virtual machine, or a
Virtual Hard Disk (VHD) running on a physical computer (boot from VHD).
The deployment process for the new machine scenario is as follows:
1. Start the setup from boot media (CD, USB, ISO, or PXE).
2. Wipe the hard disk clean and create new volume(s).
3. Install the operating system image.
4. Install other applications (as part of the task sequence).
After taking these steps, the computer is ready for use.
Computer refresh
A refresh is sometimes called wipe-and-load. The process is normally initiated in the running operating system.
User data and settings are backed up and restored later as part of the deployment process. The target can be the
same as for the new computer scenario.
The deployment process for the wipe-and-load scenario is as follows:
1. Start the setup on a running operating system.
2. Save the user state locally.
3. Wipe the hard disk clean (except for the folder containing the backup).
4. Install the operating system image.
5. Install other applications.
6. Restore the user state.
After taking these steps, the machine is ready for use.
Computer replace
A computer replace is similar to the refresh scenario. However, since we are replacing the machine, we divide
this scenario into two main tasks: backup of the old client and bare-metal deployment of the new client. As with
the refresh scenario, user data and settings are backed up and restored.
The deployment process for the replace scenario is as follows:
1. Save the user state (data and settings) on the server through a backup job on the running operating
system.
2. Deploy the new computer as a bare-metal deployment.
Note
In some situations, you can use the replace scenario even if the target is the same machine. For example,
you can use replace if you want to modify the disk layout from the master boot record (MBR) to the GUID
partition table (GPT), which will allow you to take advantage of the Unified Extensible Firmware Interface
(UEFI) functionality. You can also use replace if the disk needs to be repartitioned since user data needs to
be transferred off the disk.
Related topics
Upgrade to Windows 10 with the Microsoft Deployment Toolkit
Upgrade to Windows 10 with Microsoft Endpoint Configuration Manager
Deploy Windows 10 with System Center 2012 R2 Configuration Manager
Deploy Windows 10 with the Microsoft Deployment Toolkit
Windows setup technical reference
Windows Imaging and Configuration Designer
UEFI firmware
Quick guide to Windows as a service
7/23/2021 • 4 minutes to read • Edit Online
Applies to
Windows 10
Windows as a service is a new concept, introduced with the release of Windows 10. While an extensive set of
documentation is available explaining all the specifics and nuances, here is a quick guide to the most important
concepts.
Definitions
Some new terms have been introduced as part of Windows as a service, so you should know what these terms
mean.
Feature updates are released twice per year, around March and September. As the name suggests, these
updates add new features to Windows 10, delivered in bite-sized chunks compared to the previous practice
of Windows releases every 3-5 years.
Quality updates deliver both security and non-security fixes. They are typically released on the second
Tuesday of each month, though they can be released at any time. Quality updates include security updates,
critical updates, servicing stack updates, and driver updates. Quality updates are cumulative, so installing the
latest quality update is sufficient to get all the available fixes for a specific Windows 10 feature update. The
"servicing stack" is the code that installs other updates, so they are important to keep current. For more
information, see Servicing stack updates.
Insider Preview builds are made available during the development of the features that will be shipped in
the next feature update, enabling organizations to validate new features and confirm compatibility with
existing apps and infrastructure, providing feedback to Microsoft on any issues encountered.
Ser vicing channels allow organizations to choose when to deploy new features.
The Semi-Annual Channel receives feature updates twice per year.
The Long-Term Ser vicing Channel , which meant only for specialized devices (which typically don't
run Office) such as those that control medical equipment or ATM machines, receives new feature
releases every two to three years.
Deployment rings are groups of devices used to initially pilot, and then to broadly deploy, each feature
update in an organization.
See Overview of Windows as a service for more information.
For some interesting in-depth information about how cumulative updates work, see Windows Updates using
forward and reverse differentials.
Key Concepts
Windows 10 gains new functionality with twice-per-year feature update releases. Initially, organizations will use
these feature update releases for pilot deployments to ensure compatibility with existing apps and
infrastructure. With each Semi-Annual Channel release, we recommend beginning deployment right away to
devices selected for early adoption (targeted validation) and ramp up to full deployment at your discretion.
All releases of Windows 10 have 18 months of servicing for all editions--these updates provide security and
feature updates for the release. Customers running Enterprise and Education editions have an additional 12
months of servicing for specific Windows 10 releases, for a total of 30 months from initial release. These
versions include Enterprise and Education editions for Windows 10, versions 1607 and later. Starting in October
2018, all Semi-Annual Channel releases in the September/October timeframe will also have the additional 12
months of servicing for a total of 30 months from the initial release. The Semi-Annual Channel versions
released in March/April timeframe will continue to have an 18-month lifecycle.
Windows 10 Enterprise LTSB is a separate Long-Term Ser vicing Channel version. Each release is supported
for a total of 10 years (five years standard support, five years extended support). New releases are expected
about every three years.
For more information, see Assign devices to servicing channels for Windows 10 updates.
Staying up to date
The process for keeping Windows 10 up to date involves deploying a feature update, at an appropriate time
after its release. You can use various management and update tools such as Windows Update, Windows Update
for Business, Windows Server Update Services, Microsoft Endpoint Configuration Manager, and non-Microsoft
products) to help with this process. Upgrade Readiness, a free tool to streamline Windows upgrade projects, is
another important tool to help.
Because app compatibility, both for desktop apps and web apps, is outstanding with Windows 10, extensive
advanced testing isn’t required. Instead, only business-critical apps need to be tested, with the remaining apps
validated through a series of pilot deployment rings. Once these pilot deployments have validated most apps,
broad deployment can begin.
This process repeats with each new feature update, twice per year. These are small deployment projects,
compared to the large projects that were necessary with the old three-to-five-year Windows release cycles.
Other technologies such as BranchCache and Delivery Optimization, both peer-to-peer distribution tools, can
help with the distribution of the feature update installation files.
See Build deployment rings for Windows 10 updates and Optimize update delivery for Windows 10 updates for
more information.
Learn more
Adopting Windows as a service at Microsoft
Windows lifecycle fact sheet
Related topics
Update Windows 10 in the enterprise
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Manage device restarts after updates
Overview of Windows as a service
8/19/2021 • 16 minutes to read • Edit Online
Applies to
Windows 10
The Windows 10 operating system introduces a new way to build, deploy, and service Windows: Windows as a
service. Microsoft has reimagined each part of the process, to simplify the lives of IT pros and maintain a
consistent Windows 10 experience for its customers. These improvements focus on maximizing customer
involvement in Windows development, simplifying the deployment and servicing of Windows client computers,
and leveling out the resources needed to deploy and maintain Windows over time.
Building
Prior to Windows 10, Microsoft released new versions of Windows every few years. This traditional deployment
schedule imposed a training burden on users because the feature revisions were often significant. That schedule
also meant waiting long periods without new features — a scenario that doesn’t work in today’s rapidly
changing world, a world in which new security, management, and deployment capabilities are necessary to
address challenges. Windows as a service will deliver smaller feature updates two times per year, around March
and September, to help address these issues.
In the past, when Microsoft developed new versions of Windows, it typically released technical previews near
the end of the process, when Windows was nearly ready to ship. With Windows 10, new features will be
delivered to the Windows Insider community as soon as possible — during the development cycle, through a
process called flighting — so that organizations can see exactly what Microsoft is developing and start their
testing as soon as possible.
Microsoft also depends on receiving feedback from organizations throughout the development process so that
it can make adjustments as quickly as possible rather than waiting until after release. For more information
about the Windows Insider Program and how to sign up, see the section Windows Insider.
Of course Microsoft also performs extensive internal testing, with engineering teams installing new builds daily,
and larger groups of employees installing builds frequently, all before those builds are ever released to the
Windows Insider Program.
Deploying
Deploying Windows 10 is simpler than with previous versions of Windows. When migrating from earlier
versions of Windows, an easy in-place upgrade process can be used to automatically preserve all apps, settings,
and data. And once running Windows 10, deployment of Windows 10 feature updates will be equally simple.
One of the biggest challenges for organizations when it comes to deploying a new version of Windows is
compatibility testing. Whereas compatibility was previously a concern for organizations upgrading to a new
version of Windows, Windows 10 is compatible with most hardware and software capable of running on
Windows 7 or later. Because of this high level of compatibility, the app compatibility testing process can be
greatly simplified.
Application compatibility
Application compatibility testing has historically been a burden when approaching a Windows deployment or
upgrade. With Windows 10, application compatibility from the perspective of desktop applications, websites,
and apps built on the Universal Windows Platform (UWP) has improved tremendously. Microsoft understands
the challenges organizations experienced when they migrated from the Windows XP operating system to
Windows 7 and has been working to make Windows 10 upgrades a much better experience.
Most Windows 7–compatible desktop applications will be compatible with Windows 10 straight out of the box.
Windows 10 achieved such high compatibility because the changes in the existing Win32 application
programming interfaces were minimal. Combined with valuable feedback via the Windows Insider Program and
diagnostic data, this level of compatibility can be maintained through each feature update. As for websites,
Windows 10 includes Internet Explorer 11 and its backward-compatibility modes for legacy websites. Finally,
UWP apps follow a compatibility story similar to desktop applications, so most of them will be compatible with
Windows 10.
For the most important business-critical applications, organizations should still perform testing on a regular
basis to validate compatibility with new builds. For remaining applications, consider validating them as part of a
pilot deployment process to reduce the time spent on compatibility testing. Desktop Analytics is a cloud-based
service that integrates with Configuration Manager. The service provides insight and intelligence for you to
make more informed decisions about the update readiness of your Windows endpoints, including assessment
of your existing applications. For more, see Ready for modern desktop retirement FAQ.
Device compatibility
Device compatibility in Windows 10 is also very strong; new hardware is not needed for Windows 10 as any
device capable of running Windows 7 or later can run Windows 10. In fact, the minimum hardware
requirements to run Windows 10 are the same as those required for Windows 7. Most hardware drivers that
functioned in Windows 8.1, Windows 8, or Windows 7 will continue to function in Windows 10.
Servicing
Traditional Windows servicing has included several release types: major revisions (e.g., the Windows 8.1,
Windows 8, and Windows 7 operating systems), service packs, and monthly updates. With Windows 10, there
are two release types: feature updates that add new functionality twice per year, and quality updates that provide
security and reliability fixes at least once a month.
With Windows 10, organizations will need to change the way they approach deploying updates. Servicing
channels are the first way to separate users into deployment groups for feature and quality updates. With the
introduction of servicing channels comes the concept of a deployment ring, which is simply a way to categorize
the combination of a deployment group and a servicing channel to group devices for successive waves of
deployment. For more information about developing a deployment strategy that leverages servicing channels
and deployment rings, see Plan servicing strategy for Windows 10 updates.
For information about each servicing tool available for Windows 10, see Servicing tools.
To align with this new update delivery model, Windows 10 has three servicing channels, each of which provides
different levels of flexibility over when these updates are delivered to client computers. For information about
the servicing channels available in Windows 10, see Servicing channels.
Naming changes
There are currently two release channels for Windows 10:
The Semi-Annual Channel receives feature updates twice per year.
The Long-Term Ser vicing Channel , which is designed to be used only for specialized devices (which
typically don't run Office) such as those that control medical equipment or ATM machines, receives new
feature releases every two to three years.
IMPORTANT
With each Semi-Annual Channel release, we recommend beginning deployment right away to devices selected for early
adoption (targeted validation) and ramp up to full deployment at your discretion. This will enable you to gain access to
new features, experiences, and integrated security as soon as possible. The "Semi-Annual Channel (Targeted)" designation
is no longer used. For more information, see the blog post Windows 10 and the "disappearing" SAC-T.
NOTE
For additional information, see the section about Servicing Channels.
You can also read the blog post Waas simplified and aligned, with details on this change.
IMPORTANT
Devices on the Semi-Annual Channel must have their diagnostic data set to 1 (Basic) or higher, in order to ensure that
the service is performing at the expected quality. For instructions to set the diagnostic data level, see Configure the
operating system diagnostic data level.
Feature updates
With Windows 10, Microsoft will package new features into feature updates that can be deployed using existing
management tools. Because feature updates are delivered more frequently than with previous Windows
releases — twice per year, around March and September, rather than every 3–5 years — changes will be in bite-
sized chunks rather than all at once and end user readiness time much shorter.
Quality updates
Monthly updates in previous Windows versions were often overwhelming because of the sheer number of
updates available each month. Many organizations selectively chose which updates they wanted to install and
which they didn’t, and this created countless scenarios in which organizations deployed essential security
updates but picked only a subset of non-security fixes.
In Windows 10, rather than receiving several updates each month and trying to figure out which the
organization needs, which ultimately causes platform fragmentation, administrators will see one cumulative
monthly update that supersedes the previous month’s update, containing both security and non-security fixes.
This approach makes patching simpler and ensures that customers’ devices are more closely aligned with the
testing done at Microsoft, reducing unexpected issues resulting from patching. The left side of Figure 1 provides
an example of Windows 7 devices in an enterprise and what their current patch level might look like. On the
right is what Microsoft’s test environment devices contain. This drastic difference is the basis for many
compatibility issues and system anomalies related to Windows updates.
Figure 1
Servicing channels
To align with the new method of delivering feature updates and quality updates in Windows 10, Microsoft
introduced the concept of servicing channels to allow customers to designate how frequently their individual
devices are updated. For example, an organization may have test devices that the IT department can update with
new features as soon as possible, and then specialized devices that require a longer feature update cycle to
ensure continuity.
With that in mind, Windows 10 offers three servicing channels. The Windows Insider Program provides
organizations with the opportunity to test and provide feedback on features that will be shipped in the next
feature update. The Semi-Annual Channel provides new functionality with twice-per-year feature update
releases. Organizations can choose when to deploy updates from the Semi-Annual Channel. The Long-Term
Servicing Channel, which is designed to be used only for specialized devices (which typically don't run Office)
such as those that control medical equipment or ATM machines, receives new feature releases every two to
three years. For details about the versions in each servicing channel, see Windows 10 release information.
The concept of servicing channels is new, but organizations can use the same management tools they used to
manage updates and upgrades in previous versions of Windows. For more information about the servicing tool
options for Windows 10 and their capabilities, see Servicing tools.
NOTE
Servicing channels are not the only way to separate groups of devices when consuming updates. Each channel can
contain subsets of devices, which staggers servicing even further. For information about the servicing strategy and
ongoing deployment process for Windows 10, including the role of servicing channels, see Plan servicing strategy for
Windows 10 updates.
Semi-Annual Channel
In the Semi-Annual servicing channel, feature updates are available as soon as Microsoft releases them.
Windows 10, version 1511, had few servicing tool options to delay feature updates, limiting the use of the Semi-
Annual servicing channel. Starting with Windows 10, version 1607, more servicing tools that can delay feature
updates for up to 365 days are available. This servicing model is ideal for pilot deployments and testing of
Windows 10 feature updates and for users such as developers who need to work with the latest features
immediately. Once the latest release has gone through pilot deployment and testing, you will be able to choose
the timing at which it goes into broad deployment.
When Microsoft officially releases a feature update for Windows 10, it is made available to any device not
configured to defer feature updates so that those devices can immediately install it. Organizations that use
Windows Server Update Services (WSUS), Microsoft Endpoint Configuration Manager, or Windows Update for
Business, however, can defer feature updates to selective devices by withholding their approval and deployment.
In this scenario, the content available for the Semi-Annual Channel will be available but not necessarily
immediately mandatory, depending on the policy of the management system. For more details about Windows
10 servicing tools, see Servicing tools.
Organizations are expected to initiate targeted deployment on Semi-Annual Channel releases. All customers,
independent software vendors (ISVs), and partners should use this time for testing and piloting within their
environments. After 2-4 months, we will transition to broad deployment and encourage customers and partners
to expand and accelerate the deployment of the release. For customers using Windows Update for Business, the
Semi-Annual Channel provides three months of additional total deployment time before being required to
update to the next release.
NOTE
All releases of Windows 10 have 18 months of ser vicing for all editions --these updates provide security and feature
updates for the release. However, fall releases of the Enterprise and Education editions will have an additional 12
months of ser vicing for specific Windows 10 releases, for a total of 30 months from initial release . This
extended servicing window applies to Enterprise and Education editions starting with Windows 10, version 1607.
NOTE
Organizations can electively delay feature updates into as many phases as they wish by using one of the servicing tools
mentioned in the section Servicing tools.
NOTE
Windows 10 Enterprise LTSB is a separate Long-Term Servicing Channel version.
Long-term Servicing channel is not intended for deployment on most or all the devices in an organization; it should be
used only for special-purpose devices. As a general guideline, a device with Microsoft Office installed is a general-purpose
device, typically used by an information worker, and therefore it is better suited for the Semi-Annual servicing channel.
Microsoft never publishes feature updates through Windows Update on devices that run Windows 10 Enterprise
LTSB. Instead, it typically offers new LTSC releases every 2–3 years, and organizations can choose to install them
as in-place upgrades or even skip releases over a 10-year life cycle.
NOTE
Windows 10 LTSB will support the currently released processors and chipsets at the time of release of the LTSB. As future
CPU generations are released, support will be created through future Windows 10 LTSB releases that customers can
deploy for those systems. For more information, see Suppor ting the latest processor and chipsets on Windows in
Lifecycle support policy FAQ - Windows Products.
The Long-term Servicing Channel is available only in the Windows 10 Enterprise LTSB edition. This edition of
Windows doesn’t include a number of applications, such as Microsoft Edge, Microsoft Store, Cortana (though
limited search capabilities remain available), Microsoft Mail, Calendar, OneNote, Weather, News, Sports, Money,
Photos, Camera, Music, and Clock. These apps are not supported in Windows 10 Enterprise LTSB edition, even if
you install by using sideloading.
NOTE
If an organization has devices currently running Windows 10 Enterprise LTSB that it would like to change to the Semi-
Annual Channel, it can make the change without losing user data. Because LTSB is its own SKU, however, an upgrade is
required from Windows 10 Enterprise LTSB to Windows 10 Enterprise, which supports the Semi-Annual Channel.
Windows Insider
For many IT pros, gaining visibility into feature updates early—before they’re available to the Semi-Annual
Channel — can be both intriguing and valuable for future end user communications as well as provide the
means to test for any issues on the next Semi-Annual Channel release. With Windows 10, feature flighting
enables Windows Insiders to consume and deploy preproduction code to their test machines, gaining early
visibility into the next build. Testing the early builds of Windows 10 helps both Microsoft and its customers
because they have the opportunity to discover possible issues before the update is ever publicly available and
can report it to Microsoft.
Microsoft recommends that all organizations have at least a few devices enrolled in the Windows Insider
Program and provide feedback on any issues they encounter. For information about the Windows Insider
Program for Business, go to Windows Insider Program for Business.
NOTE
Microsoft recommends that all organizations have at least a few devices enrolled in the Windows Insider Program, to
include the Windows Insider Program in their deployment plans and to provide feedback on any issues they encounter to
Microsoft via our Feedback Hub app.
The Windows Insider Program isn’t intended to replace Semi-Annual Channel deployments in an organization. Rather, it
provides IT pros and other interested parties with pre-release Windows builds that they can test and ultimately provide
feedback on to Microsoft.
Servicing tools
There are many tools with which IT pros can service Windows as a service. Each option has its pros and cons,
ranging from capabilities and control to simplicity and low administrative requirements. The following are
examples of the servicing tools available to manage Windows as a service updates:
Windows Update (stand-alone) provides limited control over feature updates, with IT pros manually
configuring the device to be in the Semi-Annual Channel. Organizations can target which devices defer
updates by selecting the Defer upgrades check box in Start\Settings\Update & Security\Advanced Options
on a Windows 10 device.
Windows Update for Business is the second option for servicing Windows as a service. This servicing
tool includes control over update deferment and provides centralized management using Group Policy.
Windows Update for Business can be used to defer updates by up to 365 days, depending on the version.
These deployment options are available to clients in the Semi-Annual Channel. In addition to being able to
use Group Policy to manage Windows Update for Business, either option can be configured without
requiring any on-premises infrastructure by using Intune.
Windows Ser ver Update Ser vices (WSUS) provides extensive control over Windows 10 updates and is
natively available in the Windows Server operating system. In addition to the ability to defer updates,
organizations can add an approval layer for updates and choose to deploy them to specific computers or
groups of computers whenever ready.
Microsoft Endpoint Configuration Manager provides the greatest control over servicing Windows as a
service. IT pros can defer updates, approve them, and have multiple options for targeting deployments and
managing bandwidth usage and deployment times.
With all these options, which an organization chooses depends on the resources, staff, and expertise its IT
organization already has. For example, if IT already uses Microsoft Endpoint Manager to manage Windows
updates, it can continue to use it. Similarly, if IT is using WSUS, it can continue to use that. For a consolidated
look at the benefits of each tool, see Table 1.
Table 1
NOTE
Due to naming changes, older terms like CB and CBB might still be displayed in some of our products, such as in Group
Policy. If you encounter these terms, "CB" refers to the Semi-Annual Channel (Targeted)--which is no longer used--while
"CBB" refers to the Semi-Annual Channel.
Related topics
Update Windows 10 in the enterprise
Quick guide to Windows as a service
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Manage device restarts after updates
Monthly quality updates
7/20/2021 • 3 minutes to read • Edit Online
Applies to
Windows 10
Windows 11
Windows monthlyquality updates help you to stay productive and protected. They provide your users and IT
administrators with the security fixes they need, and protect devices so that unpatched vulnerabilities can't be
exploited. Quality updates are cumulative; they include all previously released fixes to guard against
fragmentation of the operating system (OS). Reliability and vulnerability issues can occur when only a subset of
fixes is installed.
This article provides details on the types of monthly quality updates that Microsoft provides, and how they help
make the overall user experience simple and consistent.
Quality updates
Quality updates are provided on a monthly schedule, as two types of releases:
1. Non-security releases
2. Combined security + non-security releases
Non-security releases provide IT admins an opportunity for early validation of that content prior to the
combined release. Releases can also be provided outside of the monthly schedule when there is an exceptional
need.
B releases
Most people are familiar with what is commonly referred to as Patch Tuesday or Update Tuesday .These
updates are released on the second Tuesday of each month, and are known as theB release (where “B ”refers to
the second week in the month). B releases are typically published at 10:00 AM Pacific Time (PST/PDT).
Because they are cumulative, B releases include both new and previously released security fixes, along with non-
security content introduced in the prior month’s Preview C release (see the next section). These updates help
keep Windows devices secure and compliant by deploying stability fixes and addressing security vulnerabilities.
B releases are mandatory.
Channels for availability of B releases include: Windows Update, Windows Server Update Services (WSUS), and
the Microsoft Update Catalog.
C releases
IT admins have the option to test and validate production-quality releases ahead of the planned B release for the
following month. These updates are optional, cumulative, non-security preview releases known as C releases .
These releases are only offered to the most recent, supported versions of Windows. For example, new features
like News and Interests might initially be deployed in the prior month’s C preview release, then ship in the
following month’s B release.
For customers to access the C releases, they must navigate toSettings > Update & Security > Windows
Update and selectCheck for updates .
IT admins can also validate fixes and features in a preview update by leveraging the Windows Insider Program
for Business or via the Microsoft Update Catalog.
OOB releases
Out-of-band (OOB) releases might be provided to fix a recently identified issue or vulnerability. They are used in
atypical cases when an issue is detected and cannot wait for the next monthly release, because devices must be
updated immediately to address security vulnerabilities or to resolve a quality issue impacting many devices.
Some key considerations about OOB releases include:
OOB releases are always cumulative, and they supersede any prior B or C release.
The OOB releases will generally require IT admins to deploy off-cycle.
Some OOB releases are classified as critical and will automatically be pushed to Windows Server Update
Services and Windows Update for Business, just like the B releases.
Some OOB releases are non-critical and only go to the Microsoft Update Catalog for users or organizations
to voluntarily seek out the update.
More information
For additional details about the different types of Windows updates like critical, security, drivers, service packs,
and more, please see the Description of the standard terminology used to describe Microsoft software updates
and Introducing a new deployment service for driver and firmware updates.
Related topics
Overview of Windows as a service
Update Windows 10 in the enterprise
Quick guide to Windows as a service
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Manage device restarts after updates
Windows 10 updates, channels, and tools
3/26/2021 • 6 minutes to read • Edit Online
Types of updates
We include information here about many different update types you'll hear about, but the two overarching types
that you have the most direct control over are feature updates and quality updates.
Feature updates: Released twice per year, during the first half and second half of each calendar year.
Feature updates add new features and functionality to Windows 10. Because they are delivered frequently
(rather than every 3-5 years), they are easier to manage.
Quality updates: Quality updates deliver both security and non-security fixes to Windows 10. Quality
updates include security updates, critical updates, servicing stack updates, and driver updates. They are
typically released on the second Tuesday of each month, though they can be released at any time. The
second-Tuesday releases are the ones that focus on security updates. Quality updates are cumulative, so
installing the latest quality update is sufficient to get all the available fixes for a specific Windows 10 feature
update, including any out-of-band security fixes and any servicing stack updates that might have been
released previously.
Ser vicing stack updates: The "servicing stack" is the code component that actually installs Windows
updates. From time to time, the servicing stack itself needs to be updated in order to function smoothly. If
you don't install the latest servicing stack update, there's a risk that your device can't be updated with the
latest Microsoft security fixes. Servicing stack updates are not necessarily included in every monthly quality
update, and occasionally are released out of band to address a late-breaking issue. Always install the latest
available quality update to catch any servicing stack updates that might have been released. The servicing
stack also contains the "component-based servicing stack" (CBS), which is a key underlying component for
several elements of Windows deployment, such as DISM, SFC, changing Windows features or roles, and
repairing components. The CBS is a small component that typically does not have updates released every
month. You can find a list of servicing stack updates at Latest servicing stack updates. For more detail about
servicing stack updates, see Servicing stack updates.
Driver updates : These update drivers applicable to your devices. Driver updates are turned off by default in
Windows Server Update Services (WSUS), but for cloud-based update methods, you can control whether
they are installed or not.
Microsoft product updates: These update other Microsoft products, such as Office. You can enable or
disable Microsoft updates by using policies controlled by various servicing tools.
Servicing channels
Windows 10 offers three servicing channels, each of which offers you a different level of flexibility with how and
when updates are delivered to devices. Using the different servicing channels allows you to deploy Windows 10
"as a service," which conceives of deployment as a continual process of updates that roll out across the
organization in waves. In this approach, an update is plugged into this process and while it runs, you monitor for
anomalies, errors, or user impact and respond as issues arise--without interrupting the entire process.
The first step of controlling when and how devices install updates is assigning them to the appropriate servicing
channel. You can assign devices to a particular channel with any of several tools, including Microsoft Endpoint
Configuration Manager, Windows Server Update Services (WSUS), and Group Policy settings applied by any of
several means. By dividing devices into different populations ("deployment groups" or "rings") you can use
servicing channel assignment, followed by other management features such as update deferral policies, to
create a phased deployment of any update that allows you to start with a limited pilot deployment for testing
before moving to a broad deployment throughout your organization.
Semi-annual Channel
In the Semi-annual Channel, feature updates are available as soon as Microsoft releases them, twice per year. As
long as a device isn't set to defer feature updates, any device using the Semi-annual Channel will install a feature
update as soon as it's released. If you use Windows Update for Business, the Semi-annual Channel provides
three months of additional total deployment time before being required to update to the next release.
NOTE
All releases of Windows 10 have 18 months of ser vicing for all editions --these updates provide security and feature
updates for the release. However, fall releases of the Enterprise and Education editions will have an additional 12
months of ser vicing for specific Windows 10 releases, for a total of 30 months from initial release . This
extended servicing window applies to Enterprise and Education editions starting with Windows 10, version 1607.
Home
Pro
Enterprise
Enterprise LTSB
Pro Education
Education
Servicing tools
Tools for on-premises update delivery
Windows Server Update Services (WSUS): you set up a WSUS server, which downloads updates in bulk from
Microsoft. Your individual devices then connect to your server to install their updates from there.
You can set up, control, and manage the server and update process with several tools:
A standalone Windows Server Update Services server operated directly
Configuration Manager
Non-Microsoft tools
For more information, see Windows Server Update Services (WSUS).
Tools for cloud-based update delivery
Your individual devices connect to Microsoft endpoints directly to get the updates. The details of this process
(how often devices download updates of various kinds, from which channels, deferrals, and details of the users'
experience of installation) are set on devices either with Group Policy or MDM policies, which you can control
with any of several tools:
Group Policy Management Console (Gpmc.msc)
Microsoft Intune
Non-Microsoft MDM tools
Hybrid scenarios
It is also possible to combine WSUS-based on-premises update distribution with cloud-based update delivery.
Prepare servicing strategy for Windows 10 updates
8/19/2021 • 6 minutes to read • Edit Online
Applies to
Windows 10
In the past, traditional Windows deployments tended to be large, lengthy, and expensive. Windows 10 offers a
new approach to deploying both quality and feature updates, making the process much simpler and therefore
the planning much more straightforward. With Windows as a service, the methodology around updating
Windows has changed, moving away from major upgrades every few years to iterative updates twice per year.
Each iteration contains a smaller subset of changes so that they won’t seem like substantial differences, like they
do today. This image illustrates the level of effort needed for traditional Windows deployments versus servicing
Windows 10 and how it is now spread evenly over time versus spiking every few years.
Windows 10 spreads the traditional deployment effort of a Windows upgrade, which typically occurred every
few years, over smaller, continuous updates. With this change, you must approach the ongoing deployment and
servicing of Windows differently. A strong Windows 10 deployment strategy begins with establishing a simple,
repeatable process for testing and deploying each feature update. Here’s an example of what this process might
look like:
Configure test devices. Configure test devices in the Windows Insider Program so that Insiders can test
feature updates before they’re available to the Semi-Annual Channel. Typically, this population would be a
few test devices that IT staff members use to evaluate pre-release builds of Windows. Microsoft provides
current development builds to Windows Insider members approximately every week so that interested users
can see the functionality Microsoft is adding. See the section Windows Insider for details on how to enroll in
the Windows Insider Program on a Windows 10 device.
Identify excluded devices. For some organizations, special-purpose devices such as those used to control
factory or medical equipment or run ATMs require a stricter, less frequent feature update cycle than the
Semi-Annual Channel can offer. For those machines, you must install Windows 10 Enterprise LTSB to avoid
feature updates for up to 10 years. Identify these devices, and separate them from the phased deployment
and servicing cycles to help remove confusion for your administrators and ensure that devices are handled
correctly.
Recruit volunteers. The purpose of testing a deployment is to receive feedback. One effective way to
recruit pilot users is to request volunteers. When doing so, clearly state that you’re looking for feedback
rather than people to just “try it out” and that there could be occasional issues involved with accepting
feature updates right away. With Windows as a service, the expectation is that there should be few issues, but
if an issue does arise, you want testers to let you know as soon as possible. When considering whom to
recruit for pilot groups, be sure to include members who provide the broadest set of applications and devices
to validate the largest number of apps and devices possible.
Update Group Policy. Each feature update includes new group policies to manage new features. If you use
Group Policy to manage devices, the Group Policy Admin for the Active Directory domain will need to
download an .admx package and copy it to their Central Store (or to the PolicyDefinitions directory in the
SYSVOL folder of a domain controller if not using a Central Store). Always manage new group policies from
the version of Windows 10 they shipped with by using the Remote Server Administration Tools. The ADMX
download package is created at the end of each development cycle and then posted for download. To find the
ADMX download package for a given Windows build, search for “ADMX download for Windows build xxxx”.
For details about Group Policy management, see How to create and manage the Central Store for Group
Policy Administrative Templates in Windows
Choose a ser vicing tool. Decide which product you’ll use to manage the Windows updates in your
environment. If you’re currently using Windows Server Update Services (WSUS) or Microsoft Endpoint
Manager to manage your Windows updates, you can continue using those products to manage Windows 10
updates. Alternatively, you can use Windows Update for Business. In addition to which product you’ll use,
consider how you’ll deliver the updates. With Windows 10, multiple peer-to-peer options are available to
make update distribution faster. For a comparison of tools, see Servicing tools.
Prioritize applications. First, create an application portfolio. This list should include everything installed in
your organization and any webpages your organization hosts. Next, prioritize this list to identify those apps
that are the most business critical. Because the expectation is that application compatibility with Windows 10
will be high, only the most business critical applications should be tested before the pilot phase; everything
else can be tested afterwards. For more information about identifying compatibility issues withe applications,
see Manage Windows upgrades with Upgrade Analytics.
NOTE
This strategy is applicable to approaching an environment in which Windows 10 already exists. For information about how
to deploy or upgrade to Windows 10 where another version of Windows exists, see Plan for Windows 10 deployment.
Windows 10 Enterprise LTSC is a separate Long-Term Servicing Channel version.
Each time Microsoft releases a Windows 10 feature update, the IT department should use the following high-
level process to help ensure that the broad deployment is successful:
1. Validate compatibility of business critical apps. Test your most important business-critical applications
for compatibility with the new Windows 10 feature update running on your Windows Insider machines
identified in the earlier “Configure test machines” step of the Predeployment strategy section. The list of
applications involved in this validation process should be small because most applications can be tested
during the pilot phase. For more information about device and application compatibility in Windows 10, see
the section Compatibility.
2. Target and react to feedback . With Windows 10, Microsoft expects application and device compatibility to
be high, but it’s still important to have targeted groups within both the IT department and business units to
verify application compatibility for the remaining applications in your application portfolio. Because only the
most business-critical applications are tested beforehand, this activity will represent most of the application
compatibility testing in your environment. It shouldn't necessarily be a formal process but rather user
validation by using a particular application. So, the next step is to deploy the feature update to early-adopting
IT users and your targeted groups running in the Semi-Annual channel that you identified in the “Recruit
volunteers” step of the Predeployment strategy section. Be sure to communicate clearly that you’re looking
for feedback as soon as possible, and state exactly how users can submit feedback to you. Should an issue
arise, have a remediation plan in place to address it.
3. Deploy broadly. Finally, focus on the large-scale deployment using deployment rings, like the ones
discussed in Table 1. Build deployment rings that target groups of computers in your selected update-
management product. To reduce risk as much as possible, construct your deployment rings in a way that
splits individual departments into multiple rings. This way, if you were to encounter an issue, you don’t
prevent any critical business from continuing. By using this method, each deployment ring reduces risk as
more people have been updated in any particular department.
Related topics
Update Windows 10 in the enterprise
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Manage device restarts after updates
Demonstrate Autopilot deployment
3/26/2021 • 30 minutes to read • Edit Online
Applies to
Windows 10
To get started with Windows Autopilot, you should try it out with a virtual machine (VM) or you can use a
physical device that will be wiped and then have a fresh install of Windows 10.
In this topic you'll learn how to set-up a Windows Autopilot deployment for a VM using Hyper-V.
NOTE
Although there are multiple platforms available to enable Autopilot, this lab primarily uses Intune.
Hyper-V and a VM are not required for this lab. You can also use a physical device. However, the instructions assume that
you are using a VM. To use a physical device, skip the instructions to install Hyper-V and create a VM. All references to
'device' in the guide refer to the client device, either physical or virtual.
https://www.youtube-nocookie.com/embed/KYVptkpsOqs
For a list of terms used in this guide, see the Glossary section.
Prerequisites
These are the things you'll need to complete this lab:
Internet access If you are behind a firewall, see the detailed networking
requirements. Otherwise, just ensure that you have a
connection to the Internet.
Hyper-V or a physical device running Windows 10 The guide assumes that you will use a Hyper-V VM, and
provides instructions to install and configure Hyper-V if
needed. To use a physical device, skip the steps to install and
configure Hyper-V.
An account with Azure AD Premium license This guide will describe how to obtain a free 30-day trial
Azure AD Premium subscription that can be used to
complete the lab.
Procedures
A summary of the sections and procedures in the lab is provided below. Follow each section in the order it is
presented, skipping the sections that do not apply to you. Optional procedures are provided in the appendix.
If you already have Hyper-V and a Windows 10 VM, you can skip directly to the Capture the hardware ID step.
The VM must be running Windows 10, version 1903 or a later version.
Verify support for Hyper-V
Enable Hyper-V
Create a demo VM
Set ISO file location
Determine network adapter name
Use Windows PowerShell to create the demo VM
Install Windows 10
Capture the hardware ID
Reset the VM back to Out-Of-Box-Experience (OOBE)
Verify subscription level
Configure company branding
Configure Microsoft Intune auto-enrollment
Register your VM
Autopilot registration using Intune
Autopilot registration using MSfB
Create and assign a Windows Autopilot deployment profile
Create a Windows Autopilot deployment profile using Intune
Create a device group
Create the deployment profile
Create a Windows Autopilot deployment profile using MSfB
See Windows Autopilot in action
Remove devices from Autopilot
Delete (deregister) Autopilot device
Appendix A: Verify support for Hyper-V
Appendix B: Adding apps to your profile
Add a Win32 app
Prepare the app for Intune
Create app in Intune
Assign the app to your Intune profile
Add Office 365
Create app in Intune
Assign the app to your Intune profile
Glossary
If you already have Hyper-V enabled, skip to the create a demo VM step. If you are using a physical device
instead of a VM, skip to Install Windows 10.
If you are not sure that your device supports Hyper-V, or you have problems installing Hyper-V, see appendix A
below for details on verifying that Hyper-V can be successfully installed.
Enable Hyper-V
To enable Hyper-V, open an elevated Windows PowerShell prompt and run the following command:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
This command works on all operating systems that support Hyper-V, but on Windows Server operating systems
you must type an additional command (below) to add the Hyper-V Windows PowerShell module and the Hyper-
V Manager console. The following command will also install Hyper-V if it isn't already installed, so if you're using
Windows Server, you can just type the following command instead of using the Enable-
WindowsOptionalFeature command:
When you are prompted to restart the computer, choose Yes . The computer might restart more than once.
Alternatively, you can install Hyper-V using the Control Panel in Windows under Turn Windows features on
or off for a client operating system, or using Server Manager's Add Roles and Features Wizard on a server
operating system, as shown below:
If you choose to install Hyper-V using Server Manager, accept all default selections. Also be sure to install both
items under Role Administration Tools\Hyper-V Management Tools .
After installation is complete, open Hyper-V Manager by typing vir tmgmt.msc at an elevated command
prompt, or by typing Hyper-V in the Start menu search box.
To read more about Hyper-V, see Introduction to Hyper-V on Windows 10 and Hyper-V on Windows Server.
Create a demo VM
Now that Hyper-V is enabled, we need to create a VM running Windows 10. We can create a VM and virtual
network using Hyper-V Manager, but it is simpler to use Windows PowerShell.
To use Windows PowerShell, we just need to know two things:
1. The location of the Windows 10 ISO file.
In the example, we assume the location is c:\iso\win10-eval.iso .
2. The name of the network interface that connects to the Internet.
In the example, we use a Windows PowerShell command to determine this automatically.
After we have set the ISO file location and determined the name of the appropriate network interface, we can
install Windows 10.
Set ISO file location
You can download an ISO file for an evaluation version of the latest release of Windows 10 Enterprise from
Evaluation Center.
When asked to select a platform, choose 64 bit .
After you download this file, the name will be extremely long (ex: 19042.508.200927-
1902.20h2_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso).
1. So that it is easier to type and remember, rename the file to win10-eval.iso .
2. Create a directory on your computer named c:\iso and move the win10-eval.iso file there, so the path
to the file is c:\iso\win10-eval.iso .
3. If you wish to use a different name and location for the file, you must modify the Windows PowerShell
commands below to use your custom name and directory.
Determine network adapter name
The Get-NetAdaper cmdlet is used below to automatically find the network adapter that is most likely to be the
one you use to connect to the Internet. You should test this command first by running the following at an
elevated Windows PowerShell prompt:
The output of this command should be the name of the network interface you use to connect to the Internet.
Verify that this is the correct interface name. If it is not the correct interface name, you'll need to edit the first
command below to use your network interface name.
For example, if the command above displays Ethernet but you wish to use Ethernet2, then the first command
below would be New-VMSwitch -Name AutopilotExternal -AllowManagementOS $true -NetAdapterName
Ethernet2 .
Use Windows PowerShell to create the demo VM
All VM data will be created under the current path in your PowerShell prompt. Consider navigating into a new
folder before running the following commands.
IMPORTANT
VM switch : a VM switch is how Hyper-V connects VMs to a network.
If you have previously enabled Hyper-V and your Internet-connected network interface is already bound to a VM switch,
then the PowerShell commands below will fail. In this case, you can either delete the existing VM switch (so that the
commands below can create one), or you can reuse this VM switch by skipping the first command below and either
modifying the second command to replace the switch name AutopilotExternal with the name of your switch, or by
renaming your existing switch to "AutopilotExternal."
If you have never created an external VM switch before, then just run the commands below.
If you are not sure if you already have an External VM switch, enter get-vmswitch at a Windows PowerShell prompt to
display a currently list of the VM switches that are provisioned in Hyper-V. If one of them is of SwitchType External, then
you already have a VM switch configured on the server that is used to connect to the Internet. In this case, you need to
skip the first command below and modify the others to use the name of your VM switch instead of the name
"AutopilotExternal" (or change the name of your switch).
After entering these commands, connect to the VM that you just created and wait for a prompt to press a key
and boot from the DVD. You can connect to the VM by double-clicking it in Hyper-V Manager.
See the sample output below. In this sample, the VM is created under the c:\autopilot directory and the
vmconnect.exe command is used (which is only available on Windows Server). If you installed Hyper-V on
Windows 10, use Hyper-V Manager to connect to your VM.
Directory: C:\iso
Directory: C:\autopilot
PS C:\autopilot>
Install Windows 10
NOTE
The VM will be booted to gather a hardware ID, then it will be reset. The goal in the next few steps is to get to the
desktop quickly so don't worry about how it is configured at this stage. The VM only needs to be connected to the
Internet.
Ensure the VM booted from the installation ISO, click Next then click Install now and complete the Windows
installation process. See the following examples:
After the VM restarts, during OOBE, it's fine to select Set up for personal use or Domain join instead and
then choose an offline account on the Sign in screen. This will offer the fastest way to the desktop. For example:
Once the installation is complete, sign in and verify that you are at the Windows 10 desktop, then create your
first Hyper-V checkpoint. Checkpoints are used to restore the VM to a previous state.
To create a checkpoint, open an elevated Windows PowerShell prompt on the computer running Hyper-V (not
on the VM) and run the following:
Click on the WindowsAutopilot VM in Hyper-V Manager and verify that you see Finished Windows Install
listed in the Checkpoints pane.
md c:\HWID
Set-Location c:\HWID
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force
Install-Script -Name Get-WindowsAutopilotInfo -Force
$env:Path += ";C:\Program Files\WindowsPowerShell\Scripts"
Get-WindowsAutopilotInfo.ps1 -OutputFile AutopilotHWID.csv
2. When you are prompted to install the NuGet package, choose Yes .
See the sample output below. A dir command is issued at the end to show the file that was created.
PS C:\> md c:\HWID
Directory: C:\
Directory: C:\HWID
PS C:\HWID>
3. Verify that there is an AutopilotHWID.csv file in the c:\HWID directory that is about 8 KB in size. This
file contains the complete 4K HH.
NOTE
Although the .csv extension might be associated with Microsoft Excel, you cannot view the file properly by double-
clicking it. To correctly parse the comma delimiters and view the file in Excel, you must use the Data > From
Text/CSV function in Excel to import the appropriate data columns. You don't need to view the file in Excel unless
you are curious. The file format will be validated when it is imported into Autopilot. An example of the data in this
file is shown below.
You will need to upload this data into Intune to register your device for Autopilot, so the next step is to
transfer this file to the computer you will use to access the Azure portal. If you are using a physical device
instead of a VM, you can copy the file to a USB stick. If you’re using a VM, you can right-click the
AutopilotHWID.csv file and copy it, then right-click and paste the file to your desktop (outside the VM).
If you have trouble copying and pasting the file, just view the contents in Notepad on the VM and copy
the text into Notepad outside the VM. Do not use another text editor to do this.
NOTE
When copying and pasting to or from VMs, avoid clicking other things with your mouse cursor between the copy
and paste process as this can empty or overwrite the clipboard and require that you start over. Go directly from
copy to paste.
Resetting the VM or device can take a while. Proceed to the next step (verify subscription level) during the reset
process.
If the configuration blade shown above does not appear, it's likely that you don't have a Premium subscription.
Auto-enrollment is a feature only available in AAD Premium.
To convert your Intune trial account to a free Premium trial account, navigate to Azure Active Director y >
Licenses > All products > Tr y / Buy and select Free trial for Azure AD Premium, or EMS E5.
Configure company branding
If you already have company branding configured in Azure Active Directory, you can skip this step.
IMPORTANT
Make sure to sign-in with a Global Administrator account.
Navigate to Company branding in Azure Active Directory, click on Configure and configure any type of
company branding you'd like to see during the OOBE.
When you are finished, click Save .
NOTE
Changes to company branding can take up to 30 minutes to apply.
2. Under Add Windows Autopilot devices in the far right pane, browse to the AutopilotHWID.csv file
you previously copied to your local computer. The file should contain the serial number and 4K HH of
your VM (or device). It's okay if other fields (Windows Product ID) are left blank.
You should receive confirmation that the file is formatted correctly before uploading it, as shown above.
3. Click Impor t and wait until the import process completes. This can take up to 15 minutes.
4. Click Refresh to verify your VM or device has been added. See the following example.
First, you need a MSfB account. You can use the same one you created above for Intune, or follow these
instructions to create a new one.
Next, sign in to Microsoft Store for Business using your test account by clicking Sign in on the upper-right-
corner of the main page.
Select Manage from the top menu, then click the Windows Autopilot Deployment Program link under the
Devices card. See the following example:
Click the Add devices link to upload your CSV file. A message will appear indicating your request is being
processed. Wait a few moments before refreshing to see your new device has been added.
Pick one:
Create profiles using Intune
Create profiles using MSfB
Create a Windows Autopilot deployment profile using Intune
NOTE
Even if you registered your device in MSfB, it will still appear in Intune, though you might have to sync and then refresh
your device list.
Description Lab
SET T IN G VA L UE
SET T IN G VA L UE
NOTE
If you want to add an app to your profile via Intune, the OPTIONAL steps for doing so can be found in Appendix B:
Adding apps to your profile.
IMPORTANT
The new profile will only be applied if the device has not been started, and gone through OOBE. Settings from a different
profile can't be applied when another profile has been applied. Windows would need to be reinstalled on the device for
the second profile to be applied to the device.
TIP
If you reset your device previously after collecting the 4K HH info, and then let it restart back to the first OOBE screen,
then you might need to restart the device again to ensure the device is recognized as an Autopilot device and displays
the Autopilot OOBE experience you're expecting. If you do not see the Autopilot OOBE experience, then reset the device
again (Settings > Update & Security > Recovery and click on Get started. Under Reset this PC, select Remove everything
and Just remove my files. Click on Reset).
Once you select a language and a keyboard layout, your company branded sign-in screen should appear.
Provide your Azure Active Directory credentials and you're all done.
TIP
If you receive a message that "Something went wrong" and it "Looks like we can't connect to the URL for your
organization's MDM terms of use", verify that you have correctly assigned licenses to the current user.
Windows Autopilot will now take over to automatically join your device into Azure Active Directory and enroll it
to Microsoft Intune. Use the checkpoint you've created to go through this process again with different settings.
This will remove the device from Intune management, and it will disappear from Intune > Devices > All
devices . But this does not yet deregister the device from Autopilot, so the device should still appear under
Intune > Device Enrollment > Windows Enrollment > Windows Autopilot Deployment Program >
Devices .
The Intune > Devices > All Devices list and the Intune > Device Enrollment > Windows Enrollment >
Windows Autopilot Deployment Program > Devices list mean different things and are two completely
separate datastores. The former (All devices) is the list of devices currently enrolled into Intune.
NOTE
A device will only appear in the All devices list once it has booted. The latter (Windows Autopilot Deployment
Program > Devices ) is the list of devices currently registered from that Intune account into the Autopilot program -
which may or may not be enrolled to Intune.
To remove the device from the Autopilot program, select the device and click Delete . You will get a popup dialog
box to confirm deletion.
At this point, your device has been unenrolled from Intune and also deregistered from Autopilot. After several
minutes, click the Sync button, followed by the Refresh button to confirm the device is no longer listed in the
Autopilot program:
Once the device no longer appears, you are free to reuse it for other purposes.
If you also (optionally) want to remove your device from AAD, navigate to Azure Active Director y > Devices
> All Devices , select your device, and click the delete button:
C:>systeminfo
...
Hyper-V Requirements: VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes
NOTE
If one or more requirements are evaluated as No then the computer does not support installing Hyper-V. However, if only
the virtualization setting is incompatible, you might be able to enable virtualization in the BIOS and change the
Vir tualization Enabled In Firmware setting from No to Yes . The location of this setting will depend on the
manufacturer and BIOS version, but is typically found associated with the BIOS security settings.
You can also identify Hyper-V support using tools provided by the processor manufacturer, the msinfo32 tool, or
you can download the Coreinfo utility and run it, as shown in the following example:
C:>coreinfo -v
NOTE
A 64-bit operating system is required to run Hyper-V.
After the tool finishes running, you should have an .intunewin file in the Output folder, which you can now
upload into Intune using the following steps.
Create app in Intune
Log into the Azure portal and select Intune .
Navigate to Intune > Clients apps > Apps , and then click the Add button to create a new app package.
Under App Type , select Windows app (Win32) :
On the App package file blade, browse to the npp.7.6.3.installer.x64.intunewin file in your output folder,
open it, then click OK :
On the App Information Configure blade, provide a friendly name, description, and publisher, such as:
On the Program Configuration blade, supply the install and uninstall commands:
Simply using an install command like "notepad++.exe /S" will not actually install Notepad++; it will only launch
the app. To actually install the program, we need to use the .msi file instead. Notepad++ doesn't actually have an
.msi version of their program, but we got an .msi version from a third party provider.
Click OK to save your input and activate the Requirements blade.
On the Requirements Configuration blade, specify the OS architecture and the Minimum OS version :
Next, configure the Detection rules . For our purposes, we will select manual format:
Click Add to define the rule properties. For Rule type , select MSI , which will automatically import the right MSI
product code into the rule:
Click OK twice to save, as you back out to the main Add app blade again for the final configuration.
Return codes : For our purposes, leave the return codes at their default values:
Click OK to exit.
You may skip configuring the final Scope (Tags) blade.
Click the Add button to finalize and save your app package.
Once the indicator message says the addition has completed.
NOTE
The following steps only work if you previously created a GROUP in Intune and assigned a profile to it. If you have not
done that, please return to the main part of the lab and complete those steps before returning here.
In the Intune > Client Apps > Apps pane, select the app package you already created to reveal its properties
blade. Then click Assignments from the menu:
Select Add Group to open the Add group pane that is related to the app.
For our purposes, select Required from the Assignment type dropdown menu.
NOTE
Available for enrolled devices means users install the app from the Company Portal app or Company Portal website.
Select Included Groups and assign the groups you previously created that will use this app:
In the Select groups pane, click the Select button.
In the Assign group pane, select OK .
In the Add group pane, select OK .
In the app Assignments pane, select Save .
At this point, you have completed steps to add a Win32 app to Intune.
For more information on adding apps to Intune, see Intune Standalone - Win32 app management.
Add Office 365
Create app in Intune
Log into the Azure portal and select Intune .
Navigate to Intune > Clients apps > Apps , and then click the Add button to create a new app package.
NOTE
The following steps only work if you previously created a GROUP in Intune and assigned a profile to it. If you have not
done that, please return to the main part of the lab and complete those steps before returning here.
In the Intune > Client Apps > Apps pane, select the Office package you already created to reveal its
properties blade. Then click Assignments from the menu:
Select Add Group to open the Add group pane that is related to the app.
For our purposes, select Required from the Assignment type dropdown menu.
Available for enrolled devices means users install the app from the Company Portal app or Company Portal
website.
Select Included Groups and assign the groups you previously created that will use this app:
In the Select groups pane, click the Select button.
In the Assign group pane, select OK .
In the Add group pane, select OK .
In the app Assignments pane, select Save .
4K HH 4K Hardware Hash
VM Virtual Machine
Step by step guide: Configure a test lab to deploy
Windows 10
3/26/2021 • 47 minutes to read • Edit Online
Applies to
Windows 10
This guide contains instructions to configure a proof of concept (PoC) environment requiring a minimum
amount of resources.
NOTE
Microsoft also offers a pre-configured lab using an evaluation version of Configuration Manager. For more information,
see Windows and Office deployment and management lab kit.
This lab guide makes extensive use of Windows PowerShell and Hyper-V. Subsequent companion guides contain
steps to deploy Windows 10 using the PoC environment. After completing this guide, see the following
Windows 10 PoC deployment guides:
Step by step: Deploy Windows 10 in a test lab using MDT
Step by step: Deploy Windows 10 in a test lab using Microsoft Endpoint Configuration Manager
The PoC deployment guides are intended to provide a demonstration of Windows 10 deployment tools and
processes for IT professionals that are not familiar with these tools, and those that are interested in setting up a
proof of concept environment. The instructions in this guide should not be used in a production setting, and are
not meant to replace the instructions found in production deployment guidance.
Approximately 3 hours are required to configure the PoC environment. You will need a Hyper-V capable
computer running Windows 8.1 or later with at least 16GB of RAM. Detailed requirements are provided below.
You will also need to have a Microsoft account to use for downloading evaluation software.
Windows PowerShell commands are provided to set up the PoC environment quickly. You do not need to be an
expert in Windows PowerShell to complete the steps in the guide, however you are required to customize some
commands to your environment.
Instructions to "type" Windows PowerShell commands provided in this guide can be followed literally by
typing the commands, but the preferred method is to copy and paste these commands.
A Windows PowerShell window can be used to run all commands in this guide. However, when commands
are specified for a command prompt, you must either type CMD at the Windows PowerShell prompt to
enter the command prompt, or preface the command with "cmd /c", or if desired you can escape special
characters in the command using the back-tick character (`). In most cases, the simplest thing is to type cmd
and enter a command prompt, type the necessary commands, then type "exit" to return to Windows
PowerShell.
Hyper-V is installed, configured and used extensively in this guide. If you are not familiar with Hyper-V, review
the terminology used in this guide before starting.
In this guide
This guide contains instructions for three general procedures: Install Hyper-V, configure Hyper-V, and configure
VMs. If you already have a computer running Hyper-V, you can use this computer and skip the first procedure. In
this case, your virtual switch settings must be modified to match those used in this guide, or the steps in this
guide can be modified to use your existing Hyper-V settings.
After completing the instructions in this guide, you will have a PoC environment that enables you to test
Windows 10 deployment procedures by following instructions in companion guides that are written to use the
PoC environment. Links are provided to download trial versions of Windows Server 2012, Windows 10
Enterprise, and all deployment tools necessary to complete the lab.
Topics and procedures in this guide are summarized in the following table. An estimate of the time required to
complete each procedure is also provided. Time required to complete procedures will vary depending on the
resources available to the Hyper-V host and assigned to VMs, such as processor speed, memory allocation, disk
speed, and network speed.
Verify support and install Hyper-V Verify that installation of Hyper-V is 10 minutes
supported, and install the Hyper-V
server role.
Configure service and user accounts Start virtual machines and configure all 60 minutes
services and settings.
Description This computer will run Hyper-V, the This computer is a Windows 7 or
Hyper-V management tools, and the Windows 8/8.1 client on your
Hyper-V Windows PowerShell module. corporate network that will be
converted to a VM to demonstrate the
upgrade process.
Disk 200 GB available hard disk space, any Any size, MBR formatted.
format.
*
The Hyper-V server role can also be installed on a computer running Windows Server 2008 R2. However, the
Windows PowerShell module for Hyper-V is not available on Windows Server 2008 R2, therefore you cannot
use many of the steps provided in this guide to configure Hyper-V. To manage Hyper-V on Windows Server
2008 R2, you can use Hyper-V WMI, or you can use the Hyper-V Manager console. Providing all steps in this
guide as Hyper-V WMI or as 2008 R2 Hyper-V Manager procedures is beyond the scope of the guide.
The Hyper-V role cannot be installed on Windows 7 or earlier versions of Windows.
Lab setup
The lab architecture is summarized in the following diagram:
If you have an existing Hyper-V host, you can use this host and skip the Hyper-V installation section in this
guide.
The two Windows Server VMs can be combined into a single VM to conserve RAM and disk space if required.
However, instructions in this guide assume two server systems are used. Using two servers enables Active
Directory Domain Services and DHCP to be installed on a server that is not directly connected to the corporate
network. This mitigates the risk of clients on the corporate network receiving DHCP leases from the PoC
network (i.e. "rogue" DHCP), and limits NETBIOS service broadcasts.
C:\>systeminfo
...
Hyper-V Requirements: VM Monitor Mode Extensions: Yes
Virtualization Enabled In Firmware: Yes
Second Level Address Translation: Yes
Data Execution Prevention Available: Yes
C:\>coreinfo -v
When you are prompted to restart the computer, choose Yes . The computer might restart more than
once. After installation is complete, you can open Hyper-V Manager by typing vir tmgmt.msc at an
elevated command prompt.
Alternatively, you can install Hyper-V using the Control Panel in Windows under Turn Windows
features on or off for a client operating system, or using Server Manager's Add Roles and
Features Wizard on a server operating system, as shown below:
If you choose to install Hyper-V using Server Manager, accept all default selections. Also be sure to install
both items under Role Administration Tools\Hyper-V Management Tools .
Download VHD and ISO files
When you have completed installation of Hyper-V on the host computer, begin configuration of Hyper-V by
downloading VHD and ISO files to the Hyper-V host. These files will be used to create the VMs used in the lab.
Before you can download VHD and ISO files, you will need to register and sign in to the TechNet Evaluation
Center using your Microsoft account.
1. Create a directory on your Hyper-V host named C:\VHD and download a single Windows Server 2012
R2 VHD from the TechNet Evaluation Center to the C:\VHD directory.
Impor tant : This guide assumes that VHDs are stored in the C:\VHD directory on the Hyper-V host. If
you use a different directory to store VHDs, you must adjust steps in this guide appropriately.
After completing registration you will be able to download the 7.47 GB Windows Server 2012 R2
evaluation VHD. An example of the download offering is shown below.
2. Download the file to the C:\VHD directory. When the download is complete, rename the VHD file that
you downloaded to 2012R2-poc-1.vhd . This is done to make the filename simple to recognize and
type.
3. Copy the VHD to a second file also in the C:\VHD directory and name this VHD 2012R2-poc-2.vhd .
4. Download the Windows 10 Enterprise ISO from the TechNet Evaluation Center to the C:\VHD directory
on your Hyper-V host.
During registration, you must specify the type, version, and language of installation media to
download. In this example, a Windows 10 Enterprise, 64 bit, English ISO is chosen. You can choose a
different version if desired. Note: The evaluation version of Windows 10 does not suppor t
in-place upgrade .
5. Rename the ISO file that you downloaded to w10-enterprise.iso . Again, this is done so that the
filename is simple to type and recognize. After completing registration you will be able to download the
3.63 GB Windows 10 Enterprise evaluation ISO.
After completing these steps, you will have three files in the C:\VHD directory: 2012R2-poc-1.vhd , 2012R2-
poc-2.vhd , w10-enterprise.iso .
The following displays the procedures described in this section, both before and after downloading files:
C:>mkdir VHD
C:>cd VHD
C:\VHD>ren 9600*.vhd 2012R2-poc-1.vhd
C:\VHD>copy 2012R2-poc-1.vhd 2012R2-poc-2.vhd
1 file(s) copied.
C:\VHD ren *.iso w10-enterprise.iso
C:\VHD>dir /B
2012R2-poc-1.vhd
2012R2-poc-2.vhd
w10-enterprise.iso
Convert PC to VM
Important: Do not attempt to use the VM resulting from the following procedure as a reference image. Also,
to avoid conflicts with existing clients, do not start the VM outside the PoC network.
If you do not have a PC available to convert to VM, perform the following steps to download an evaluation VM:
1. Open the Download virtual machines page.
2. Under Vir tual machine , choose IE11 on Win7 .
3. Under Select platform choose HyperV (Windows) .
4. Click Download .zip . The download is 3.31 GB.
5. Extract the zip file. Three directories are created.
6. Open the Vir tual Hard Disks directory and then copy IE11 - Win7.vhd to the C:\VHD directory.
7. Rename IE11 - Win7.vhd to w7.vhd (do not rename the file to w7.vhdx).
8. In step 5 of the Configure Hyper-V section, replace the VHD file name w7.vhdx with w7.vhd .
Important: the account used in this step must have local administrator privileges. You can use a local
computer account, or a domain account with administrative rights if domain policy allows the use of cached
credentials. After converting the computer to a VM, you must be able to sign in on this VM with
administrator rights while the VM is disconnected from the corporate network.
If the PC is running a 32-bit OS or the OS is Windows 7, it must be converted to a generation 1 VM. Otherwise,
it can be converted to a generation 2 VM.
To determine the OS and architecture of a PC, type systeminfo at a command prompt and review the output
next to OS Name and System Type .
To determine the partition style, open a Windows PowerShell prompt on the PC and type the following
command:
If the Type column does not indicate GPT, then the disk partition format is MBR ("Installable File System" =
MBR). In the following example, the disk is GPT:
PS C:> Get-Disk
Choosing a VM generation
The following table displays the Hyper-V VM generation to choose based on the OS, architecture, and partition
style. Links to procedures to create the corresponding VMs are included.
64 1 Prepare a generation
1 VM
64 1 Prepare a generation
1 VM from a GPT
disk
64 1, 2 Prepare a generation
1 VM
64 2 Prepare a generation
2 VM
Notes:
If the PC is running Windows 7, it can only be converted and hosted in Hyper-V as a generation 1 VM. This
Hyper-V requirement means that if the Windows 7 PC is also using a GPT partition style, the OS disk can be
shadow copied, but a new system partition must be created. In this case, see Prepare a generation 1 VM from
a GPT disk.
If the PC is running Windows 8 or later and uses the GPT partition style, you can capture the disk image and
create a generation 2 VM. To do this, you must temporarily mount the EFI system partition which is
accomplished using the mountvol command. In this case, see Prepare a generation 2 VM.
If the PC is using an MBR partition style, you can convert the disk to VHD and use it to create a generation 1
VM. If you use the Disk2VHD tool described in this guide, it is not necessary to mount the MBR system
partition, but it is still necessary to capture it. In this case, see Prepare a generation 1 VM.
Prepare a generation 1 VM
1. Download the Disk2vhd utility, extract the .zip file and copy disk2vhd.exe to a flash drive or other
location that is accessible from the computer you wish to convert.
You might experience timeouts if you attempt to run Disk2vhd from a network share, or specify a
network share for the destination. To avoid timeouts, use local, portable media such as a USB drive.
2. On the computer you wish to convert, double-click the disk2vhd utility to start the graphical user
interface.
3. Select the checkboxes next to the C:\ and the system reser ved (BIOS/MBR) volumes. The system
volume is not assigned a drive letter, but will be displayed in the Disk2VHD tool with a volume label
similar to \?\Volume{ . See the following example. Impor tant : You must include the system volume in
order to create a bootable VHD. If this volume is not displayed in the disk2vhd tool, then the computer is
likely to be using the GPT partition style. For more information, see Determine VM generation.
4. Specify a location to save the resulting VHD or VHDX file (F:\VHD\w7.vhdx in the following example) and
click Create . See the following example:
Disk2vhd can save VHDs to local hard drives, even if they are the same as the volumes being
converted. Performance is better however when the VHD is saved on a disk different than those being
converted, such as a flash drive.
5. When the Disk2vhd utility has completed converting the source computer to a VHD, copy the VHDX file
(w7.vhdx) to your Hyper-V host in the C:\VHD directory. There should now be four files in this directory:
C:\vhd>dir /B
2012R2-poc-1.vhd
2012R2-poc-2.vhd
w10-enterprise.iso
w7.VHDX
Prepare a generation 2 VM
1. Download the Disk2vhd utility, extract the .zip file and copy disk2vhd.exe to a flash drive or other
location that is accessible from the computer you wish to convert.
You might experience timeouts if you attempt to run Disk2vhd from a network share, or specify a
network share for the destination. To avoid timeouts, use local, portable media such as a USB drive.
2. On the computer you wish to convert, open an elevated command prompt and type the following
command:
mountvol s: /s
This command temporarily assigns a drive letter of S to the system volume and mounts it. If the letter S is
already assigned to a different volume on the computer, then choose one that is available (ex: mountvol z:
/s).
3. On the computer you wish to convert, double-click the disk2vhd utility to start the graphical user
interface.
4. Select the checkboxes next to the C:\ and the S:\ volumes, and clear the Use Volume Shadow Copy
checkbox . Volume shadow copy will not work if the EFI system partition is selected.
Impor tant : You must include the EFI system partition in order to create a bootable VHD. The Windows
RE tools partition (shown below) is not required, but it can also be converted if desired.
5. Specify a location to save the resulting VHD or VHDX file (F:\VHD\PC1.vhdx in the following example) and
click Create . See the following example:
Disk2vhd can save VHDs to local hard drives, even if they are the same as the volumes being
converted. Performance is better however when the VHD is saved on a disk different than those being
converted, such as a flash drive.
6. When the Disk2vhd utility has completed converting the source computer to a VHD, copy the VHDX file
(PC1.vhdx) to your Hyper-V host in the C:\VHD directory. There should now be four files in this directory:
C:\vhd>dir /B
2012R2-poc-1.vhd
2012R2-poc-2.vhd
w10-enterprise.iso
PC1.VHDX
You might experience timeouts if you attempt to run Disk2vhd from a network share, or specify a
network share for the destination. To avoid timeouts, use local, portable media such as a USB drive.
2. On the computer you wish to convert, double-click the disk2vhd utility to start the graphical user
interface.
3. Select the checkbox next to the C:\ volume and clear the checkbox next to Use Vhdx . Note: the system
volume is not copied in this scenario, it will be added later.
4. Specify a location to save the resulting VHD file (F:\VHD\w7.vhd in the following example) and click
Create . See the following example:
Disk2vhd can save VHDs to local hard drives, even if they are the same as the volumes being
converted. Performance is better however when the VHD is saved on a disk different than those being
converted, such as a flash drive.
5. When the Disk2vhd utility has completed converting the source computer to a VHD, copy the VHD file
(w7.vhd) to your Hyper-V host in the C:\VHD directory. There should now be four files in this directory:
C:\vhd>dir /B
2012R2-poc-1.vhd
2012R2-poc-2.vhd
w10-enterprise.iso
w7.VHD
In its current state, the w7.VHD file is not bootable. The VHD will be used to create a bootable VM
later in the Configure Hyper-V section.
Resize VHD
Enhanced session mode
Impor tant : Before proceeding, verify that you can take advantage of enhanced session mode when completing
instructions in this guide. Enhanced session mode enables you to copy and paste the commands from the
Hyper-V host to VMs, between VMs, and between RDP sessions. After copying some text, you can paste into a
Windows PowerShell window by simply right-clicking. Before right-clicking, do not left click other locations as
this can empty the clipboard. You can also copy and paste files directly from one computer to another by right-
clicking and selecting copy on one computer, then right-clicking and selecting paste on another computer.
To ensure that enhanced session mode is enabled on the Hyper-V host, type the following command at an
elevated Windows PowerShell prompt on the Hyper-V host:
If enhanced session mode was not previously enabled, close any existing virtual machine connections and
re-open them to enable access to enhanced session mode. As mentioned previously: instructions to "type"
commands provided in this guide can be typed, but the preferred method is to copy and paste these
commands. Most of the commands to this point in the guide have been brief, but many commands in
sections below are longer and more complex.
The second Windows Server 2012 R2 VHD needs to be expanded in size from 40GB to 100GB to support
installing imaging tools and storing OS images.
1. To add available space for the partition, type the following commands at an elevated Windows
PowerShell prompt on the Hyper-V host:
2. Verify that the mounted VHD drive is resized to 100 GB, and then dismount the drive:
Get-Volume -DriveLetter $x
Dismount-VHD -Path c:\VHD\2012R2-poc-2.vhd
Configure Hyper-V
1. Open an elevated Windows PowerShell window and type the following command to create two virtual
switches named "poc-internal" and "poc-external":
If the Hyper-V host already has an external virtual switch bound to a physical NIC, do not attempt to
add a second external virtual switch. Attempting to add a second external switch will result in an error
indicating that the NIC is already bound to the Microsoft Vir tual Switch protocol. In this case,
choose one of the following options:
A) Remove the existing external virtual switch, then add the poc-external switch
B) Rename the existing external switch to "poc-external"
C) Replace each instance of "poc-external" used in this guide with the name of your existing external
virtual switch
If you choose B) or C), then do not run the second command below.
Note : The second command above will temporarily interrupt network connectivity on the Hyper-V host.
Since an external virtual switch is associated to a physical network adapter on the Hyper-V host, this
adapter must be specified when adding the virtual switch. The previous commands automate this by
filtering for active non-virtual ethernet adapters using the Get-NetAdapter cmdlet ($.Status -eq "Up" -
and !$.Virtual). If your Hyper-V host is dual-homed with multiple active ethernet adapters, this
automation will not work, and the second command above will fail. In this case, you must edit the
command used to add the "poc-external" virtual switch by inserting the appropriate
NetAdapterName. The NetAdapterName value corresponds to the name of the network interface you
wish to use. For example, if the network interface you use on the Hyper-V host to connect to the
Internet is named "Ethernet 2" then type the following command to create an external virtual switch:
New-VMSwitch -Name poc-external -NetAdapterName "Ethernet 2" -Notes "PoC External"
2. At the elevated Windows PowerShell prompt, type the following command to determine the megabytes
of RAM that are currently available on the Hyper-V host:
(Get-VMHostNumaNode).MemoryAvailable
This command will display the megabytes of RAM available for VMs. On a Hyper-V host computer with
16 GB of physical RAM installed, 10,000 MB of RAM or greater should be available if the computer is not
also running other applications. On a computer with 8 GB of physical RAM installed, at least 4000 MB
should be available. If the computer has less RAM available than this, try closing applications to free up
more memory.
3. Determine the available memory for VMs by dividing the available RAM by 4. For example:
(Get-VMHostNumaNode).MemoryAvailable/4
2775.5
In this example, VMs can use a maximum of 2700 MB of RAM each, to run four VMs simultaneously.
4. At the elevated Windows PowerShell prompt, type the following command to create two new VMs. Other
VMs will be added later.
Impor tant : Replace the value of 2700MB for $maxRAM in the first command below with the RAM
value that you calculated in the previous step.
$maxRAM = 2700MB
New-VM -Name "DC1" -VHDPath c:\vhd\2012R2-poc-1.vhd -SwitchName poc-internal
Set-VMMemory -VMName "DC1" -DynamicMemoryEnabled $true -MinimumBytes 512MB -MaximumBytes
$maxRAM -Buffer 20
Enable-VMIntegrationService -Name "Guest Service Interface" -VMName DC1
New-VM -Name "SRV1" -VHDPath c:\vhd\2012R2-poc-2.vhd -SwitchName poc-internal
Add-VMNetworkAdapter -VMName "SRV1" -SwitchName "poc-external"
Set-VMMemory -VMName "SRV1" -DynamicMemoryEnabled $true -MinimumBytes 512MB -MaximumBytes
$maxRAM -Buffer 80
Enable-VMIntegrationService -Name "Guest Service Interface" -VMName SRV1
Note : The RAM values assigned to VMs in this step are not permanent, and can be easily increased or
decreased later if needed to address performance issues.
5. Using the same elevated Windows PowerShell prompt that was used in the previous step, type one of the
following sets of commands, depending on the type of VM that was prepared in the Determine VM
generation section, either generation 1, generation 2, or generation 1 with GPT.
To create a generation 1 VM (using c:\vhd\w7.vhdx):
Note: The following procedure is more complex because it includes steps to convert the OS partition
from GPT to MBR format. Steps are included to create a temporary VHD and attach it to the VM, the
OS image is saved to this drive, the OS drive is then reformatted to MBR, the OS image restored, and
the temporary drive is removed.
First, type the following commands at an elevated Windows PowerShell prompt on the Hyper-V host to
create a temporary VHD that will be used to save the OS image. Do not forget to include a pipe (|) at the
end of the first five commands:
Next, create the PC1 VM with two attached VHDs, and boot to DVD ($maxram must be defined previously
using the same Windows PowerShell prompt):
The VM will automatically boot into Windows Setup. In the PC1 window:
a. Click Next .
b. Click Repair your computer .
c. Click Troubleshoot .
d. Click Command Prompt .
e. Type the following command to save an image of the OS drive:
f. Wait for the OS image to complete saving, and then type the following commands to convert the
C: drive to MBR:
diskpart
select disk 0
clean
convert MBR
create partition primary size=100
format fs=ntfs quick
active
create partition primary
format fs=ntfs quick label=OS
assign letter=c
exit
g. Type the following commands to restore the OS image and boot files:
h. Click Continue and verify the VM boots successfully (do not boot from DVD).
i. Click Ctrl+Alt+Del , and then in the bottom right corner, click Shut down .
j. Type the following commands at an elevated Windows PowerShell prompt on the Hyper-V host to
remove the temporary disks and drives from PC1:
Start-VM DC1
vmconnect localhost DC1
2. Click Next to accept the default settings, read the license terms and click I accept , provide an
administrator password of pass@word1 , and click Finish .
3. Click Ctrl+Alt+Del in the upper left corner of the virtual machine connection window, and then sign in
to DC1 using the Administrator account.
4. Right-click Star t , point to Shut down or sign out , and click Sign out . The VM connection will reset and
a new connection dialog box will appear enabling you to choose a custom display configuration. Select a
desktop size, click Connect and sign in again with the local Administrator account. Note: Signing in this
way ensures that enhanced session mode is enabled. It is only necessary to do this the first time you sign
in to a new VM.
5. If DC1 is configured as described in this guide, it will currently be assigned an APIPA address, have a
randomly generated hostname, and a single network adapter named "Ethernet." Open an elevated
Windows PowerShell prompt on DC1 and type or paste the following commands to provide a new
hostname and configure a static IP address and gateway:
Rename-Computer DC1
New-NetIPAddress -InterfaceAlias Ethernet -IPAddress 192.168.0.1 -PrefixLength 24 -
DefaultGateway 192.168.0.2
Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses
192.168.0.1,192.168.0.2
6. Install the Active Directory Domain Services role by typing the following command at an elevated
Windows PowerShell prompt:
7. Before promoting DC1 to a Domain Controller, you must reboot so that the name change in step 3 above
takes effect. To restart the computer, type the following command at an elevated Windows PowerShell
prompt:
Restart-Computer
8. When DC1 has rebooted, sign in again and open an elevated Windows PowerShell prompt. Now you can
promote the server to be a domain controller. The directory services restore mode password must be
entered as a secure string. Type the following commands at the elevated Windows PowerShell prompt:
Ignore any warnings that are displayed. The computer will automatically reboot upon completion.
9. When the reboot has completed, reconnect to DC1, sign in using the CONTOSO\Administrator account,
open an elevated Windows PowerShell prompt, and use the following commands to add a reverse lookup
zone for the PoC network, add the DHCP Server role, authorize DHCP in Active Directory, and suppress
the post-DHCP-install alert:
The -Force option is necessary when adding scope options to skip validation of 192.168.0.2 as a DNS
server because we have not configured it yet. The scope should immediately begin issuing leases on
the PoC network. The first DHCP lease that will be issued is to vEthernet interface on the Hyper-V
host, which is a member of the internal network. You can verify this by using the command: Get-
DhcpServerv4Lease -ScopeId 192.168.0.0.
11. The DNS server role will also be installed on the member server, SRV1, at 192.168.0.2 so that we can
forward DNS queries from DC1 to SRV1 to resolve Internet names without having to configure a
forwarder outside the PoC network. Since the IP address of SRV1 already exists on DC1's network
adapter, it will be automatically added during the DCPROMO process. To verify this server-level DNS
forwarder on DC1, type the following command at an elevated Windows PowerShell prompt on DC1:
Get-DnsServerForwarder
UseRootHint : True
Timeout(s) : 3
EnableReordering : True
IPAddress : 192.168.0.2
ReorderedIPAddress : 192.168.0.2
If this output is not displayed, you can use the following command to add SRV1 as a forwarder:
To keep this test lab relatively simple, we will not create a custom OU structure and set permissions.
Required permissions are enabled by adding accounts to the Domain Admins group. To configure
these settings in a production environment, see Prepare for Zero Touch Installation of Windows 10
with Configuration Manager
On DC1, open an elevated Windows PowerShell prompt and type the following commands:
12. Minimize the DC1 VM window but do not stop the VM.
Next, the client VM will be started and joined to the contoso.com domain. This is done before adding a
gateway to the PoC network so that there is no danger of duplicate DNS registrations for the physical
client and its cloned VM in the corporate domain.
13. If the PC1 VM is not started yet, using an elevated Windows PowerShell prompt on the Hyper-V host,
start the client VM (PC1), and connect to it:
Start-VM PC1
vmconnect localhost PC1
14. Sign in to PC1 using an account that has local administrator rights.
PC1 will be disconnected from its current domain, so you cannot use a domain account to sign on
unless these credentials are cached and the use of cached credentials is permitted by Group Policy. If
cached credentials are available and permitted, you can use these credentials to sign in. Otherwise,
use an existing local administrator account.
15. After signing in, the operating system detects that it is running in a new environment. New drivers will be
automatically installed, including the network adapter driver. The network adapter driver must be
updated before you can proceed, so that you will be able to join the contoso.com domain. Depending on
the resources allocated to PC1, installing the network adapter driver might take a few minutes. You can
monitor device driver installation by clicking Show hidden icons in the notification area.
If the client was configured with a static address, you must change this to a dynamic one so that it can
obtain a DHCP lease.
16. When the new network adapter driver has completed installation, you will receive an alert to set a
network location for the contoso.com network. Select Work network and then click Close . When you
receive an alert that a restart is required, click Restar t Later .
17. Open an elevated Windows PowerShell prompt on PC1 and verify that the client VM has received a DHCP
lease and can communicate with the consoto.com domain controller.
To open Windows PowerShell on Windows 7, click Star t , and search for "power ." Right-click Windows
PowerShell and then click Pin to Taskbar so that it is simpler to use Windows PowerShell during this
lab. Click Windows PowerShell on the taskbar, and then type ipconfig at the prompt to see the client's
current IP address. Also type ping dc1.contoso.com and nltest /dsgetdc:contoso.com to verify that
it can reach the domain controller. See the following examples of a successful network connection:
ipconfig
Windows IP Configuration
ping dc1.contoso.com
nltest /dsgetdc:contoso.com
DC: \\DC1
Address: \\192.168.0.1
Dom Guid: fdbd0643-d664-411b-aea0-fe343d7670a8
Dom Name: CONTOSO
Forest Name: contoso.com
Dc Site Name: Default-First-Site-Name
Our Site Name: Default-First-Site-Name
Flags: PDC GC DS LDAP KDC TIMESERV WRITABLE DNS_FOREST CLOSE_SITE FULL_SECRET WS 0xC000
If PC1 is running Windows 7, enhanced session mode might not be available, which means that you
cannot copy and paste commands from the Hyper-V host to a Windows PowerShell prompt on PC1.
However, it is possible to use integration services to copy a file from the Hyper-V host to a VM. The
next procedure demonstrates this. If the Copy-VMFile command fails, then type the commands below
at an elevated Windows PowerShell prompt on PC1 instead of saving them to a script to run
remotely. If PC1 is running Windows 8 or a later operating system, you can use enhanced session
mode to copy and paste these commands instead of typing them.
18. Minimize the PC1 window and switch to the Hyper-V host computer. Open an elevated Windows
PowerShell ISE window on the Hyper-V host (right-click Windows PowerShell and then click Run ISE as
Administrator ) and type the following commands in the (upper) script editor pane:
(Get-WmiObject Win32_ComputerSystem).UnjoinDomainOrWorkgroup($null,$null,0)
$pass = "pass@word1" | ConvertTo-SecureString -AsPlainText -Force
$user = "contoso\administrator"
$cred = New-Object System.Management.Automation.PSCredential($user,$pass)
Add-Computer -DomainName contoso.com -Credential $cred
Restart-Computer
If you do not see the script pane, click View and verify Show Script Pane Top is enabled. Click File
and then click New .
In order for this command to work properly, PC1 must be running the vmicguestinterface (Hyper-V
Guest Service Interface) service. If this service is not enabled in this step, then the copy-VMFile
command will fail. In this case, you can try updating integration services on the VM by mounting the
Hyper-V Integration Services Setup (vmguest.iso), which is located in C:\Windows\System32 on
Windows Server 2012 and 2012 R2 operating systems that are running the Hyper-V role service.
If the copy-vmfile command does not work and you cannot properly enable or upgrade integration
services on PC1, then create the file c:\pc1.ps1 on the VM by typing the commands into this file manually.
The copy-vmfile command is only used in this procedure as a demonstration of automation methods that
can be used in a Hyper-V environment when enhanced session mode is not available. After typing the
script file manually, be sure to save the file as a Windows PowerShell script file with the .ps1 extension
and not as a text (.txt) file.
21. On PC1, type the following commands at an elevated Windows PowerShell prompt:
The commands in this script might take a few moments to complete. If an error is displayed, check
that you typed the command correctly, paying close attention to spaces. PC1 is removed from its
domain in this step while not connected to the corporate network so as to ensure the computer
object in the corporate domain is unaffected. PC1 is also not renamed to "PC1" in system properties
so that it maintains some of its mirrored identity. However, if desired you can also rename the
computer.
22. Upon completion of the script, PC1 will automatically restart. When it has restarted, sign in to the
contoso.com domain using the Switch User option, with the user1 account you created in step 11 of
this section.
Impor tant : The settings that will be used later to migrate user data specifically select only accounts
that belong to the CONTOSO domain. However, this can be changed to migrate all user accounts, or
only other specified accounts. If you wish to test migration of user data and settings with accounts
other than those in the CONTOSO domain, you must specify these accounts or domains when you
configure the value of ScanStateArgs in the MDT test lab guide. This value is specifically called out
when you get to that step. If you wish to only migrate CONTOSO accounts, then you can log in with
the user1 account or the administrator account at this time and modify some of the files and settings
for later use in migration testing.
23. Minimize the PC1 window but do not turn it off while the second Windows Server 2012 R2 VM (SRV1) is
configured. This verifies that the Hyper-V host has enough resources to run all VMs simultaneously. Next,
SRV1 will be started, joined to the contoso.com domain, and configured with RRAS and DNS services.
24. On the Hyper-V host computer, at an elevated Windows PowerShell prompt, type the following
commands:
Start-VM SRV1
vmconnect localhost SRV1
25. Accept the default settings, read license terms and accept them, provide an administrator password of
pass@word1 , and click Finish . When you are prompted about finding PCs, devices, and content on the
network, click Yes .
26. Sign in to SRV1 using the local administrator account. In the same way that was done on DC1, sign out of
SRV1 and then sign in again to enable enhanced session mode. This will enable you to copy and paste
Windows PowerShell commands from the Hyper-V host to the VM.
27. Open an elevated Windows PowerShell prompt on SRV1 and type the following commands:
Rename-Computer SRV1
New-NetIPAddress -InterfaceAlias Ethernet -IPAddress 192.168.0.2 -PrefixLength 24
Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses
192.168.0.1,192.168.0.2
Restart-Computer
IMPORTANT
Verify that you are configuring the correct interface in this step. The commands in this step assume that the poc-
internal interface on SRV1 is named "Ethernet." If you are unsure how to check the interface, see step #30 below
for instructions and tips on how to verify and modify the interface name.
28. Wait for the computer to restart, sign in again, then type the following commands at an elevated
Windows PowerShell prompt:
30. Before configuring the routing service that was just installed, verify that network interfaces were added to
SRV1 in the right order, resulting in an interface alias of "Ethernet" for the private interface, and an
interface alias of "Ethernet 2" for the public interface. Also verify that the external interface has a valid
external DHCP IP address lease.
To view a list of interfaces, associated interface aliases, and IP addresses on SRV1, type the following
Windows PowerShell command. Example output of the command is also shown below:
IPAddress InterfaceAlias
--------- --------------
10.137.130.118 Ethernet 2
192.168.0.2 Ethernet
In this example, the poc-internal network interface at 192.168.0.2 is associated with the "Ethernet"
interface and the Internet-facing poc-external interface is associated with the "Ethernet 2" interface. If
your interfaces are different, you must adjust the commands provided in the next step appropriately to
configure routing services. Also note that if the "Ethernet 2" interface has an IP address in the
192.168.0.100-105 range then it likely is getting a DHCP lease from DC1 instead of your corporate
network. If this is the case, you can try removing and re-adding the second network interface from the
SRV1 VM through its Hyper-V settings.
TIP
Sometimes a computer will have hidden, disconnected interfaces that prevent you from naming a network
adapter. When you attempt to rename an adapter, you will receive an error that the adapter name already exists.
These disconnected devices can be viewed in device manager by clicking View and then clicking Show hidden
devices . The disconnected device can then be uninstalled, enabling you to reuse the adapter name.
31. To configure SRV1 with routing capability for the PoC network, type or paste the following commands at
an elevated Windows PowerShell prompt on SRV1:
32. The DNS service on SRV1 also needs to resolve hosts in the contoso.com domain. This can be
accomplished with a conditional forwarder. Open an elevated Windows PowerShell prompt on SRV1 and
type the following command:
ping www.microsoft.com
If you see "Ping request could not find host www.microsoft.com " on PC1 and DC1, but not on SRV1, then
you will need to configure a server-level DNS forwarder on SRV1. To do this, open an elevated Windows
PowerShell prompt on SRV1 and type the following command.
Note : This command also assumes that "Ethernet 2" is the external-facing network adapter on SRV1. If
the external adapter has a different name, replace "Ethernet 2" in the command below with that name:
34. If DNS and routing are both working correctly, you will see the following on DC1 and PC1 (the IP address
might be different, but that is OK):
35. Verify that all three VMs can reach each other, and the Internet. See Appendix A: Verify the configuration
for more information.
36. Lastly, because the client computer has different hardware after copying it to a VM, its Windows
activation will be invalidated and you might receive a message that you must activate Windows in 3 days.
To extend this period to 30 days, type the following commands at an elevated Windows PowerShell
prompt on PC1:
This completes configuration of the starting PoC environment. Additional services and tools are installed in
subsequent guides.
Get-Service DNS,RemoteAccess
Get-DnsServerForwarder
Resolve-DnsName -Server dc1.contoso.com -Name www.microsoft.com
ipconfig /all
netsh int ipv4 show address
whoami
hostname
nslookup www.microsoft.com
ping -n 1 dc1.contoso.com
tracert www.microsoft.com
whoami displays the current user context, for example in an elevated Windows PowerShell prompt,
contoso\administrator is displayed.
hostname displays the name of the local computer, for example W7PC-001.
nslookup displays the DNS server used for the query, and the results of the query. For example, server
dc1.contoso.com , address 192.168.0.1, Name e2847.dspb.akamaiedge.net .
ping displays if the source can resolve the target name, and whether or not the target responds to ICMP.
If it cannot be resolved, "..could not find host" will be displayed and if the target is found and also
responds to ICMP, you will see "Reply from" and the IP address of the target.
tracer t displays the path to reach the destination, for example srv1.contoso.com [192.168.0.2] followed
by a list of hosts and IP addresses corresponding to subsequent routing nodes between the source and
the destination.
Term Definition
Virtual machine (VM) A VM is a virtual computer with its own operating system,
running on the Hyper-V host.
Related Topics
Windows 10 deployment scenarios
Deploy Windows 10 in a test lab using Microsoft
Deployment Toolkit
3/27/2021 • 21 minutes to read • Edit Online
Applies to
Windows 10
Impor tant : This guide leverages the proof of concept (PoC) environment configured using procedures in the
following guide:
Step by step guide: Configure a test lab to deploy Windows 10
Please complete all steps in the prerequisite guide before starting this guide. This guide requires about 5 hours
to complete, but can require less time or more time depending on the speed of the Hyper-V host. After
completing the current guide, also see the companion guide:
Deploy Windows 10 in a test lab using Microsoft Endpoint Configuration Manager
The PoC environment is a virtual network running on Hyper-V with three virtual machines (VMs):
DC1 : A contoso.com domain controller, DNS server, and DHCP server.
SRV1 : A dual-homed contoso.com domain member server, DNS server, and default gateway providing NAT
service for the PoC network.
PC1 : A contoso.com member computer running Windows 7, Windows 8, or Windows 8.1 that has been
shadow-copied from a physical computer on your corporate network.
This guide uses the Hyper-V server role. If you do not complete all steps in a single session, consider using
checkpoints and saved states to pause, resume, or restart your work.
In this guide
This guide provides instructions to install and configure the Microsoft Deployment Toolkit (MDT) to deploy a
Windows 10 image.
Topics and procedures in this guide are summarized in the following table. An estimate of the time required to
complete each procedure is also provided. Time required to complete procedures will vary depending on the
resources available to the Hyper-V host and assigned to VMs, such as processor speed, memory allocation, disk
speed, and network speed.
Deploy a Windows 10 image using The reference image is deployed in the 60 minutes
MDT PoC environment.
Refresh a computer with Windows 10 Export user data from an existing 60 minutes
client computer, wipe the computer,
install a new operating system, and
then restore user data and settings.
About MDT
MDT performs deployments by using the Lite Touch Installation (LTI), Zero Touch Installation (ZTI), and User-
Driven Installation (UDI) deployment methods.
LTI is the deployment method used in the current guide, requiring only MDT and performed with a minimum
amount of user interaction.
ZTI is fully automated, requiring no user interaction and is performed using MDT and Microsoft Endpoint
Configuration Manager. After completing the steps in the current guide, see Step by step: Deploy Windows
10 in a test lab using Microsoft Endpoint Configuration Manager to use the ZTI deployment method in the
PoC environment.
UDI requires manual intervention to respond to installation prompts such as machine name, password and
language settings. UDI requires MDT and Microsoft Endpoint Configuration Manager.
Install MDT
1. On SRV1, temporarily disable IE Enhanced Security Configuration for Administrators by typing the
following commands at an elevated Windows PowerShell prompt:
2. Download and install the 64-bit version of Microsoft Deployment Toolkit (MDT) on SRV1 using the
default options. As of the writing of this guide, the latest version of MDT was 8443.
3. Download and install the latest Windows Assessment and Deployment Kit (ADK) on SRV1 using the
default installation settings. The current version is the ADK for Windows 10, version 1703. Installation
might require several minutes to acquire all components.
4. If desired, re-enable IE Enhanced Security Configuration:
2. On SRV1, verify that the Windows Enterprise installation DVD is mounted as drive letter D.
3. The Windows 10 Enterprise installation files will be used to create a deployment share on SRV1 using the
MDT deployment workbench. To open the deployment workbench, click Star t , type deployment , and
then click Deployment Workbench .
4. To enable quick access to the application, right-click Deployment Workbench on the taskbar and then
click Pin this program to the taskbar .
5. In the Deployment Workbench console, right-click Deployment Shares and select New Deployment
Share .
6. Use the following settings for the New Deployment Share Wizard:
Deployment share path: C:\MDTBuildLab
Share name: MDTBuildLab$
Deployment share description: MDT build lab
Options: click Next to accept the default
Summary: click Next
Progress: settings will be applied
Confirmation: click Finish
7. Expand the Deployment Shares node, and then expand MDT build lab .
8. Right-click the Operating Systems node, and then click New Folder . Name the new folder Windows
10 . Complete the wizard using default values and click Finish .
9. Right-click the Windows 10 folder created in the previous step, and then click Impor t Operating
System .
10. Use the following settings for the Import Operating System Wizard:
OS Type: Full set of source files
Source: D:\
Destination: W10Ent_x64
Summary: click Next
Progress: wait for files to be copied
Confirmation: click Finish
For purposes of this test lab, we will only add the prerequisite .NET Framework feature. Commerical
applications (ex: Microsoft Office) will not be added to the deployment share. For information about
adding applications, see the Add applications section of the Create a Windows 10 reference image
topic in the TechNet library.
11. The next step is to create a task sequence to reference the operating system that was imported. To create
a task sequence, right-click the Task Sequences node and then click New Task Sequence . Use the
following settings for the New Task Sequence Wizard:
Task sequence ID: REFW10X64-001
Task sequence name: Windows 10 Enterprise x64 Default Image
Task sequence comments: Reference Build
Template: Standard Client Task Sequence
Select OS: click Windows 10 Enterprise Evaluation in W10Ent_x64 install.wim
Specify Product Key: Do not specify a product key at this time
Full Name: Contoso
Organization: Contoso
Internet Explorer home page: http://www.contoso.com
Admin Password: Do not specify an Administrator password at this time
Summary: click Next
Confirmation: click Finish
12. Edit the task sequence to add the Microsoft NET Framework 3.5, which is required by many applications.
To edit the task sequence, double-click Windows 10 Enterprise x64 Default Image that was created
in the previous step.
13. Click the Task Sequence tab. Under State Restore click Tatto to highlight it, then click Add and choose
New Group .
14. On the Properties tab of the group that was created in the previous step, change the Name from New
Group to Custom Tasks (Pre-Windows Update) and then click Apply . Click another location in the
window to see the name change.
15. Click the Custom Tasks (Pre-Windows Update) group again, click Add , point to Roles , and then click
Install Roles and Features .
16. Under Select the roles and features that should be installed , select .NET Framework 3.5
(includes .NET 2.0 and 3.0) and then click Apply .
17. Enable Windows Update in the task sequence by clicking the Windows Update (Post-Application
Installation) step, clicking the Options tab, and clearing the Disable this step checkbox.
Note: Since we are not installing applications in this test lab, there is no need to enable the Windows
Update Pre-Application Installation step. However, you should enable this step if you are also
installing applications.
[Default]
_SMSTSORGNAME=Contoso
UserDataLocation=NONE
DoCapture=YES
OSInstall=Y
AdminPassword=pass@word1
TimeZoneName=Pacific Standard Time
OSDComputername=#Left("PC-%SerialNumber%",7)#
JoinWorkgroup=WORKGROUP
HideShell=YES
FinishAction=SHUTDOWN
DoNotCreateExtraPartition=YES
ApplyGPOPack=NO
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerName=YES
SkipDomainMembership=YES
SkipUserData=YES
SkipLocaleSelection=YES
SkipTaskSequence=NO
SkipTimeZone=YES
SkipApplications=YES
SkipBitLocker=YES
SkipSummary=YES
SkipRoles=YES
SkipCapture=NO
SkipFinalSummary=NO
21. Click Apply and then click Edit Bootstrap.ini . Replace the contents of the Bootstrap.ini file with the
following text, and save the file:
[Settings]
Priority=Default
[Default]
DeployRoot=\\SRV1\MDTBuildLab$
UserDomain=CONTOSO
UserID=MDT_BA
UserPassword=pass@word1
SkipBDDWelcome=YES
Hint: To copy the file, right-click the LiteTouchPE_x86.iso file and click Copy on SRV1, then open the
c:\VHD folder on the Hyper-V host, right-click inside the folder and click Paste .
26. Open a Windows PowerShell prompt on the Hyper-V host computer and type the following commands:
New-VM REFW10X64-001 -SwitchName poc-internal -NewVHDPath "c:\VHD\REFW10X64-001.vhdx" -
NewVHDSizeBytes 60GB
Set-VMMemory REFW10X64-001 -DynamicMemoryEnabled $true -MinimumBytes 1024MB -
MaximumBytes 1024MB -Buffer 20
Set-VMDvdDrive REFW10X64-001 -Path c:\VHD\LiteTouchPE_x86.iso
Start-VM REFW10X64-001
vmconnect localhost REFW10X64-001
The VM will require a few minutes to prepare devices and boot from the LiteTouchPE_x86.iso file.
27. In the Windows Deployment Wizard, select Windows 10 Enterprise x64 Default Image , and then
click Next .
28. Accept the default values on the Capture Image page, and click Next . Operating system installation will
complete after 5 to 10 minutes, and then the VM will reboot automatically. Allow the system to boot
normally (do not press a key). The process is fully automated.
Additional system restarts will occur to complete updating and preparing the operating system. Setup
will complete the following procedures:
Install the Windows 10 Enterprise operating system.
Install added applications, roles, and features.
Update the operating system using Windows Update (or WSUS if optionally specified).
Stage Windows PE on the local disk.
Run System Preparation (Sysprep) and reboot into Windows PE.
Capture the installation to a Windows Imaging (WIM) file.
Turn off the virtual machine.
This step requires from 30 minutes to 2 hours, depending on the speed of the Hyper-V host. After some
time, you will have a Windows 10 Enterprise x64 image that is fully patched and has run through
Sysprep. The image is located in the C:\MDTBuildLab\Captures folder on your deployment server (SRV1).
The file name is REFW10X64-001.wim .
2. In the Deployment Workbench console on SRV1, right-click the MDT Production deployment share and
then click Proper ties .
3. Click the Rules tab and replace the rules with the following text (don't click OK yet):
[Settings]
Priority=Default
[Default]
_SMSTSORGNAME=Contoso
OSInstall=YES
UserDataLocation=AUTO
TimeZoneName=Pacific Standard Time
OSDComputername=#Left("PC-%SerialNumber%",7)#
AdminPassword=pass@word1
JoinDomain=contoso.com
DomainAdmin=administrator
DomainAdminDomain=CONTOSO
DomainAdminPassword=pass@word1
ScanStateArgs=/ue:*\* /ui:CONTOSO\*
USMTMigFiles001=MigApp.xml
USMTMigFiles002=MigUser.xml
HideShell=YES
ApplyGPOPack=NO
SkipAppsOnUpgrade=NO
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerName=YES
SkipDomainMembership=YES
SkipUserData=YES
SkipLocaleSelection=YES
SkipTaskSequence=NO
SkipTimeZone=YES
SkipApplications=NO
SkipBitLocker=YES
SkipSummary=YES
SkipCapture=YES
SkipFinalSummary=NO
EventService=http://SRV1:9800
In this example a MachineObjectOU entry is not provided. Normally this entry describes the
specific OU where new client computer objects are created in Active Directory. However, for the
purposes of this test lab clients are added to the default computers OU, which requires that this
parameter be unspecified.
If desired, edit the follow line to include or exclude other users when migrating settings. Currently, the
command is set to user exclude (ue) all users except for CONTOSO users specified by the user include
option (ui):
ScanStateArgs=/ue:*\* /ui:CONTOSO\*
For example, to migrate all users on the computer, replace this line with the following:
ScanStateArgs=/all
[Settings]
Priority=Default
[Default]
DeployRoot=\\SRV1\MDTProd$
UserDomain=CONTOSO
UserID=MDT_BA
UserPassword=pass@word1
SkipBDDWelcome=YES
2. Click Star t , type Windows Deployment , and then click Windows Deployment Ser vices .
3. In the Windows Deployment Services console, expand Ser vers , expand SRV1.contoso.com , right-click
Boot Images , and then click Add Boot Image .
4. Browse to the C:\MDTProd\Boot\LiteTouchPE_x64.wim file, click Open , click Next , and accept the
defaults in the Add Image Wizard. Click Finish to complete adding a boot image.
Deploy the client image
1. Before using WDS to deploy a client image, you must temporarily disable the external network adapter
on SRV1. This is just an artifact of the lab environment. In a typical deployment environment WDS would
not be installed on the default gateway.
Note : Do not disable the internal network interface. To quickly view IP addresses and interface names
configured on the VM, type Get-NetIPAddress | ft interfacealias, ipaddress
Assuming the external interface is named "Ethernet 2", to disable the external interface on SRV1, open a
Windows PowerShell prompt on SRV1 and type the following command:
2. Next, switch to the Hyper-V host and open an elevated Windows PowerShell prompt. Create a generation
2 VM on the Hyper-V host that will load its OS using PXE. To create this VM, type the following commands
at an elevated Windows PowerShell prompt:
Dynamic memory is configured on the VM to conserve resources. However, this can cause memory
allocation to be reduced past what is required to install an operating system. If this happens, reset the
VM and begin the OS installation task sequence immediately. This ensures the VM memory allocation
is not decreased too much while it is idle.
Start-VM PC2
vmconnect localhost PC2
7. On SRV1, in the Deployment Workbench console, click on Monitoring and view the status of installation.
Right-click Monitoring and click Refresh if no data is displayed.
8. OS installation requires about 10 minutes. When the installation is complete, the system will reboot
automatically, configure devices, and install updates, requiring another 10-20 minutes. When the new
client computer is finished updating, click Finish . You will be automatically signed in to the local
computer as administrator.
This completes the demonstration of how to deploy a reference image to the network. To conserve resources,
turn off the PC2 VM before starting the next section.
Start-VM PC1
vmconnect localhost PC1
2. Switch back to the Hyper-V host and create a checkpoint for the PC1 VM so that it can easily be reverted
to its current state for troubleshooting purposes and to perform additional scenarios. Checkpoints are
also known as snapshots. To create a checkpoint for the PC1 VM, type the following command at an
elevated Windows PowerShell prompt on the Hyper-V host:
Specify contoso\administrator as the user name to ensure you do not sign on using the local
administrator account. You must sign in with this account so that you have access to the deployment
share.
cscript \\SRV1\MDTProd$\Scripts\Litetouch.vbs
Note : For more information on tools for viewing log files and to assist with troubleshooting, see
Configuration Manager Tools.
5. Choose the Windows 10 Enterprise x64 Custom Image and then click Next .
6. Choose Do not back up the existing computer and click Next .
Note : The USMT will still back up the computer.
7. Lite Touch Installation will perform the following actions:
Back up user settings and data using USMT.
Install the Windows 10 Enterprise X64 operating system.
Update the operating system via Windows Update.
Restore user settings and data using USMT.
You can review the progress of installation on SRV1 by clicking on the Monitoring node in the
deployment workbench. When OS installation is complete, the computer will restart, set up
devices, and configure settings.
8. Sign in with the CONTOSO\Administrator account and verify that all CONTOSO domain user accounts
and data have been migrated to the new operating system, or other user accounts as specified previously.
9. Create another checkpoint for the PC1 VM so that you can review results of the computer refresh later. To
create a checkpoint, type the following command at an elevated Windows PowerShell prompt on the
Hyper-V host:
10. Restore the PC1 VM to it's previous state in preparation for the replace procedure. To restore a
checkpoint, type the following command at an elevated Windows PowerShell prompt on the Hyper-V
host:
4. On SRV1 in the deployment workbench, under MDT Production , right-click the Task Sequences node,
and click New Folder .
5. Name the new folder Other , and complete the wizard using default options.
6. Right-click the Other folder and then click New Task Sequence . Use the following values in the wizard:
Task sequence ID : REPLACE-001
Task sequence name : Backup Only Task Sequence
Task sequence comments : Run USMT to back up user data and settings
Template : Standard Client Replace Task Sequence (note: this is not the default template)
7. Accept defaults for the rest of the wizard and then click Finish . The replace task sequence will skip OS
selection and settings.
8. Open the new task sequence that was created and review it. Note the type of capture and backup tasks
that are present. Click OK when you are finished reviewing the task sequence.
Run the backup-only task sequence
1. If you are not already signed on to PC1 as contoso\administrator , sign in using this account. To verify
the currently signed in account, type the following command at an elevated command prompt:
whoami
2. To ensure a clean environment before running the backup task sequence, type the following at an
elevated Windows PowerShell prompt on PC1:
3. Sign in to PC1 using the contoso\administrator account, and then type the following at an elevated
command prompt:
cscript \\SRV1\MDTProd$\Scripts\Litetouch.vbs
Directory: C:\MigData\PC1\USMT
Deploy PC3
8. On the Hyper-V host, type the following commands at an elevated Windows PowerShell prompt:
9. Temporarily disable the external network adapter on SRV1 again, so that we can successfully boot PC3
from WDS. To disable the adapter, type the following command at an elevated Windows PowerShell
prompt on SRV1:
As mentioned previously, ensure that you disable the external network adapter, and wait for the
command to complete before proceeding.
10. Start and connect to PC3 by typing the following commands at an elevated Windows PowerShell prompt
on the Hyper-V host:
Start-VM PC3
vmconnect localhost PC3
14. Setup will install the Windows 10 Enterprise operating system, update via Windows Update, and restore
the user settings and data from PC1.
15. When PC3 has completed installing the OS, sign in to PC3 using the contoso\administrator account.
When the PC completes updating, click Finish .
16. Verify that settings have been migrated from PC1. This completes demonstration of the replace
procedure.
17. Shut down PC3 in preparation for the next procedure.
Related Topics
Microsoft Deployment Toolkit
Prepare for deployment with MDT
Deploy Windows 10 in a test lab using Microsoft
Endpoint Configuration Manager
8/19/2021 • 44 minutes to read • Edit Online
Applies to
Windows 10
Impor tant : This guide leverages the proof of concept (PoC) environment, and some settings that are configured
in the following guides:
Step by step guide: Deploy Windows 10 in a test lab
Deploy Windows 10 in a test lab using Microsoft Deployment Toolkit
Please complete all steps in these guides before attempting the procedures in this guide. If you wish to skip the
Windows 10 deployment procedures in the MDT guide and move directly to this guide, you must at least install
MDT and the Windows ADK before performing procedures in this guide. All steps in the first guide are required
before attempting the procedures in this guide.
The PoC environment is a virtual network running on Hyper-V with three virtual machines (VMs):
DC1 : A contoso.com domain controller, DNS server, and DHCP server.
SRV1 : A dual-homed contoso.com domain member server, DNS server, and default gateway providing NAT
service for the PoC network.
PC1 : A contoso.com member computer running Windows 7, Windows 8, or Windows 8.1 that has been
cloned from a physical computer on your corporate network for testing purposes.
This guide leverages the Hyper-V server role to perform procedures. If you do not complete all steps in a
single session, consider using checkpoints and saved states to pause, resume, or restart your work.
Multiple features and services are installed on SRV1 in this guide. This is not a typical installation, and is only
done to set up a lab environment with a bare minimum of resources. However, if less than 4 GB of RAM is
allocated to SRV1 in the Hyper-V console, some procedures will be extremely slow to complete. If resources
are limited on the Hyper-V host, consider reducing RAM allocation on DC1 and PC1, and then increasing the
RAM allocation on SRV1. You can adjust RAM allocation for a VM by right-clicking the VM in the Hyper-V
Manager console, clicking Settings , clicking Memor y , and modifying the value next to Maximum RAM .
In this guide
This guide provides end-to-end instructions to install and configure Microsoft Endpoint Configuration Manager,
and use it to deploy a Windows 10 image. Depending on the speed of your Hyper-V host, the procedures in this
guide will require 6-10 hours to complete.
Topics and procedures in this guide are summarized in the following table. An estimate of the time required to
complete each procedure is also provided. Time required to complete procedures will vary depending on the
resources available to the Hyper-V host and assigned to VMs, such as processor speed, memory allocation, disk
speed, and network speed.
TO P IC DESC RIP T IO N T IM E
Download MDOP and install DaRT Download the Microsoft Desktop 15 minutes
Optimization Pack 2015 and install
DaRT 10.
Create a boot image for Configuration Use the MDT wizard to create the boot 20 minutes
Manager image in Configuration Manager.
Create a Windows 10 reference image This procedure can be skipped if it was 0-60 minutes
done previously, otherwise instructions
are provided to create a reference
image.
Finalize the operating system Enable monitoring, configure rules, and 30 minutes
configuration distribute content.
Refresh a client with Windows 10 using Use a task sequence to refresh a client 90 minutes
Configuration Manager with Windows 10 using Configuration
Manager and MDT
Install prerequisites
1. Before installing Microsoft Endpoint Configuration Manager, we must install prerequisite services and
features. Type the following command at an elevated Windows PowerShell prompt on SRV1:
Install-WindowsFeature Web-Windows-Auth,Web-ISAPI-Ext,Web-Metabase,Web-WMI,BITS,RDC,NET-Framework-
Features,Web-Asp-Net,Web-Asp-Net45,NET-HTTP-Activation,NET-Non-HTTP-Activ
If the request to add features fails, retry the installation by typing the command again.
2. Download SQL Server 2014 SP2 from the Microsoft Evaluation Center as an .ISO file on the Hyper-V host
computer. Save the file to the C:\VHD directory.
3. When you have downloaded the file SQLSer ver2014SP2-FullSlipstream-x64-ENU.iso and placed it
in the C:\VHD directory, type the following command at an elevated Windows PowerShell prompt on the
Hyper-V host:
Installation will take several minutes. When installation is complete, the following output will be
displayed:
Success
Microsoft (R) .NET Framework CasPol 2.0.50727.7905
Copyright (c) Microsoft Corporation. All rights reserved.
Success
One or more affected files have operations pending.
You should restart your computer to complete this process.
PS C:\>
New-NetFirewallRule -DisplayName "SQL Server" -Direction Inbound –Protocol TCP –LocalPort 1433 -
Action allow
New-NetFirewallRule -DisplayName "SQL Admin Connection" -Direction Inbound –Protocol TCP –LocalPort
1434 -Action allow
New-NetFirewallRule -DisplayName "SQL Database Management" -Direction Inbound –Protocol UDP –
LocalPort 1434 -Action allow
New-NetFirewallRule -DisplayName "SQL Service Broker" -Direction Inbound –Protocol TCP –LocalPort
4022 -Action allow
New-NetFirewallRule -DisplayName "SQL Debugger/RPC" -Direction Inbound –Protocol TCP –LocalPort 135 -
Action allow
6. Download and install the latest Windows Assessment and Deployment Kit (ADK) on SRV1 using the
default installation settings. The current version is the ADK for Windows 10, version 2004. Installation
might require several minutes to acquire all components.
Install Microsoft Endpoint Configuration Manager
1. On SRV1, temporarily disable IE Enhanced Security Configuration for Administrators by typing the
following commands at an elevated Windows PowerShell prompt:
2. Download Microsoft Endpoint Manager and Endpoint Protection on SRV1 (download the executable file
anywhere on SRV1), double-click the file, enter C:\configmgr for Unzip to folder , and click Unzip . The
C:\configmgr directory will be automatically created. Click OK and then close the WinZip Self-Extractor
dialog box when finished.
3. Before starting the installation, verify that WMI is working on SRV1. See the following examples. Verify
that Running is displayed under Status and True is displayed next to TcpTestSucceeded :
Get-Service Winmgmt
ComputerName : 192.168.0.2
RemoteAddress : 192.168.0.2
RemotePort : 135
AllNameResolutionResults :
MatchingIPsecRules :
NetworkIsolationContext : Internet
InterfaceAlias : Ethernet
SourceAddress : 192.168.0.2
NetRoute (NextHop) : 0.0.0.0
PingSucceeded : True
PingReplyDetails (RTT) : 0 ms
TcpTestSucceeded : True
You can also verify WMI using the WMI console by typing wmimgmt.msc , right-clicking WMI Control
(Local) in the console tree, and then clicking Proper ties .
If the WMI service is not started, attempt to start it or reboot the computer. If WMI is running but errors
are present, see WMIDiag for troubleshooting information.
4. To extend the Active Directory schema, type the following command at an elevated Windows PowerShell
prompt:
cmd /c C:\configmgr\SMSSETUP\BIN\X64\extadsch.exe
5. Temporarily switch to the DC1 VM, and type the following command at an elevated command prompt on
DC1:
adsiedit.msc
6. Right-click ADSI Edit , click Connect to , select Default (Domain or ser ver that you logged in to)
under Computer and then click OK .
7. Expand Default naming context >DC=contoso,DC=com , and then in the console tree right-click
CN=System , point to New , and then click Object .
8. Click container and then click Next .
9. Next to Value , type System Management , click Next , and then click Finish .
10. Right-click CN=system Management and then click Proper ties .
11. On the Security tab, click Add , click Object Types , select Computers , and click OK .
12. Under Enter the object names to select , type SRV1 and click OK .
13. The SRV1 computer account will be highlighted, select Allow next to Full control .
14. Click Advanced , click SRV1 (CONTOSO\SRV1$) and click Edit .
15. Next to Applies to , choose This object and all descendant objects , and then click OK three times.
16. Close the ADSI Edit console and switch back to SRV1.
17. To start Configuration Manager installation, type the following command at an elevated Windows
PowerShell prompt on SRV1:
cmd /c C:\configmgr\SMSSETUP\BIN\X64\Setup.exe
18. Provide the following in the Microsoft Endpoint Manager Setup Wizard:
Before You Begin : Read the text and click Next.
Getting Star ted : Choose Install a Configuration Manager primar y site and select the Use
typical installation options for a stand-alone primar y site checkbox.
Click Yes in response to the popup window.
Product Key : Choose Install the evaluation edition of this Product .
Microsoft Software License Terms : Read the terms and then select the I accept these license
terms checkbox.
Prerequisite Licenses : Review license terms and select all three checkboxes on the page.
Prerequisite Downloads : Choose Download required files and enter c:\windows\temp next to
Path .
Site and Installation Settings : Site code: PS1 , Site name: Contoso .
use default settings for all other options
Usage Data : Read the text and click Next .
Ser vice Connection Point Setup : Accept the default settings (SRV1.contoso.com is automatically
added under Select a server to use).
Settings Summar y : Review settings and click Next .
Prerequisite Check : No failures should be listed. Ignore any warnings and click Begin Install .
There should be at most three warnings present: WSUS on site server, configuration for SQL Server
memory usage, and SQL Server process memory allocation. These warnings can safely be ignored in
this test environment.
Depending on the speed of the Hyper-V host and resources allocated to SRV1, installation can require
approximately one hour. Click Close when installation is complete.
19. If desired, re-enable IE Enhanced Security Configuration at this time on SRV1:
Set-ItemProperty -Path $AdminKey -Name "IsInstalled" -Value 1
Stop-Process -Name Explorer
1. Download the Microsoft Desktop Optimization Pack 2015 to the Hyper-V host using an MSDN
subscription. Download the .ISO file
(mu_microsoft_desktop_optimization_pack_2015_x86_x64_dvd_5975282.iso, 2.79 GB) to the C:\VHD
directory on the Hyper-V host.
2. Type the following command at an elevated Windows PowerShell prompt on the Hyper-V host to mount
the MDOP file on SRV1:
1. Determine the MAC address of the internal network adapter on SRV1. To determine this, type the
following command at an elevated Windows PowerShell prompt on SRV1:
(Get-NetAdapter "Ethernet").MacAddress
If the internal network adapter, assigned an IP address of 192.168.0.2, is not named "Ethernet" then
replace the name "Ethernet" in the previous command with the name of this network adapter. You can
review the names of network adapters and the IP addresses assigned to them by typing ipconfig .
2. In the Microsoft Endpoint Manager console, in the Administration workspace, click Distribution
Points .
3. In the display pane, right-click SRV1.CONTOSO.COM and then click Proper ties .
4. On the PXE tab, select the following settings:
Enable PXE suppor t for clients . Click Yes in the popup that appears.
Allow this distribution point to respond to incoming PXE requests
Enable unknown computer suppor t . Click OK in the popup that appears.
Require a password when computers use PXE
Password and Confirm password : pass@word1
Respond to PXE requests on specific network interfaces : Click the yellow starburst and then
enter the MAC address determined in the first step of this procedure.
See the following example:
5. Click OK .
6. Wait for a minute, then type the following command at an elevated Windows PowerShell prompt on
SRV1, and verify that the files displayed are present:
abortpxe.com
bootmgfw.efi
bootmgr.exe
pxeboot.com
pxeboot.n12
wdsmgfw.efi
wdsnbp.com
If these files are not present in the C:\RemoteInstall directory, verify that the REMINST share is
configured as C:\RemoteInstall. You can view the properties of this share by typing "net share
REMINST" at a command prompt. If the share path is set to a different value, then replace
C:\RemoteInstall with your REMINST share path. You can also type the following command at an
elevated Windows PowerShell prompt to open the Configuration Manager Trace Log Tool. In the tool,
click File , click Open , and then open the distmgr.log file. If errors are present, they will be
highlighted in red:
The log file will updated continuously while Configuration Manager is running. Wait for Configuration
Manager to repair any issues that are present, and periodically re-check that the files are present in the
REMINST share location. Close the Configuration Manager Trace Log Tool when done. You will see the
following line in distmgr.log that indicates the REMINST share is being populated with necessary files:
Running: WDSUTIL.exe /Initialize-Server /REMINST:"C:\RemoteInstall"
Once the files are present in the REMINST share location, you can close the cmtrace tool.
Create a branding image file
1. If you have a bitmap (.BMP) image for suitable use as a branding image, copy it to the
C:\Sources\OSD\Branding folder on SRV1. Otherwise, use the following step to copy a simple branding
image.
2. Type the following command at an elevated Windows PowerShell prompt:
In the trace tool, click Tools on the menu and choose Find . Search for "STATMSG: ID=2301 ". For
example:
11. You can also review status by clicking the Zero Touch WinPE x64 image, and then clicking Content
Status under Related Objects in the bottom right-hand corner of the console, or by entering
\Monitoring\Over view\Distribution Status\Content Status on the location bar in the console.
Double-click Zero Touch WinPE x64 under Content Status in the console tree and verify that a status
of Successfully distributed content is displayed on the Success tab.
12. Next, in the Software Librar y workspace, double-click Zero Touch WinPE x64 and then click the Data
Source tab.
13. Select the Deploy this boot image from the PXE-enabled distribution point checkbox, and click
OK .
14. Review the distmgr.log file again for "STATMSG: ID=2301 " and verify that there are three folders under
C:\RemoteInstall\SMSImages with boot images. See the following example:
C:\RemoteInstall\SMSImages\PS100004
C:\RemoteInstall\SMSImages\PS100005
C:\RemoteInstall\SMSImages\PS100006
C:\RemoteInstall\SMSImages\PS100004\boot.PS100004.wim
C:\RemoteInstall\SMSImages\PS100005\boot.PS100005.wim
C:\RemoteInstall\SMSImages\PS100006\WinPE.PS100006.wim
The first two images (*.wim files) are default boot images. The third is the new boot image with DaRT.
2. Verify that the Windows Enterprise installation DVD is mounted on SRV1 as drive letter D.
3. The Windows 10 Enterprise installation files will be used to create a deployment share on SRV1 using the
MDT deployment workbench. To open the deployment workbench, click Star t , type deployment , and
then click Deployment Workbench .
4. In the Deployment Workbench console, right-click Deployment Shares and select New Deployment
Share .
5. Use the following settings for the New Deployment Share Wizard:
Deployment share path: C:\MDTBuildLab
Share name: MDTBuildLab$
Deployment share description: MDT build lab
Options: click Next to accept the default
Summary: click Next
Progress: settings will be applied
Confirmation: click Finish
6. Expand the Deployment Shares node, and then expand MDT build lab .
7. Right-click the Operating Systems node, and then click New Folder . Name the new folder Windows
10 . Complete the wizard using default values and click Finish .
8. Right-click the Windows 10 folder created in the previous step, and then click Impor t Operating
System .
9. Use the following settings for the Import Operating System Wizard:
OS Type: Full set of source files
Source: D:\
Destination: W10Ent_x64
Summary: click Next
Confirmation: click Finish
10. For purposes of this test lab, we will not add applications, such as Microsoft Office, to the deployment
share. For information about adding applications, see the Add applications section of the Create a
Windows 10 reference image topic in the TechNet library.
11. The next step is to create a task sequence to reference the operating system that was imported. To create
a task sequence, right-click the Task Sequences node under MDT Build Lab and then click New Task
Sequence . Use the following settings for the New Task Sequence Wizard:
Task sequence ID: REFW10X64-001
Task sequence name: Windows 10 Enterprise x64 Default Image
Task sequence comments: Reference Build
Template: Standard Client Task Sequence
Select OS: click Windows 10 Enterprise Evaluation in W10Ent_x64 install.wim
Specify Product Key: Do not specify a product key at this time
Full Name: Contoso
Organization: Contoso
Internet Explorer home page: http://www.contoso.com
Admin Password: Do not specify an Administrator password at this time
Summary: click Next
Confirmation: click Finish
12. Edit the task sequence to add the Microsoft NET Framework 3.5, which is required by many applications.
To edit the task sequence, double-click Windows 10 Enterprise x64 Default Image that was created
in the previous step.
13. Click the Task Sequence tab. Under State Restore click Tattoo to highlight it, then click Add and
choose New Group . A new group will be added under Tattoo.
14. On the Properties tab of the group that was created in the previous step, change the Name from New
Group to Custom Tasks (Pre-Windows Update) and then click Apply . To see the name change, click
Tattoo , then click the new group again.
15. Click the Custom Tasks (Pre-Windows Update) group again, click Add , point to Roles , and then click
Install Roles and Features .
16. Under Select the roles and features that should be installed , select .NET Framework 3.5
(includes .NET 2.0 and 3.0) and then click Apply .
17. Enable Windows Update in the task sequence by clicking the Windows Update (Post-Application
Installation) step, clicking the Options tab, and clearing the Disable this step checkbox.
Note: Since we are not installing applications in this test lab, there is no need to enable the Windows
Update Pre-Application Installation step. However, you should enable this step if you are also
installing applications.
[Settings]
Priority=Default
[Default]
_SMSTSORGNAME=Contoso
UserDataLocation=NONE
DoCapture=YES
OSInstall=Y
AdminPassword=pass@word1
TimeZoneName=Pacific Standard TimeZoneName
OSDComputername=#Left("PC-%SerialNumber%",7)#
JoinWorkgroup=WORKGROUP
HideShell=YES
FinishAction=SHUTDOWN
DoNotCreateExtraPartition=YES
ApplyGPOPack=NO
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerName=YES
SkipDomainMembership=YES
SkipUserData=YES
SkipLocaleSelection=YES
SkipTaskSequence=NO
SkipTimeZone=YES
SkipApplications=YES
SkipBitLocker=YES
SkipSummary=YES
SkipRoles=YES
SkipCapture=NO
SkipFinalSummary=NO
21. Click Apply and then click Edit Bootstrap.ini . Replace the contents of the Bootstrap.ini file with the
following text, and save the file:
[Settings]
Priority=Default
[Default]
DeployRoot=\\SRV1\MDTBuildLab$
UserDomain=CONTOSO
UserID=MDT_BA
UserPassword=pass@word1
SkipBDDWelcome=YES
Hint: Top copy the file, right-click the LiteTouchPE_x86.iso file and click Copy on SRV1, then open
the c:\VHD folder on the Hyper-V host, right-click inside the folder and click Paste .
26. Open a Windows PowerShell prompt on the Hyper-V host computer and type the following commands:
27. In the Windows Deployment Wizard, select Windows 10 Enterprise x64 Default Image , and then
click Next .
28. Accept the default values on the Capture Image page, and click Next . Operating system installation will
complete after 5 to 10 minutes and then the VM will reboot automatically. Allow the system to boot
normally (do not press a key). The process is fully automated.
Additional system restarts will occur to complete updating and preparing the operating system. Setup
will complete the following procedures:
Install the Windows 10 Enterprise operating system.
Install added applications, roles, and features.
Update the operating system using Windows Update (or WSUS if optionally specified).
Stage Windows PE on the local disk.
Run System Preparation (Sysprep) and reboot into Windows PE.
Capture the installation to a Windows Imaging (WIM) file.
Turn off the virtual machine.
This step requires from 30 minutes to 2 hours, depending on the speed of the Hyper-V host and your
network's download speed. After some time, you will have a Windows 10 Enterprise x64 image that is
fully patched and has run through Sysprep. The image is located in the C:\MDTBuildLab\Captures folder
on SRV1. The file name is REFW10X64-001.wim .
Add a Windows 10 operating system image
1. Type the following commands at an elevated Windows PowerShell prompt on SRV1:
2. In the Configuration Manager console, in the Software Librar y workspace, expand Operating
Systems , right-click Operating System Images , and then click Add Operating System Image .
3. On the Data Source page, under Path:, type or browse to \\SRV1\Sources$\OSD\OS\Windows 10
Enterprise x64\REFW10X64-001.wim , and click Next .
4. On the General page, next to Name:, type Windows 10 Enterprise x64 , click Next twice, and then click
Close .
5. Distribute the operating system image to the SRV1 distribution point by right-clicking the Windows 10
Enterprise x64 operating system image and then clicking Distribute Content .
6. In the Distribute Content Wizard, click Next , click Add , click Distribution Point , add the
SRV1.CONTOSO.COM distribution point, click OK , click Next twice and then click Close .
7. Enter \Monitoring\Over view\Distribution Status\Content Status on the location bar (be sure there
is no space at the end of the location or you will get an error), click Windows 10 Enterprise x64 , and
monitor the status of content distribution until it is successful and no longer in progress. Refresh the view
with the F5 key or by right-clicking Windows 10 Enterprise x64 and clicking Refresh . Processing of
the image on the site server can take several minutes.
If content distribution is not successful, verify that sufficient disk space is available.
1. In the Configuration Manager console, in the Software Librar y workspace expand Operating
Systems , right-click Task Sequences , and then click Create MDT Task Sequence .
2. On the Choose Template page, select the Client Task Sequence template and click Next .
3. On the General page, type Windows 10 Enterprise x64 under Task sequence name: and then click
Next .
4. On the Details page, enter the following settings:
Join a domain: contoso.com
Account: click Set
User name: contoso\CM_JD
Password: pass@word1
Confirm password: pass@word1
Click OK
Windows Settings
User name: Contoso
Organization name: Contoso
Product key: <blank>
Administrator Account: Enable the account and specify the local administrator password
Password: pass@word1
Confirm password: pass@word1
Click Next
5. On the Capture Settings page, accept the default settings and click Next .
6. On the Boot Image page, browse and select the Zero Touch WinPE x64 boot image package, click OK ,
and then click Next .
7. On the MDT Package page, select Create a new Microsoft Deployment Toolkit Files package , under
Package source folder to be created (UNC Path):, type \\SRV1\Sources$\OSD\MDT\MDT (MDT
is repeated here, not a typo), and then click Next .
8. On the MDT Details page, next to Name: type MDT and then click Next .
9. On the OS Image page, browse and select the Windows 10 Enterprise x64 package, click OK , and then
click Next .
10. On the Deployment Method page, accept the default settings for Zero Touch Installation and click
Next .
11. On the Client Package page, browse and select the Microsoft Corporation Configuration Manager
Client package , click OK , and then click Next .
12. On the USMT Package page, browse and select the Microsoft Corporation User State Migration
Tool for Windows 10.0.14393.0 package, click OK , and then click Next .
13. On the Settings Package page, select Create a new settings package , and under Package source
folder to be created (UNC Path):, type \\SRV1\Sources$\OSD\Settings\Windows 10 x64
Settings , and then click Next .
14. On the Settings Details page, next to Name:, type Windows 10 x64 Settings , and click Next .
15. On the Sysprep Package page, click Next twice.
16. On the Confirmation page, click Finish .
Edit the task sequence
1. In the Configuration Manager console, in the Software Librar y workspace, click Task Sequences ,
right-click Windows 10 Enterprise x64 , and then click Edit .
2. Scroll down to the Install group and click the Set Variable for Drive Letter action.
3. Change the Value under OSDPreser veDriveLetter from False to True , and then click Apply .
4. In the State Restore group, click the Set Status 5 action, click Add in the upper left corner, point to
User State , and click Request State Store . This adds a new action immediately after Set Status 5 .
5. Configure the Request State Store action that was just added with the following settings:
Request state storage location to: Restore state from another computer
Select the If computer account fails to connect to state store, use the Network Access
account checkbox.
Options tab: Select the Continue on error checkbox.
Add Condition: Task Sequence Variable :
Variable: USMTLOCAL
Condition: not equals
Value: True
Click OK
Click Apply
6. In the State Restore group, click Restore User State , click Add , point to User State , and click Release
State Store .
7. Configure the Release State Store action that was just added with the following settings:
Options tab: Select the Continue on error checkbox.
Add Condition: Task Sequence Variable :
Variable: USMTLOCAL
Condition: not equals
Value: True
Click OK
Click OK
Finalize the operating system configuration
If you completed all procedures in Deploy Windows 10 in a test lab using Microsoft Deployment Toolkit then
the MDT deployment share is already present on SRV1. In this case, skip the first four steps below and begin
with step 5 to edit CustomSettings.ini.
1. In the MDT deployment workbench on SRV1, right-click Deployment Shares and then click New
Deployment Share .
2. Use the following settings for the New Deployment Share Wizard:
Deployment share path: C:\MDTProduction
Share name: MDTProduction$
Deployment share description: MDT Production
Options: click Next to accept the default
Summary: click Next
Progress: settings will be applied
Confirmation: click Finish
3. Right-click the MDT Production deployment share, and click Proper ties .
4. Click the Monitoring tab, select the Enable monitoring for this deployment share checkbox, and
then click OK .
5. Type the following command at an elevated Windows PowerShell prompt on SRV1:
6. Replace the contents of the file with the following text, and then save the file:
[Settings]
Priority=Default
Properties=OSDMigrateConfigFiles,OSDMigrateMode
[Default]
DoCapture=NO
ComputerBackupLocation=NONE
OSDMigrateMode=Advanced
OSDMigrateAdditionalCaptureOptions=/ue:*\* /ui:CONTOSO\*
OSDMigrateConfigFiles=Miguser.xml,Migapp.xml
SLSHARE=\\SRV1\Logs$
EventService=http://SRV1:9800
ApplyGPOPack=NO
As noted previously, if you wish to migrate accounts other than those in the Contoso domain, then
change the OSDMigrateAdditionalCaptureOptions option. For example, the following option will
capture settings from all user accounts:
OSDMigrateAdditionalCaptureOptions=/all
7. Return to the Configuration Manager console, and in the Software Library workspace, expand
Application Management , click Packages , right-click Windows 10 x64 Settings , and then click
Update Distribution Points . Click OK in the popup that appears.
8. In the Software Library workspace, expand Operating Systems , click Task Sequences , right-click
Windows 10 Enterprise x64 , and then click Distribute Content .
9. In the Distribute Content Wizard, click Next twice, click Add , click Distribution Point , select the
SRV1.CONTOSO.COM distribution point, click OK , click Next twice and then click Close .
10. Enter \Monitoring\Over view\Distribution Status\Content Status\Windows 10 Enterprise x64
on the location bar, double-click Windows 10 Enterprise x64 , and monitor the status of content
distribution until it is successful and no longer in progress. Refresh the view with the F5 key or by right-
clicking Windows 10 Enterprise x64 and clicking Refresh .
Create a deployment for the task sequence
1. In the Software Library workspace, expand Operating Systems , click Task Sequences , right-click
Windows 10 Enterprise x64 , and then click Deploy .
2. On the General page, next to Collection , click Browse , select the All Unknown Computers collection,
click OK , and then click Next .
3. On the Deployment Settings page, use the following settings:
Purpose: Available
Make available to the following: Only media and PXE
Click Next .
4. Click Next five times to accept defaults on the Scheduling, User Experience, Alerts, and Distribution Points
pages.
5. Click Close .
In the replace procedure, PC1 will not be migrated to a new operating system. It is simplest to perform this
procedure before performing the refresh procedure. After refreshing PC1, the operating system will be new. The
next (replace) procedure does not install a new operating system on PC1 but rather performs a side-by-side
migration of PC1 and another computer (PC4), to copy users and settings from PC1 to the new computer.
Create a replace task sequence
1. On SRV1, in the Configuration Manager console, in the Software Library workspace, expand Operating
Systems , right-click Task Sequences , and then click Create MDT Task Sequence .
2. On the Choose Template page, select Client Replace Task Sequence and click Next .
3. On the General page, type the following:
Task sequence name: Replace Task Sequence
Task sequence comments: USMT backup only
4. Click Next , and on the Boot Image page, browse and select the Zero Touch WinPE x64 boot image
package. Click OK and then click Next to continue.
5. On the MDT Package page, browse and select the MDT package. Click OK and then click Next to
continue.
6. On the USMT Package page, browse and select the Microsoft Corporation User State Migration
Tool for Windows package. Click OK and then click Next to continue.
7. On the Settings Package page, browse and select the Windows 10 x64 Settings package. Click OK and
then click Next to continue.
8. On the Summary page, review the details and then click Next .
9. On the Confirmation page, click Finish .
If an error is displayed at this stage it can be caused by a corrupt MDT integration. To repair it, close the
Configuration Manager console, remove MDT integration, and then restore MDT integration.
Deploy PC4
Create a VM named PC4 to receive the applications and settings from PC1. This VM represents a new computer
that will replace PC1. To create this VM, type the following commands at an elevated Windows PowerShell
prompt on the Hyper-V host:
New-VM –Name "PC4" –NewVHDPath "c:\vhd\pc4.vhdx" -NewVHDSizeBytes 60GB -SwitchName poc-internal -BootDevice
NetworkAdapter -Generation 2
Set-VMMemory -VMName "PC4" -DynamicMemoryEnabled $true -MinimumBytes 1024MB -MaximumBytes 2048MB -Buffer 20
Set-VMNetworkAdapter -VMName PC4 -StaticMacAddress 00-15-5D-83-26-FF
Hyper-V enables us to define a static MAC address on PC4. In a real-world scenario you must determine the
MAC address of the new computer.
3. On SRV1, in the Configuration Manager console, in the Administration workspace, expand Hierarchy
Configuration and click on Discover y Methods .
4. Double-click Active Director y System Discover y and on the General tab select the Enable Active
Director y System Discover y checkbox.
5. Click the yellow starburst, click Browse , select contoso\Computers , and then click OK three times.
6. When a popup dialog box asks if you want to run full discovery, click Yes .
7. In the Assets and Compliance workspace, click Devices and verify that the computer account names for
SRV1 and PC1 are displayed. See the following example (GREGLIN-PC1 is the computer account name of
PC1 in this example):
If you do not see the computer account for PC1, try clicking the Refresh button in the upper right corner of
the console.
The Client column indicates that the Configuration Manager client is not currently installed. This procedure will
be carried out next.
8. Sign in to PC1 using the contoso\administrator account and type the following at an elevated command
prompt to remove any pre-existing client configuration, if it exists. Note: this command requires an
elevated command prompt not an elevated Windows PowerShell prompt:
sc stop ccmsetup
"\\SRV1\c$\Program Files\Microsoft Configuration Manager\Client\CCMSetup.exe" /Uninstall
If PC1 still has Configuration Manager registry settings that were applied by Group Policy, startup
scripts, or other policies in its previous domain, these might not all be removed by CCMSetup
/Uninstall and can cause problems with installation or registration of the client in its new
environment. It might be necessary to manually remove these settings if they are present. For more
information, see Manual removal of the Configuration Manager client.
9. On PC1, temporarily stop Windows Update from queuing items for download and clear all BITS jobs from
the queue. From an elevated command prompt, type:
Verify that both services were stopped successfully, then type the following at an elevated command
prompt:
11. On PC1, using file explorer, open the C:\Windows\ccmsetup directory. During client installation, files
will be downloaded here.
12. Installation progress will be captured in the file: c:\windows\ccmsetup\logs\ccmsetup.log . You can
periodically open this file in notepad, or you can type the following command at an elevated Windows
PowerShell prompt to monitor installation progress:
Installation might require several minutes, and display of the log file will appear to hang while some
applications are installed. This is normal. When setup is complete, verify that CcmSetup is existing
with return code 0 is displayed on the last line of the ccmsetup.log file and then press CTRL-C to break
out of the Get-Content operation (if you are viewing the log in Windows PowerShell the last line will be
wrapped). A return code of 0 indicates that installation was successful and you should now see a
directory created at C:\Windows\CCM that contains files used in registration of the client with its site.
13. On PC1, open the Configuration Manager control panel applet by typing the following command from a
command prompt:
control smscfgrc
14. Click the Site tab, click Configure Settings , and click Find Site . The client will report that it has found
the PS1 site. See the following example:
If the client is not able to find the PS1 site, review any error messages that are displayed in
C:\Windows\CCM\Logs\ClientIDManagerStar tup.log and LocationSer vices.log . A common
reason the site code is not located is because a previous configuration exists. For example, if a previous
site code is configured at HKLM\SOFTWARE\Microsoft\SMS\Mobile
Client\GPRequestedSiteAssignmentCode this must be deleted or updated.
15. On SRV1, in the Assets and Compliance workspace, click Device Collections and then double-click All
Desktop and Ser ver Clients . This node will be added under Devices .
16. Click All Desktop and Ser ver Clients and verify that the computer account for PC1 is displayed here
with Yes and Active in the Client and Client Activity columns, respectively. You might have to refresh
the view and wait few minutes for the client to appear here. See the following example:
It might take several minutes for the client to fully register with the site and complete a client check.
When it is complete you will see a green check mark over the client icon as shown above. To refresh
the client, click it and then press F5 or right-click the client and click Refresh .
control smscfgrc
2. On the Actions tab, click Machine Policy Retrieval & Evaluation Cycle , click Run Now , click OK ,
and then click OK again. This is one method that can be used to run a task sequence in addition to the
Client Notification method that will be demonstrated in the computer refresh procedure.
3. Type the following at an elevated command prompt to open the Software Center:
C:\Windows\CCM\SCClient.exe
4. In the Software Center , click Available Software and then select the Replace Task Sequence
checkbox. See the following example:
If you do not see any available software, try running step #2 again to start the Machine Policy
Retrieval & Evaluation Cycle. You should see an alert that new software is available.
Start-VM PC4
vmconnect localhost PC4
2. In the Welcome to the Task Sequence Wizard , enter pass@word1 and click Next .
3. Choose the Windows 10 Enterprise X64 image.
4. Setup will install the operating system using the Windows 10 Enterprise x64 reference image, install the
configuration manager client, join PC4 to the domain, and restore users and settings from PC1.
5. Save checkpoints for all VMs if you wish to review their status at a later date. This is not required
(checkpoints do take up space on the Hyper-V host). Note: the next procedure will install a new OS on
PC1 update its status in Configuration Manager and in Active Directory as a Windows 10 device, so you
cannot return to a previous checkpoint only on the PC1 VM without a conflict. Therefore, if you do create
a checkpoint, you should do this for all VMs.
To save a checkpoint for all VMs, type the following commands at an elevated Windows PowerShell
prompt on the Hyper-V host:
The computer will restart several times during the installation process. Installation includes downloading
updates, reinstalling the Configuration Manager Client Agent, and restoring the user state. You can view
status of the installation in the Configuration Manager console by accessing the Monitoring workspace,
clicking Deployments , and then double-clicking the deployment associated with the Install Windows
10 Enterprise x64 collection. Under Asset Details , right-click the device and then click More Details .
Click the Status tab to see a list of tasks that have been performed. See the following example:
You can also monitor progress of the installation by using the MDT deployment workbench and viewing
the Monitoring node under Deployment Shares\MDT Production .
When installation has completed, sign in using the contoso\administrator account or the contoso\user1
account and verify that applications and settings have been successfully backed up and restored to your
new Windows 10 Enterprise operating system.
Related Topics
System Center 2012 Configuration Manager Survival Guide
Windows 10 deployment process posters
3/26/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
The following posters step through various options for deploying Windows 10 with Windows Autopilot or
Microsoft Endpoint Configuration Manager.
See also
Overview of Windows Autopilot
Scenarios to deploy enterprise operating systems with Configuration Manager
Create a deployment plan
3/26/2021 • 7 minutes to read • Edit Online
A "service management" mindset means that the devices in your organization fall into a continuum, with the
software update process being constantly planned, deployed, monitored, and optimized. And once you use this
process for feature updates, quality updates become a lightweight procedure that is simple and fast to execute,
ultimately increasing velocity.
When you move to a service management model, you need effective ways of rolling out updates to
representative groups of devices. We’ve found that a ring-based deployment works well for us at Microsoft and
many other organizations across the globe. Deployment rings in Windows 10 are similar to the deployment
groups most organizations constructed for previous major revision upgrades. They are simply a method to
separate devices into a deployment timeline.
At the highest level, each “ring” comprises a group of users or devices that receive a particular update
concurrently. For each ring, IT administrators set criteria to control deferral time or adoption (completion) that
should be met before deployment to the next broader ring of devices or users can occur.
A common ring structure uses three deployment groups:
Preview: Planning and development
Limited: Pilot and validation
Broad: Wide deployment
NOTE
Organizations often use different names for their “rings," for example:
First > Fast > Broad
Canaries > Early Adopters > Users
Preview > Broad > Critical
Preview ring
The purpose of the Preview ring is to evaluate the new features of the update. It's not for broad parts of the
organization but is limited to the people who are responsible for knowing what is coming next, generally IT
administrators. Ultimately, this phase is the time the design and planning work happens so that when the public
update is shipped, you can have greater confidence in the update.
NOTE
Being part of the Windows Insider Program gives you early access to Windows releases so that you can use Insider
Preview builds in your Preview ring to validate your apps and infrastructure, preparing you for public Windows releases.
IMPORTANT
If you are using Windows Insider (pre-release) releases for your preview ring and you are using WSUS or Windows Update
for Business, be sure to set the following policies to allow for Preview builds:
Manage Preview Builds: 2 - Enable preview builds • Under Branch Readiness Level, select When Preview
Builds and Feature Updates are Received: 4--Windows Insider Program Slow
Limited ring
The purpose of the Limited ring is to validate the update on representative devices across the network. During
this period, data, and feedback are generated to enable the decision to move forward to broader deployment.
Desktop Analytics can help with defining a good Limited ring of representative devices and assist in monitoring
the deployment.
Who goes in the Limited ring?
The most important part of this phase is finding a representative sample of devices and applications across your
network. If possible, all hardware and all applications should be represented, and it's important that the people
selected for this ring are using their devices regularly in order to generate the data you will need to make a
decision for broader deployment across your organization. The IT department, lab devices, and users with the
most cutting-edge hardware usually don’t have the applications or device drivers that are truly a representative
sample of your network.
During your pilot and validate phases, you should focus on the following activities:
Deploy new innovations.
Assess and act if issues are encountered.
Move forward unless blocked.
When you deploy to the Limited ring, you’ll be able to gather data and react to incidents happening in the
environment, quickly addressing any issues that might arise. Ensure you monitor for sufficient adoption within
this ring, because your Limited ring represents your organization across the board, and when you achieve
sufficient adoption, you can have confidence that your broader deployment will run more smoothly.
Broad deployment
Once the devices in the Limited ring have had a sufficient stabilization period, it’s time for broad deployment
across the network.
Who goes in the Broad deployment ring?
In most businesses, the Broad ring includes the rest of your organization. Because of the work in the previous
ring to vet stability and minimize disruption (with diagnostic data to support your decision) broad deployment
can occur relatively quickly.
NOTE
In some instances, you might hold back on mission critical devices (such as medical devices) until deployment in the Broad
ring is complete. Get best practices and recommendations for deploying Windows 10 feature updates to mission critical
devices.
During the broad deployment phase, you should focus on the following activities:
Deploy to all devices in the organization.
Work through any final unusual issues that were not detected in your Limited ring.
IMPORTANT
Desktop Analytics does not support preview (Windows Insider) builds; use Configuration Manager to deploy to your
Preview ring. As noted previously, the Preview ring is a small group of devices represents your ecosystem very well in
terms of app, driver, and hardware diversity.
Deployment plan options
There are two ways to implement a ring deployment plan, depending on how you manage your devices:
If you are using Configuration Manager: Desktop Analytics provides end-to-end deployment plan integration
so that you can also kick off phased deployments within a ring. Learn more about deployment plans in
Desktop Analytics.
If you are using Microsoft Intune, see Create deployment plans directly in Intune.
For more about Desktop Analytics, see these articles:
How to set up Desktop Analytics
Tutorial: Deploy Windows 10 to Pilot
Desktop Analytics documentation
Intune deployment planning, design, and implementation guide
Define readiness criteria
11/2/2020 • 4 minutes to read • Edit Online
It's the process manager's role to collect reports on remediation efforts, escalate failures, and to decide whether
your environment is ready for pilot deployment and then broad deployment.
This table sketches out one view of the other roles, with their responsibilities, relevant skills, and the deployment
phases where they are needed:
Process manager Manages the process end IT Service Management Plan, prepare, pilot
to end; ensures inputs and deployment, broad
outputs are captures; deployment
ensures that activities
progress
Application owner Define application test plan; Knowledge of critical and Plan, prepare, pilot
assign user acceptance important applications deployment
testers; certify the
application
Application developer Ensure apps are developed Application development; Plan, prepare
to stay compatible with application remediation
current Windows versions
End-user computing Typically a group including Bare-metal deployment; Plan, prepare, pilot
infrastructure engineers or infrastructure management; deployment, broad
deployment engineers who application delivery; update deployment
ensure upgrade tools are management
compatible with Windows
RO L E RESP O N SIB IL IT IES SK IL L S A C T IVE P H A SES
Security Review and approve the Platform security Prepare, pilot deployment
security baseline and tools
Stakeholders Represent groups affected Key decision maker for a Plan, pilot deployment,
by updates, for example, business unit or broad deployment
heads of finance, end-user department
services, or change
management
C L A SSIF IC AT IO N DEF IN IT IO N
Not important There is no impact on the business if these apps are not
available for a while.
Once you have classified your applications, you should agree what each classification means to the organization
in terms of priority and severity. This activity will help ensure that you can triage problems with the right level of
urgency. You should assign each app a time-based priority.
Here's an example priority rating system; the specifics could vary for your organization:
Related to priority, but distinct, is the concept of severity. You should define a severity ranking as well, based on
how you feel a problem with an app should affect the deployment cycle.
Here's an example:
SEVERIT Y EF F EC T
APP C L A SSIF IC AT IO N
Further, they might combine this classification with severity and priority rankings like this:
Before you deploy an update, it's best to assess your deployment infrastructure (that is, tools such as
Configuration Manager, Microsoft Intune, or similar) and current configurations (such as security baselines,
administrative templates, and policies that affect updates). Then, set some criteria to define your operational
readiness.
Infrastructure
Do your deployment tools need updates?
If you use Configuration Manager, is it on the Current Branch with the latest release installed. Being on this
branch ensures that it supports the next Windows 10 feature update. Configuration Manager releases are
supported for 18 months.
Using a cloud-based management tool like Microsoft Intune reduces support challenges, since no related
products need to be updated.
If you use a non-Microsoft tool, check with its product support to make sure you're using the current version
and that it supports the next Windows 10 feature update.
Rely on your experiences and data from previous deployments to help you judge how long infrastructure
changes take and identify any problems you've encountered while doing so.
Device settings
Make sure your security baseline, administrative templates, and policies have the right settings to support your
devices once the new Windows 10 update is installed.
Security baseline
Keep security baselines current to help ensure that your environment is secure and that new security feature in
the coming Windows 10 update are set properly.
Microsoft security baselines : You should implement security baselines from Microsoft. They are included
in the Security Compliance Toolkit, along with tools for managing them.
Industr y- or region-specific baselines : Your specific industry or region might have particular baselines
that you must follow per regulations. Ensure that any new baselines support the version of Windows 10 you
are about to deploy.
Configuration updates
There are a number of Windows policies (set by Group Policy, Intune, or other methods) that affect when
Windows updates are installed, deferral, end-user experience, and many other aspects. Check these policies to
make sure they are set appropriately.
Windows 10 Administrative templates : Each Windows 10 feature update has a supporting
Administrative template (.admx) file. Group Policy tools use Administrative template files to populate policy
settings in the user interface. The templates are available in the Download Center, for example, this one for
Windows 10, version 1909.
Policies for update compliance and end-user experience : A number of settings affect when a device
installs updates, whether and for how long a user can defer an update, restart behavior after installation, and
many other aspects of update behavior. It's especially important to look for existing policies that are out of
date or could conflict with new ones.
Tasks
Finally, you can begin to carry out the work needed to ensure your infrastructure and configuration can support
the update. To help you keep track, you can classify the work into the following overarching tasks:
Review infrastructure requirements : Go over the details of requirements to support the update, and
ensure they’ve all been defined.
Validate infrastructure against requirements : Compare your infrastructure against the requirements
that have been identified for the update.
Define infrastructure update plan : Detail how your infrastructure must change to support the update.
Review current suppor t volume : Understand the current support volume to understand how much of an
effect the update has when it’s been deployed.
Identify gaps that require attention : Identify issues that will need to be addressed to successfully deploy
the update. For example, will your infrastructure engineer have to research how a new feature that comes
with the update might affect the infrastructure?
Define operational update plan : Detail how your operational services and processes must change to
support the update.
Determine application readiness
3/26/2021 • 2 minutes to read • Edit Online
Before you deploy a Windows 10 update, you should know which apps will continue to work without problems,
which need their own updates, and which just won't work and must be replaced. If you haven't already, it's worth
[classifying your apps] with respect to their criticality in your organization.
Validation methods
You can choose from a variety of methods to validate apps. Exactly which ones to use will depend on the
specifics of your environment.
Full regression A full quality assurance probing. Staff who know the
application well and can validate its core functionality should
do this.
Smoke testing The application goes through formal validation. That is, a
user validates the application following a detailed plan,
ideally with limited, or no knowledge of the application
they’re validating.
Automated testing Software performs tests automatically. The software will let
you know whether the tests have passed or failed, and will
provide detailed reporting for you automatically.
Reactive response Applications are validated in late pilot, and no specific users
are selected. These applications normally aren't installed on
many devices and aren’t handled by enterprise application
distribution.
Combining the various validation methods with the app classifications you've previously established might look
like this:
Full regression x
Smoke testing x
Automated testing x x x
Test in pilot x x x
Identify users
Since your organization no doubt has a wide variety of users, each with different background and regular tasks,
you'll have to choose which users are best suited for validation testing. Some factors to consider include:
Location : If users are in different physical locations, can you support them and get validation feedback from
the region they're in?
Application knowledge : Do the users have appropriate knowledge of how the app is supposed to work?
Technical ability : Do the users have enough technical competence to provide useful feedback from various
test scenarios?
You could seek volunteers who enjoy working with new features and include them in the pilot deployment. You
might want to avoid using core users like department heads or project managers. Current application owners,
operations personnel, and developers can help you identify the most appropriate pilot users.
Identify and set up devices for validation
In addition to users, it's important to carefully choose devices to participate in app validation as well. For
example, ideally, your selection will include devices representing all of the hardware models in your
environment.
There is more than one way to choose devices for app validation:
Existing pilot devices : You might already have a list of devices that you regularly use for testing updates as
part of release cycles.
Manual selection : Some internal groups like operations will have expertise to help choose devices
manually based on specifications, usage, or records of past support problems.
Data-driven analysis : With appropriate tools, you can use diagnostic data from devices to inform your
choices.
Desktop Analytics
Desktop Analytics can make all of the tasks discussed in this article significantly easier:
Creating and maintaining an application and device inventory
Assign owners to applications for testing
Automatically apply your app classifications (critical, important, not important)
Automatically identify application compatibility risks and provide recommendations for reducing those risks
For more information, see What is Desktop Analytics?
Define update strategy with a calendar
3/5/2021 • 3 minutes to read • Edit Online
Traditionally, organizations treated the deployment of operating system updates (especially feature updates) as a
discrete project that had a beginning, a middle, and an end. A release was "built" (usually in the form of an
image) and then distributed to users and their devices.
Today, more organizations are treating deployment as a continual process of updates that roll out across the
organization in waves. In this approach, an update is plugged into this process and while it runs, you monitor for
anomalies, errors, or user impact and respond as issues arise--without interrupting the entire process. Microsoft
has been evolving its Windows 10 release cycles, update mechanisms, and relevant tools to support this model.
Feature updates are released twice per year, around March and September. All releases of Windows 10 have 18
months of servicing for all editions. Fall releases of the Enterprise and Education editions have an additional 12
months of servicing for specific Windows 10 releases, for a total of 30 months from initial release.
Though we encourage you to deploy every available release and maintain a fast cadence for some portion of
your environment, we also recognize that you might have a large number of devices, and a need for little or no
disruption, and so you might choose to update annually. The 18/30 month lifecycle cadence lets you allow some
portion of your environment to move faster while a majority can move less quickly.
Calendar approaches
You can use a calendar approach for either a faster twice-per-year cadence or an annual cadence. Depending on
company size, installing Windows 10 feature updates less often than once annually risks devices going out of
service and becoming vulnerable to security threats, because they will stop receiving the monthly security
updates.
Annual
Here's a calendar showing an example schedule that applies one Windows 10 feature update per calendar year,
aligned with Microsoft Endpoint Manager and Microsoft 365 Apps release cycles:
This approach provides approximately 12 months of use from each feature update before the next update is due
to be installed. By aligning to the Windows 10, version H2 feature update, each release will be serviced for 30
months from the time of availability, giving you more flexibility when applying future feature updates.
This cadence might be most suitable for you if any of these conditions apply:
You are just starting your journey with the Windows 10 servicing process. If you are unfamiliar with new
processes that support Windows 10 servicing, moving from a project happening once every three to five
years to a twice-a-year feature update process can be daunting. This approach gives you time to learn
new approaches and tools to reduce effort and cost.
You want to wait and see how successful other companies are at adopting a Windows 10 feature update.
You want to go quickly with feature updates, and want the ability to skip a feature update while keeping
Windows 10 serviced in case business priorities change. Aligning to the Windows 10 feature update
released in the second half of each calendar year, you get additional servicing for Windows 10 (30
months of servicing compared to 18 months).
Rapid
This calendar shows an example schedule that installs each feature update as it is released, twice per year:
Applies to
Windows 10
Looking for Group Policy objects? See Delivery Optimization reference or the master spreadsheet
available at the Download Center.
Windows updates, upgrades, and applications can contain packages with very large files. Downloading and
distributing updates can consume quite a bit of network resources on the devices receiving them. You can use
Delivery Optimization to reduce bandwidth consumption by sharing the work of downloading these packages
among multiple devices in your deployment. Delivery Optimization is a self-organizing distributed cache that
allows clients to download those packages from alternate sources (such as other peers on the network) in
addition to the traditional Internet-based servers. You can use Delivery Optimization with Windows Update,
Windows Server Update Services (WSUS), Windows Update for Business, or Microsoft Endpoint Manager (when
installation of Express Updates is enabled).
Delivery Optimization is a cloud-managed solution. Access to the Delivery Optimization cloud services is a
requirement. This means that in order to use the peer-to-peer functionality of Delivery Optimization, devices
must have access to the internet.
For information about setting up Delivery Optimization, including tips for the best settings in different scenarios,
see Set up Delivery Optimization for Windows 10 updates. For a comprehensive list of all Delivery Optimization
settings, see Delivery Optimization reference.
NOTE
WSUS can also use BranchCache for content sharing and caching. If Delivery Optimization is enabled on devices that use
BranchCache, Delivery Optimization will be used instead.
DEVIC E T Y P E M IN IM UM W IN DO W S VERSIO N
DO W N LO A D PA C K A GE M IN IM UM W IN DO W S VERSIO N
Microsoft 365 Apps and updates 1709 (for more information, see Delivery Optimization and
Microsoft 365 Apps)
NOTE
Starting with Configuration Manager version 1910, you can use Delivery Optimization for the distribution of all Windows
update content for clients running Windows 10 version 1709 or newer, not just express installation files. For more, see
Delivery Optimization starting in version 1910.
In Windows 10 Enterprise, Professional, and Education editions, Delivery Optimization is enabled by default for
peer-to-peer sharing on the local network (NAT). Specifically, all of the devices must be behind the same NAT,
but you can configure it differently in Group Policy and mobile device management (MDM) solutions such as
Microsoft Intune.
For more information, see "Download mode" in Delivery optimization reference.
Reference
For complete list of every possible Delivery Optimization setting, see Delivery Optimization reference.
Windows Update and Microsoft Store backend services and Windows Update and Microsoft Store payloads
http://*.windowsupdate.com
https://*.delivery.mp.microsoft.com
https://*.update.microsoft.com
https://tsfe.trafficshaping.dsp.mp.microsoft.com
For more information about remote work if you're using Configuration Manager, see this post on the
Configuration Manager blog.
How does Delivery Optimization handle networks where a public IP address is used in place of a private IP address?
Starting with Windows 10, version 1903 or later, Delivery Optimization no longer restricts connections between
LAN peers to those using private IP addresses. If you use public IP addresses instead of private IP addresses, you
can use Delivery Optimization in LAN mode.
NOTE
If you use public IP addresses instead of private in LAN mode, the bytes downloaded from or uploaded to LAN peers with
public IP addresses might be reported as coming from Internet peers.
Troubleshooting
This section summarizes common problems and some solutions to try.
If you don't see any bytes from peers
If you don't see any bytes coming from peers the cause might be one of the following issues:
Clients aren’t able to reach the Delivery Optimization cloud services.
The cloud service doesn’t see other peers on the network.
Clients aren’t able to connect to peers that are offered back from the cloud service.
None of the computers on the network are getting updates from peers.
Clients aren't able to reach the Delivery Optimization cloud services.
Try these steps:
1. Start a download of an app that is larger than 50 MB from the Store (for example "Candy Crush Saga").
2. Run Get-DeliveryOptimizationStatus from an elevated PowerShell window and observe the DownloadMode
setting. For peering to work, DownloadMode should be 1, 2, or 3.
3. If DownloadMode is 99, it could indicate your device is unable to reach the Delivery Optimization cloud
services. Ensure that the Delivery Optimization host names are allowed access: most importantly
*.do.dsp.mp.microsoft.com .
The cloud service doesn't see other peers on the network.
Try these steps:
1. Download the same app on two different devices on the same network, waiting 10 – 15 minutes between
downloads.
2. Run Get-DeliveryOptimizationStatus from an elevated PowerShell window and ensure that
DownloadMode is 1 or 2 on both devices.
3. Run Get-DeliveryOptimizationPerfSnap from an elevated PowerShell window on the second device. The
NumberOfPeers field should be non-zero.
4. If the number of peers is zero and you have DownloadMode = 1, ensure that both devices are using the
same public IP address to reach the internet. Open a browser Windows and search for “what is my IP”. You
can DownloadMode 2 (Group) and a custom GroupID (Guid) to fix this if the devices aren’t reporting the
same public IP address.
NOTE
Starting in Windows 10, version 2004, Get-DeliveryOptimizationStatus has a new option -PeerInfo which returns a
real-time list of the connected peers.
NOTE
You can also use Test-NetConnection instead of Telnet to run the test. Test-NetConnection -ComputerName
192.168.9.17 -Por t 7680
None of the computers on the network are getting updates from peers
Check Delivery Optimization settings that could limit participation in peer caching. Check whether the following
settings in assigned group policies, local group policies, or MDM policies are too restrictive:
Minimum RAM (inclusive) allowed to use peer caching
Minimum disk size allowed to use peer caching
Enable peer caching while the device connects using VPN.
Allow uploads when the device is on battery while under the set battery level
Learn more
Windows 10, Delivery Optimization, and WSUS
Related articles
Update Windows 10 in the enterprise
Overview of Windows as a service
Prepare servicing strategy for Windows 10 updates
Build deployment rings for Windows 10 updates
Assign devices to servicing channels for Windows 10 updates
Optimize update delivery for Windows 10 updates
Configure BranchCache for Windows 10 updates
Deploy updates using Windows Update for Business
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Deploy Windows 10 updates using Windows Server Update Services
Deploy Windows 10 updates using Microsoft Endpoint Configuration Manager
Manage device restarts after updates
Using a proxy with Delivery Optimization
3/26/2021 • 3 minutes to read • Edit Online
Applies to : Windows 10
When Delivery Optimization downloads content from HTTP sources, it uses the automatic proxy discovery
capability of WinHttp to streamline and maximize the support for complex proxy configurations as it makes
range requests from the content server. It does this by setting the
WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY flag in all HTTP calls.
Delivery Optimization provides a token to WinHttp that corresponds to the user that is signed in currently. In
turn, WinHttp automatically authenticates the user against the proxy server set either in Internet Explorer or in
the Proxy Settings menu in Windows.
For downloads that use Delivery Optimization to successfully use the proxy, you should set the proxy via
Windows Proxy Settings or the Internet Explorer proxy settings.
Setting the Internet Explorer proxy to apply device-wide will ensure that the device can access the proxy server
even when no user is signed in. In this case, the proxy is accessed with the “NetworkService” context if proxy
authentication is required.
NOTE
We don't recommend that you use netsh winhttp set proxy ProxyServerName:PortNumber . Using this offers no auto-
detection of the proxy, no support for an explicit PAC URL, and no authentication to the proxy. This setting is ignored by
WinHTTP for requests that use auto-discovery (if an interactive user token is used).
If a user is signed in, the system uses the Internet Explorer proxy.
If no user is signed in, even if both the Internet Explorer proxy and netsh configuration are set, the netsh
configuration will take precedence over the Internet Explorer proxy. This can result in download failures. For
example, you might receive HTTP_E_STATUS_PROXY_AUTH_REQ or HTTP_E_STATUS_DENIED errors.
You can still use netsh to import the proxy setting from Internet Explorer ( netsh winhttp import proxy source=ie
) if your proxy configuration is a static proxyServerName:Port. However, the same limitations mentioned
previously apply.
Summary of settings behavior
These tables summarize the behavior for various combinations of settings:
With an interactive user signed in:
netsh proxy No
Both Internet Explorer proxy (current user) and netsh proxy Yes, Internet Explorer proxy is used
N A M ED P RO XY SET B Y USIN G: DEL IVERY O P T IM IZ AT IO N SUC C ESSF UL LY USES P RO XY
Both Internet Explorer proxy (device-wide) and netsh proxy Yes, Internet Explorer proxy is used
With NetworkService (if unable to obtain a user token from a signed-in user):
Both Internet Explorer proxy (current user) and netsh proxy Yes, netsh proxy is used
Both Internet Explorer proxy (device-wide) and netsh proxy Yes, netsh proxy is used
Related articles
How can I configure Proxy AutoConfigURL Setting using Group Policy Preference (GPP)?
How to use GPP Registry to uncheck automatically detect settings?
How to configure a proxy server URL and Port using GPP Registry?
Best practices and recommendations for deploying
Windows 10 Feature updates to mission critical
devices
3/26/2021 • 2 minutes to read • Edit Online
Applies to : Windows 10
Managing an environment with devices that provide mission critical services 24 hours a day, 7 days a week, can
present challenges in keeping these devices current with Windows 10 feature updates. The processes that you
use to keep regular devices current with Windows 10 feature updates, often aren't the most effective to service
mission critical devices. This whitepaper will focus on the recommended approach of using the Microsoft
Endpoint Manager (current branch) software updates feature to deploy Windows 10 semi-annual feature
updates.
For simplicity, we will outline the steps to deploy a feature update manually. If you prefer an automated
approach, see Manage Windows as a service using Configuration Manager.
Devices and shared workstations that are online and available 24 hours a day, 7 days a week, can be serviced via
one of two primary methods:
Ser vice during maintenance windows – Devices that have established maintenance windows will need
to have feature updates scheduled to fit within these windows.
Ser vice only when manually initiated – Devices that need physical verification of the availability to
update will need to have updates manually initiated by a technician.
You can use Configuration Manager to deploy feature updates to Windows 10 devices in two ways. The first
option is to use the software updates feature. The second option is to use a task sequence to deploy feature
updates. There are times when deploying a Windows 10 feature update requires the use of a task sequence—for
example:
Upgrade to the next LTSC release. With the LTSC servicing branch, feature updates are never provided to
the Windows clients themselves. Instead, feature updates must be installed like a traditional in-place
upgrade.
Additional required tasks. When deploying a feature update requires additional steps (for example,
suspending disk encryption, updating applications), you can use task sequences to orchestrate the additional
steps. Software updates do not have the ability to add steps to their deployments.
Language pack installations. When deploying a feature update requires the installation of additional
language packs, you can use task sequences to orchestrate the installation. Software updates do not have the
ability to natively install language packs.
If you need to use a task sequence to deploy feature updates, see Manage Windows as a service using
Configuration Manager for more information. If you find that your requirement for a task sequence is based
solely on the need to run additional tasks performed pre-install or pre-commit, see the new run custom actions
functionality first introduced with Windows 10, version 1803. You might find this option useful in deploying
software updates.
Use the following information:
Deploy feature updates during maintenance windows
Deploy feature updates for user-initiated installations
Conclusion
Windows 10 deployment considerations
3/26/2021 • 4 minutes to read • Edit Online
Applies to
Windows 10
There are new deployment options in Windows 10 that help you simplify the deployment process and automate
migration of existing settings and applications.
For many years, organizations have deployed new versions of Windows using a “wipe and load” deployment
process. At a high level, this process captures existing data and settings from the existing device, deploys a new
custom-built Windows image to a PC, injects hardware drivers, reinstalls applications, and finally restores the
data and settings. With Windows 10, this process is still fully supported, and for some deployment scenarios is
still necessary.
Windows 10 also introduces two additional scenarios that organizations should consider:
In-place upgrade , which provides a simple, automated process that leverages the Windows setup
process to automatically upgrade from an earlier version of Windows. This process automatically
migrates existing data, settings, drivers, and applications.
Dynamic provisioning , which enables organizations to configure new Windows 10 devices for
organization use without having to deploy a new custom organization image to the device.
Both of these scenarios eliminate the image creation process altogether, which can greatly simplify the
deployment process.
So how do you choose? At a high level:
In-place upgrade When you want to keep all (or at least most)
existing applications
When you do not plan to significantly change the
device configuration (for example, BIOS to UEFI)
or operating system configuration (for example,
x86 to x64, language changes, Administrators to
non-Administrators, Active Directory domain
consolidations)
To migrate from Windows 10 to a later Windows
10 release
C O N SIDER . . . F O R T H ESE SC EN A RIO S
Stay up to date
For computers already running Windows 10 on the Semi-Annual Channel, new upgrades will be deployed two
times per year. You can deploy these upgrades by using a variety of methods:
Windows Update or Windows Update for Business, for devices where you want to receive updates directly
from the Internet.
Windows Server Update Services (WSUS), for devices configured to pull updates from internal servers after
they are approved (deploying like an update).
Configuration Manager task sequences.
Configuration Manager software update capabilities (deploying like an update).
These upgrades (which are installed differently than monthly updates) leverage an in-place upgrade process.
Unlike updates, which are relatively small, these upgrades will include a full operating system image (around 3
GB for 64-bit operating systems), which requires time (1-2 hours) and disk space (approximately 10 GB) to
complete. Ensure that the deployment method you use can support the required network bandwidth and/or
disk space requirements.
The upgrade process is also optimized to reduce the overall time and network bandwidth consumed.
Related topics
Windows 10 compatibility
Windows 10 infrastructure requirements
Windows 10 infrastructure requirements
3/26/2021 • 4 minutes to read • Edit Online
Applies to
Windows 10
There are specific infrastructure requirements to deploy and manage Windows 10 that should be in place prior
to significant Windows 10 deployments within your organization.
High-level requirements
For initial Windows 10 deployments, as well as subsequent Windows 10 upgrades, ensure that sufficient disk
space is available for distribution of the Windows 10 installation files (about 3 GB for Windows 10 x64 images,
slightly smaller for x86). Also, be sure to take into account the network impact of moving these large images to
each PC; you may need to leverage local server storage.
For persistent VDI environments, carefully consider the I/O impact from upgrading large numbers of PCs in a
short period of time. Ensure that upgrades are performed in smaller numbers, or during off-peak time periods.
(For pooled VDI environments, a better approach is to replace the base image with a new version.)
Deployment tools
The latest version of the Windows Assessment and Deployment Toolkit (ADK) is available for download here.
Significant enhancements in the ADK for Windows 10 include new runtime provisioning capabilities, which
leverage the Windows Imaging and Configuration Designer (Windows ICD), as well as updated versions of
existing deployment tools (DISM, USMT, Windows PE, and more).
The latest version of the Microsoft Deployment Toolkit (MDT) is available for download here.
For Configuration Manager, Windows 10 version specific support is offered with various releases.
For more details about Microsoft Endpoint Manager support for Windows 10, see Prepare for Zero Touch
Installation of Windows 10 with Configuration Manager.
Management tools
In addition to Microsoft Endpoint Configuration Manager, Windows 10 also leverages other tools for
management. For Windows Server and Active Directory, existing supported versions are fully supported for
Windows 10. New Group Policy templates will be needed to configure new settings available in Windows 10;
these templates are available in the Windows 10 media images, and are available as a separate download here.
See Group Policy settings reference for a list of the new and modified policy settings. If you are using a central
policy store, follow the steps outlined here to update the ADMX files stored in that central store.
No new Active Directory schema updates or specific functional levels are currently required for core
Windows 10 product functionality, although subsequent upgrades could require these to support new features.
Microsoft Desktop Optimization Pack (MDOP) has been updated to support Windows 10. The minimum
versions required to support Windows 10 are as follows:
P RO DUC T REQ UIRED VERSIO N
Microsoft BitLocker Administration and Monitoring (MBAM) MBAM 2.5 SP1 (2.5 is OK)
Activation
Windows 10 volume license editions of Windows 10 will continue to support all existing activation methods
(KMS, MAK, and AD-based activation). An update will be required for existing KMS servers:
Windows 10 None
Related topics
Windows 10 servicing options
Windows 10 deployment considerations
Windows 10 compatibility
Plan for volume activation
3/26/2021 • 18 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Looking for retail activation?
Get Help Activating Microsoft Windows
Product activation is the process of validating software with the manufacturer after it has been installed on a
specific computer. Activation confirms that the product is genuine—not a fraudulent copy—and that the product
key or serial number is valid and has not been compromised or revoked. Activation also establishes a link or
relationship between the product key and the particular installation.
During the activation process, information about the specific installation is examined. For online activations, this
information is sent to a server at Microsoft. This information may include the software version, the product key,
the IP address of the computer, and information about the device. The activation methods that Microsoft uses
are designed to help protect user privacy, and they cannot be used to track back to the computer or user. The
gathered data confirms that the software is a legally licensed copy, and this data is used for statistical analysis.
Microsoft does not use this information to identify or contact the user or the organization.
NOTE
The IP address is used only to verify the location of the request, because some editions of Windows (such as “Starter”
editions) can only be activated within certain geographical target markets.
Activation models
For a user or IT department, there are no significant choices about how to activate products that are acquired
through retail or OEM channels. The OEM performs the activation at the factory, and the user or the IT
department need take no activation steps.
With a retail product, the Volume Activation Management Tool (VAMT), which is discussed later in this guide,
helps you track and manage keys. For each retail activation, you can choose:
Online activation
Telephone activation
VAMT proxy activation
Telephone activation is primarily used in situations where a computer is isolated from all networks. VAMT proxy
activation (with retail keys) is sometimes used when an IT department wants to centralize retail activations or
when a computer with a retail version of the operating system is isolated from the Internet but connected to the
LAN. For volume-licensed products, however, you must determine the best method or combination of methods
to use in your environment. For Windows 10 Pro and Enterprise, you can choose from three models:
MAKs
KMS
Active Directory-based activation
Note Token-based activation is available for specific situations when approved customers rely on a public key
infrastructure in an isolated and high-security environment. For more information, contact your Microsoft
Account Team or your service representative. Token-based Activation option is available for Windows 10
Enterprise LTSB editions (Version 1507 and 1607).
Multiple activation key
A Multiple Activation Key (MAK) is commonly used in small- or mid-sized organizations that have a volume
licensing agreement, but they do not meet the requirements to operate a KMS or they prefer a simpler
approach. A MAK also allows permanent activation of computers that are isolated from the KMS or are part of
an isolated network that does not have enough computers to use the KMS.
To use a MAK, the computers to be activated must have a MAK installed. The MAK is used for one-time activation
with the Microsoft online hosted activation services, by telephone, or by using VAMT proxy activation. In the
simplest terms, a MAK acts like a retail key, except that a MAK is valid for activating multiple computers. Each
MAK can be used a specific number of times. The VAMT can assist in tracking the number of activations that
have been performed with each key and how many remain.
Organizations can download MAK and KMS keys from the Volume Licensing Service Center website. Each MAK
has a preset number of activations, which are based on a percentage of the count of licenses the organization
purchases; however, you can increase the number of activations that are available with your MAK by calling
Microsoft.
Key Management Service
With the Key Management Service (KMS), IT pros can complete activations on their local network, eliminating
the need for individual computers to connect to Microsoft for product activation. The KMS is a lightweight
service that does not require a dedicated system and can easily be cohosted on a system that provides other
services.
Volume editions of Windows 10 and Windows Server 2012 R2 (in addition to volume editions of operating
system editions since Windows Vista and Windows Server 2008) automatically connect to a system that hosts
the KMS to request activation. No action is required from the user.
The KMS requires a minimum number of computers (physical computers or virtual machines) in a network
environment. The organization must have at least five computers to activate Windows Server 2012 R2 and at
least 25 computers to activate client computers that are running Windows 10. These minimums are referred to
as activation thresholds.
Planning to use the KMS includes selecting the best location for the KMS host and how many KMS hosts to have.
One KMS host can handle a large number of activations, but organizations will often deploy two KMS hosts to
ensure availability. Only rarely will more than two KMS hosts be used. The KMS can be hosted on a client
computer or on a server, and it can be run on older versions of the operating system if proper configuration
steps are taken. Setting up your KMS is discussed later in this guide.
Active Directory-based activation
Active Directory-based activation is the newest type of volume activation, and it was introduced in Windows 8.
In many ways, Active Directory-based activation is similar to activation by using the KMS, but the activated
computer does not need to maintain periodic connectivity with the KMS host. Instead, a domain-joined
computer running Windows 10, Windows 8.1, Windows 8, Windows Server 2012 R2, or Windows
Server 2012 R2 queries AD DS for a volume activation object that is stored in the domain. The operating system
checks the digital signatures that are contained in the activation object, and then activates the device.
Active Directory-based activation allows enterprises to activate computers through a connection to their
domain. Many companies have computers at remote or branch locations, where it is impractical to connect to a
KMS, or would not reach the KMS activation threshold. Rather than use MAKs, Active Directory-based activation
provides a way to activate computers running Windows 10, Windows 8.1, Windows 8, Windows
Server 2012 R2, or Windows Server 2012 R2 as long as the computers can contact the company’s domain.
Active Directory-based activation offers the advantage of extending volume activation services everywhere you
already have a domain presence.
Number of computers in the core network that will connect KMS (central)
(directly or through a VPN) at least every 180 days
Note
The core network must meet the KMS activation
threshold.
Number of computers that do not have a retail volume Retail (online or phone)
license
Number of computers that do not have an OEM volume OEM (at factory)
license
See also
Volume Activation for Windows 10
Windows 10 features lifecycle
3/26/2021 • 2 minutes to read • Edit Online
Features removed
The following topic has details about features that have been removed from Windows 10.
Windows 10 features we removed
Terminology
The following terms can be used to describe the status that might be assigned to a feature during its lifecycle.
Deprecation : The stage of the product lifecycle when a feature or functionality is no longer in active
development and may be removed in future releases of a product or online service.
End of suppor t : The stage of the product lifecycle when support and servicing are no longer available for a
product.
Retirement : The stage of the product lifecycle when an service is shut down so that it is no longer available
for use.
Remove or retire a feature : The stage of the product lifecycle when a feature or functionality is removed
from a service after it has been deprecated.
Replace a feature : The stage of the product lifecycle when a feature or functionality in a service is replaced
with a different feature or functionality.
Also see
Windows 10 release information
Windows 10 features we’re no longer developing
5/25/2021 • 9 minutes to read • Edit Online
Each version of Windows 10 adds new features and functionality; occasionally we also remove features and
functionality, often because we've added a better option. Below are the details about the features and
functionalities that are no longer being developed in Windows 10. For information about features that have
been removed, see Features we removed.
The features described below are no longer being actively developed, and might be removed in a future update.
Some features have been replaced with other features or functionality and some are now available from other
sources.
The following list is subject to change and might not include ever y affected feature or
functionality.
NOTE
If you have feedback about the proposed replacement of any of these features, you can use the Feedback Hub app.
Internet Explorer (IE) 11 The IE11 desktop application will end 21H1
support for certain operating systems
starting June 15, 2022. For more
information, see Internet Explorer 11.
Language Community tab in Feedback The Language Community tab will be 1909
Hub removed from the Feedback Hub. The
standard feedback process: Feedback
Hub - Feedback is the recommended
way to provide translation feedback.
XDDM-based remote display driver Starting with this release, the Remote 1903
Desktop Services uses a Windows
Display Driver Model (WDDM) based
Indirect Display Driver (IDD) for a
single session remote desktop. The
support for Windows 2000 Display
Driver Model (XDDM) based remote
display drivers will be removed in a
future release. Independent Software
Vendors that use an XDDM-based
remote display driver should plan a
migration to the WDDM driver model.
For more information on implementing
remote display indirect display driver,
check out Updates for IddCx versions
1.4 and later.
Wi-Fi WEP and TKIP Since the 1903 release, a warning 1903
message has appeared when
connecting to Wi-Fi networks secured
with WEP or TKIP (which are not as
secure as those using WPA2 or WPA3).
In a future release, any connection to a
Wi-Fi network using these old ciphers
will be disallowed. Wi-Fi routers should
be updated to use AES ciphers,
available with WPA2 or WPA3.
Companion device dynamic lock APIS The companion device framework 1809
(CDF) APIs enable wearables and other
devices to unlock a PC. In Windows 10,
version 1709, we introduced Dynamic
Lock, including an inbox method using
Bluetooth to detect whether a user is
present and lock or unlock the PC.
Because of this, and because non-
Microsoft partners didn't adopt the
CDF method, we're no longer
developing CDF Dynamic Lock APIs.
Offline symbol packages (Debug We're no longer making the symbol 1803
symbol MSIs) packages available as a downloadable
MSI. Instead, the Microsoft Symbol
Server is moving to be an Azure-based
symbol store. If you need the Windows
symbols, connect to the Microsoft
Symbol Server to cache your symbols
locally or use a manifest file with
SymChk.exe on a computer with
internet access.
IPv4/6 Transition Technologies (6to4, 6to4 has been disabled by default 1803
ISATAP, Teredo, and Direct Tunnels) since Windows 10, version 1607 (the
Anniversary Update), ISATAP has been
disabled by default since Windows 10,
version 1703 (the Creators Update),
Teredo has been disabled since
Windows 10, version 1803, and Direct
Tunnels has always been disabled by
default. Please use native IPv6 support
instead.
RSA/AES Encryption for IIS We recommend that users use CNG 1709
encryption provider.
Sync your settings (updated: August Back-end changes: In future releases, 1709
17, 2017) the back-end storage for the current
sync process will change. A single
cloud storage system will be used for
Enterprise State Roaming and all other
users. The Sync your settings
options and the Enterprise State
Roaming feature will continue to work.
System Image Backup (SIB) Solution We recommend that users use full-disk 1709
backup solutions from other vendors.
Trusted Platform Module (TPM) Owner This functionality within TPM.msc will 1709
Password Management be migrated to a new user interface.
Trusted Platform Module (TPM) This functionality within TPM.msc will 1709
Remote Management be migrated to a new user interface.
Windows Hello for Business Windows Server 2016 Active Directory 1709
deployment that uses Microsoft Federation Services – Registration
Endpoint Manager Authority (ADFS RA) deployment is
simpler and provides a better user
experience and a more deterministic
certificate enrollment experience.
Tile Data Layer The Tile Data Layer database stopped 1703
development in Windows 10, version
1703.
IPsec Task Offload IPsec Task Offload versions 1 and 2 are 1703
no longer being developed and should
not be used.
wusa.exe /uninstall /kb:####### /quiet The wusa usage to quietly uninstall an 1507
update has been deprecated. The Applies to Windows Server 2016 and
uninstall command with /quiet switch Windows Server 2019 as well.
fails with event ID 8 in the Setup event
log. Uninstalling updates quietly could
be a security risk because malicious
software could quietly uninstall an
update in the background without
user intervention.
Features and functionality removed in Windows 10
5/18/2021 • 7 minutes to read • Edit Online
Each version of Windows 10 adds new features and functionality; occasionally we also remove features and
functionality, often because we've added a better option. Below are the details about the features and
functionalities that we removed in Windows 10. The list below is subject to change and might not
include ever y affected feature or functionality.
For information about features that might be removed in a future release, see Windows 10 features we’re no
longer developing.
NOTE
Join the Windows Insider program to get early access to new Windows 10 builds and test these changes yourself.
The following features and functionalities have been removed from the installed product image for Windows 10.
Applications or code that depend on these features won't function in the release when it was removed, or in
later releases.
XDDM-based remote display driver Support for Windows 2000 Display 21H1
Driver Model (XDDM) based remote
display drivers is removed in this
release. Independent Software Vendors
that use an XDDM-based remote
display driver should plan a migration
to the WDDM driver model. For more
information on implementing remote
display indirect display driver, see
Updates for IddCx versions 1.4 and
later.
Rinna and Japanese Address The Rinna and Japanese Address 2004
suggestion suggestion service for Microsoft
Japanese Input Method Editor (IME)
ended on August 13, 2020. For more
information, see Rinna and Japanese
Address suggestion will no longer be
offered
Mobile Plans and Messaging apps Both apps are still supported, but are 2004
now distributed in a different way.
OEMs can now include these apps in
Windows images for cellular enabled
devices. The apps are removed for
non-cellular devices.
Desktop messaging app doesn't offer The messaging app on Desktop has a 1903
messages sync sync feature that can be used to sync
SMS text messages received from
Windows Mobile and keep a copy of
them on the Desktop. The sync feature
has been removed from all devices.
Due to this change, you will only be
able to access messages from the
device that received the message.
Business Scanning, also called We're removing this secure scanning 1809
Distributed Scan Management (DSM) and scanner management capability -
there are no devices that support this
feature.
F EAT URE DETA IL S A N D M IT IGAT IO N REM O VED IN VERSIO N
People - Suggestions will no longer Manually save the contact details for 1803
include unsaved contacts for non- people you send mail to or get mail
Microsoft accounts from.
Language control in the Control Panel Use the Settings app to change your 1803
language settings.
F EAT URE DETA IL S A N D M IT IGAT IO N REM O VED IN VERSIO N
XPS Viewer We're changing the way you get XPS 1803
Viewer. In Windows 10, version 1709
and earlier versions, the app is
included in the installation image. If
you have XPS Viewer and you update
to Windows 10, version 1803, there's
no action required. You'll still have XPS
Viewer.
Enhanced Mitigation Experience Toolkit Use of this feature will be blocked. 1709
(EMET) Consider using Exploit Protection as a
replacement.
Resilient File System (ReFS) (added: Creation ability will be available in the 1709
August 17, 2017) following editions only: Windows 10
Enterprise and Windows 10 Pro for
Workstations. Creation ability will be
removed from all other editions. All
other editions will have Read and Write
ability.
By default, Flash autorun in Edge is Use the Click-to-Run (C2R) option 1703
turned off. instead. (This setting can be changed
by the user.)
Interactive Service Detection Service See Interactive Services for guidance 1703
on how to keep software up to date.
WSUS for Windows Mobile Updates are being transitioned to the 1703
new Unified Update Platform (UUP)
Prepare to deploy Windows
3/26/2021 • 7 minutes to read • Edit Online
Having worked through the activities in the planning phase, you should be in a good position to prepare your
environment and process to deploy Windows 10. The planning phase will have left you with these useful items:
A clear understanding of necessary personnel and their roles and criteria for rating app readiness
A plan for testing and validating apps
An assessment of your deployment infrastructure and definitions for operational readiness
A deployment plan that defines the rings you want to use
Now you're ready to actually start making changes in your environment to get ready to deploy.
P ROTO C O L EN DP O IN T URL
HTTP emdl.ws.microsoft.com
HTTP *.dl.delivery.mp.microsoft.com
HTTP *.windowsupdate.com
HTTPS *.delivery.mp.microsoft.com
NOTE
Be sure not to use HTTPS for those endpoints that specify HTTP, and vice versa. The connection will fail.
The specific endpoints can vary between Windows 10 versions. See, for example, Windows 10 2004 Enterprise
connection endpoints. Similar articles for other Windows 10 versions are available in the table of contents
nearby.
Optimize download bandwidth
Set up Delivery Optimization for peer network sharing or Microsoft Connected Cache.
Address unhealthy devices
In the course of surveying your device population, either with Desktop Analytics or by some other means, you
might find devices that have systemic problems that could interfere with update installation. Now is the time to
fix those problems.
Low disk space: Quality updates require a minimum of 2 GB to successfully install. Feature updates
require between 8 GB and 15 GB depending upon the configuration. On Windows 10, version 1903 and
later you can proactively use the "reserved storage" feature (for wipe and loads, rebuilds, and new builds)
to avoid running out of disk space. If you find a group of devices that don't have enough disk space, you
can often resolve the problem by cleaning up log files and asking users to clean up data if necessary. A
good place to start is to delete the following files:
C:\Windows\temp
C:\Windows\cbstemp (though this file might be necessary to investigate update failures)
C:\Windows\WindowsUpdate.log (though this file might be necessary to investigate update failures)
C:\Windows.Old (these files should automatically clean up after 10 days or might ask the device user
for permission to clean up sooner when constrained for disk space)
You can also create and run scripts to perform additional cleanup actions on devices, with administrative rights,
or use Group Policy settings.
Clean up the Windows Store Cache by running C:\Windows\sytem32\wsreset.exe.
Optimize the WinSxS folder on the client machine by using Dism.exe /online /Cleanup-Image
/Star tComponentCleanup .
Compact the operating system by running Compact.exe /CompactOS:always .
Remove Windows Features on Demand that the user doesn't need. See Features on Demand for more
guidance.
Move Windows Known Folders to OneDrive. See Use Group Policy to control OneDrive sync settings for
more information.
Clean up the Software Distribution folder. Try deploying these commands as a batch file to run on devices
to reset the download state of Windows Updates:
Application and driver updates: Out-of-date app or driver software can prevent devices from
updating successfully. Desktop Analytics will help you identify drivers and applications that need
attention. You can also check for known issues in order to take any appropriate action. Deploy any
updates from the vendor(s) for any problematic application or driver versions to resolve issues.
Corruption: In rare circumstances, a device that has repeated installation errors might be corrupted in a
way that prevents the system from applying a new update. You might have to repair the Component-
Based Store from another source. You can fix the problem with the System File Checker.
Prepare capability
In the plan phase, you determined the specific infrastructure and configuration changes that needed to be
implemented to add new capabilities to the environment. Now you can move on to implementing those
changes defined in the plan phase. You'll need to complete these higher-level tasks to gain those new
capabilities:
Enable capabilities across the environment by implementing the changes. For example, implement
updates to relevant ADMX templates in Active Directory. New Windows versions will come with new
policies that you use to update ADMX templates.
Validate new changes to understand how they affect the wider environment.
Remediate any potential problems that have been identified through validation.
Prepare users
Users often feel like they are forced into updating their devices randomly. They often don't fully understand why
an update is needed, and they don't know when updates would be applied to their devices ahead of time. It's
best to ensure that upcoming updates are communicated clearly and with adequate warning.
You can employ a variety of measures to achieve this goal, for example:
Send overview email about the update and how it will be deployed to the entire organization.
Send personalized emails to users about the update with specific details.
Set an opt-out deadline for employees that need to remain on the current version for a bit longer, due to a
business need.
Provide the ability to voluntarily update at users’ convenience.
Inform users of a mandatory installation date when the update will be installed on all devices.
Policies for update compliance, activity, and end-
user experience
3/26/2021 • 11 minutes to read • Edit Online
Keeping devices up to date is the best way to keep them working smoothly and securely.
IMPORTANT
If you use the new Specify deadlines for automatic updates and restar ts setting in Windows 10, version 1903,
you must disable the older deadline policies because they could conflict.
Notifications are automatically presented to the user at appropriate times, and users can choose to be reminded
later, to reschedule, or to restart immediately, depending on how close the deadline is. We recommend that you
do not set any notification policies, because they are automatically configured with appropriate defaults. An
exception is if you have kiosks or digital signage.
While three days for quality updates and seven days for feature updates is our recommendation, you might
decide you want more or less, depending on your organization and its requirements, and this policy is
configurable down to a minimum of two days.
IMPORTANT
If the device is unable to reach the Internet, it can't determine when Microsoft published the update, so it won't be able to
enforce the deadline. Learn more about low activity devices.
Grace periods
You can set a period of days for Windows to find a minimally disruptive automatic restart time before the restart
is enforced. This is especially useful in cases where a user has been away for many days (for example, on
vacation) so that the device will not be forced to update immediately when the user returns.
We recommend you set the following:
Grace period, in days: 2
Once the deadline and grace period have passed, updates are applied automatically, and a restart occurs
regardless of active hours.
Let Windows choose when to restart
Windows can use user interactions to dynamically identify the least disruptive time for an automatic restart. To
take advantage of this feature, ensure ConfigureDeadlineNoAutoReboot is set to Disabled .
IMPORTANT
If you used the Configure Active Hours setting in previous versions of Windows 10, these options must be Disabled
in order to take advantage of intelligent active hours.
If you do set active hours, we recommend setting the following policies to Disabled in order to increase update
velocity:
Delay automatic reboot. While it’s possible to set the system to delay restarts for users who are logged in,
this might delay an update indefinitely if a user is always either logged in or shut down. Instead, we
recommend setting the following polices to Disabled :
Turn off auto-restar t during active hours
No auto-restar t with logged on users for scheduled automatic updates
Limit restart delays. By using compliance deadlines, your users will receive notifications that
updates will occur, so we recommend that you set this policy to Disabled , to allow compliance
deadlines to eliminate the user’s ability to delay a restart outside of compliance deadline settings.
Do not allow users to approve updates and reboots . Letting users approve or engage with the
update process outside of the deadline policies decreases update velocity and increases risk. These
policies should be set to Disabled :
Update/RequireUpdateApproval
Update/EngagedRestartDeadline
Update/EngagedRestartDeadlineForFeatureUpdates
Update/EngagedRestartSnoozeSchedule
Update/EngagedRestartSnoozeScheduleForFeatureUpdates
Update/EngagedRestartTransitionSchedule
Configure automatic update. By properly setting policies to configure automatic updates, you can
increase update velocity by having clients contact a Windows Server Update Services (WSUS) server so it
can manage them. We recommend that you set this policy to Disabled . However, if you need to provide
values, ensure that you set downloads to install automatically by setting the Group Policy to 4 . If you’re
using Microsoft Intune, setting the value to Reset to Default.
Allow auto Windows Update to download over metered networks . Since more and more devices
primarily use cellular data and do not have wi-fi access, consider allowing users to automatically
download updates from a metered network. Though the default setting does not allow download over a
metered network, setting this value to 1 can increase velocity by enabling users to get updates whether
they are connected to the internet or not, provided they have cellular service.
IMPORTANT
Older versions of Windows don't support intelligent active hours. If your device runs a version of Windows prior to
Windows 10, version 1903, we recommend setting the following policies:
Configure active hours. Starting with Windows 10, version 1703, you can specify a maximum active-hour range which
is counted from the active hours start time. We recommend setting this value to 10 .
Schedule update installation. In the Configure Automatic Updates settings, there are two ways to control a forced
restart after a specified installation time. If you use schedule update installation , do not enable both settings
because they will most likely conflict.
Specify automatic maintenance time . This setting lets you set broader maintenance windows for updates
and ensures that this schedule does not conflict with active hours. We recommend setting this value to 3
(corresponding to 3 AM). If 3:00 AM is in the middle of the work shift, pick another time that is at least a
couple hours before your scheduled work time begins.
Schedule the install time . This setting allows you to schedule an installation time for a restart. We do not
recommend you set this to Disabled as it could conflict with active hours.
Power policies
Devices must actually be available during non-active hours in order to an update. They can't do this if power
policies prevent them from waking up. In our organization, we strive to set a balance between security and eco-
friendly configurations. We recommend the following settings to achieve what we feel are the appropriate
tradeoffs:
To a user, a device is either on or off, but for Windows, there are states that will allow an update to occur (active)
and states that do not (inactive). Some states are considered active (sleep), but the user may think the device is
off. Also, there are power statuses (plugged in/battery) that Windows checks before starting an update.
You can override the default settings and prevent users from changing them in order to ensure that devices are
available for updates during non-active hours.
NOTE
One way to ensure that devices can install updates when you need them to is to educate your users to keep devices
plugged in during non-active hours. Even with the best policies, a device that isn't plugged in will not be updated, even in
sleep mode.
NOTE
This does not apply to devices that support Modern Standby (S0 Low Power Idle). You can check which system sleep state
(S3 or S0 Low Power Idle) a device supports by running powercfg /a at a command prompt. For more, see Powercfg
options.
The default timeout on devices that support traditional sleep is set to three hours. We recommend that you do
not reduce these policies in order to allow Windows Update the opportunity to restart the device before sending
it into hibernation:
Power/HibernateTimeoutOnBattery
Power/HibernateTimeoutPluggedIn
As administrators, you have set up and expect certain behaviors, so we expressly do not remove older policies
since they were set up for your particular use cases. However, if you set a new policy without disabling a similar
older policy, you could have conflicting behavior and updates might not perform as expected.
IMPORTANT
We sometimes find that administrators set devices to get both Group Policy settings and MDM settings from an MDM
server such as Microsoft Intune. Policy conflicts are handled differently, depending on how they are ultimately set up:
Windows updates: Group Policy settings take precedence over MDM.
Microsoft Intune: If you set different values for the same policy on two different groups, you will receive an alert and
neither policy will be set until the conflict is resolved. It is crucial that you disable conflicting policies in order for devices
in your organization to take updates as expected. For example, if a device is not reacting to your MDM policy changes,
check to see if a similar policy is set in Group Policy with a differing value. If you find that update velocity is not as high
as you expect or if some devices are slower than others, it might be time to clear all polices and settings and specify
only the recommended update policies. See the Policy and settings reference for a consolidated list of recommended
polices.
The following are policies that you might want to disable because they could decrease update velocity or there
are better policies to use that might conflict:
Defer Feature Updates Period in Days . For maximum update velocity, it's best to set this to 0 (no
deferral) so that the feature update can complete and monthly security updates will be offered again. Even if
there is an urgent quality update that must be quickly deployed, it is best to use Pause Feature Updates
rather than setting a deferral policy. You can choose a longer period if you don't want to stay up to date with
the latest feature update.
Defer Quality Updates Period in Days . To minimize risk and maximize update velocity, the maximum
time you might want to consider while evaluating the update with a different ring of devices is two to three
days.
Pause Feature Updates Star t Time . Set to Disabled unless there is a known issue requiring time for a
resolution.
Pause Quality Updates Star t Time . Set to Disabled unless there is a known issue requiring time for a
resolution.
Deadline No Auto Reboot . Default is Disabled – Set to 0 . We recommend that devices automatically try
to restart when an update is received. Windows uses user interactions to dynamically identify the least
disruptive time to restart.
There are additional policies are no longer supported or have been superseded.
Update Baseline
6/15/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
NOTE
These scenarios (and the recommended settings for each) are not mutually exclusive. It's possible that your deployment
might involve more than one of these scenarios, in which case you can employ the related settings in any combination as
needed. In all cases, however, "download mode" is the most important one to set.
NOTE
Microsoft Intune includes a profile to make it easier to set Delivery Optimization policies. For details, see Delivery
Optimization settings for Intune.
Quick-reference table:
Sites with > 30 devices Minimum file size to cache 10 MB (or 1 MB) Leverage peers-to-peer
capability in more
downloads
USE C A SE P O L IC Y REC O M M EN DED VA L UE REA SO N
Large number of mobile Allow uploads on battery 60% Increase # of devices that
devices power can upload while limiting
battery drain
Labs with AC-powered Content Expiration 7 (up to 30) days Leverage devices that can
devices upload more for a longer
period
NOTE
For more about using Delivery Optimization with Configuration Manager boundary groups, see Delivery Optmization.
K EY VA L UE
PredefinedCallerApplication Indicates the last caller that initiated a request for the file.
ExpireOn The target expiration date and time for the file.
Disable-DeliveryOptimizationVerboseLogs
If Path is not specified, this cmdlet reads all logs from the DoSvc log directory, which requires administrator
permissions. If Flush is specified, the cmdlet stops DoSvc before reading logs.
Log entries are written to the PowerShell pipeline as objects. To dump logs to a text file, run
Get-DeliveryOptimizationLog | Set-Content <output file> or something similar.
Applies to
Windows 10
BranchCache is a bandwidth-optimization feature that has been available since the Windows Server 2008 R2
and Windows 7 operating systems. Each client has a cache and acts as an alternate source for content that
devices on its own network request. Windows Server Update Services (WSUS) and Microsoft Endpoint Manager
can use BranchCache to optimize network bandwidth during update deployment, and it's easy to configure for
either of them. BranchCache has two operating modes: Distributed Cache mode and Hosted Cache mode.
Distributed Cache mode operates like the Delivery Optimization feature in Windows 10: each client
contains a cached version of the BranchCache-enabled files it requests and acts as a distributed cache for
other clients requesting that same file.
TIP
Distributed Cache mode is preferred to Hosted Cache mode for Windows 10 updates to get the most benefit
from peer-to-peer distribution.
In Hosted Cache mode, designated servers at specific locations act as a cache for files requested by clients
in its area. Then, rather than clients retrieving files from a latent source, the hosted cache server provides
the content on its behalf.
For detailed information about how Distributed Cache mode and Hosted Cache mode work, see BranchCache
Overview.
NOTE
Configuration Manager only supports Distributed Cache mode.
Related topics
Update Windows 10 in the enterprise
Overview of Windows as a service
Prepare servicing strategy for Windows 10 updates
Build deployment rings for Windows 10 updates
Assign devices to servicing channels for Windows 10 updates
Optimize update delivery for Windows 10 updates
Configure Delivery Optimization for Windows 10 updates
Deploy updates using Windows Update for Business
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Deploy Windows 10 updates using Windows Server Update Services
Deploy Windows 10 updates using Configuration Manager
Manage device restarts after updates
Prepare for deployment with MDT
8/18/2021 • 9 minutes to read • Edit Online
Applies to
Windows 10
This article will walk you through the steps necessary to prepare your network and server infrastructure to
deploy Windows 10 with the Microsoft Deployment Toolkit (MDT). It covers the installation of the necessary
system prerequisites, the creation of shared folders and service accounts, and the configuration of security
permissions in the file system and in Active Directory.
Infrastructure
The procedures in this guide use the following names and infrastructure.
Network and servers
For the purposes of this topic, we will use three server computers: DC01 , MDT01 , and HV01 .
All servers are running Windows Server 2019.
You can use an earlier version of Windows Server with minor modifications to some procedures.
Note: Although MDT supports Windows Server 2008 R2, at least Windows Server 2012 R2 or later is
required to perform the procedures in this guide.
DC01 is a domain controller, DHCP server, and DNS server for contoso.com , representing the fictitious
Contoso Corporation.
MDT01 is a domain member server in contoso.com with a data (D:) drive that can store at least 200GB.
MDT01 will host deployment shares and run the Windows Deployment Service. Optionally, MDT01 is also a
WSUS server.
A second MDT server (MDT02 ) configured identically to MDT01 is optionally used to build a
distributed environment for Windows 10 deployment. This server is located on a different subnet than
MDT01 and has a different default gateway.
HV01 is a Hyper-V host computer that is used to build a Windows 10 reference image.
See Hyper-V requirements below for more information about HV01.
Client computers
Several client computers are referenced in this guide with hostnames of PC0001 to PC0007.
PC0001 : A computer running Windows 10 Enterprise x64, fully patched with the latest security updates, and
configured as a member in the contoso.com domain.
Client name: PC0001
IP Address: DHCP
PC0002 : A computer running Windows 7 SP1 Enterprise x64, fully patched with the latest security updates,
and configured as a member in the contoso.com domain. This computer is referenced during the migration
scenarios.
Client name: PC0002
IP Address: DHCP
PC0003 - PC0007 : These are other client computers similar to PC0001 and PC0002 that are used in this
guide and another guide for various scenarios. The device names are incremented for clarity within each
scenario. For example, PC0003 and PC0004 are running Windows 7 just like PC0002, but are used for
Configuration Manager refresh and replace scenarios, respectively.
Storage requirements
MDT01 and HV01 should have the ability to store up to 200 GB of files on a data drive (D:). If you use a
computer with a single system partition (C:), you will need to adjust some procedures in this guide to specify the
C: drive instead of the D: drive.
Hyper-V requirements
If you do not have access to a Hyper-V server, you can install Hyper-V on a Windows 10 or Windows 8.1
computer temporarily to use for building reference images. For instructions on how to enable Hyper-V on
Windows 10, see the Verify support and install Hyper-V section in the Windows 10 deployment test lab guide.
This guide is a proof-of-concept guide that has detailed instructions for installing Hyper-V.
Network requirements
All server and client computers referenced in this guide are on the same subnet. This is not required, but each
server and client computer must be able to connect to each other to share files, and to resolve all DNS names
and Active Directory information for the contoso.com domain. Internet connectivity is also required to download
OS and application updates.
Domain credentials
The following generic credentials are used in this guide. You should replace these credentials as they appear in
each procedure with your credentials.
Active Director y domain name : contoso.com
Domain administrator username : administrator
Domain administrator password : pass@word1
Organizational unit structure
The following OU structure is used in this guide. Instructions are provided below to help you create the required
OUs.
TIP
You might need to temporarily disable IE Enhanced Security Configuration for administrators in order to download files
from the Internet to the server. This setting can be disabled by using Server Manager (Local Server/Properties).
1. On MDT01 , ensure that you are signed in as an administrator in the CONTOSO domain.
For the purposes of this guide, we are using a Domain Admin account of administrator with a
password of pass@word1 . You can use your own administrator username and password as long as
you properly adjust all steps in this guide that use these login credentials.
2. Start the ADK Setup (D:\Downloads\ADK\adksetup.exe), click Next twice to accept the default installation
parameters, click Accept to accept the license agreement, and then on the Select the features you want
to install page accept the default list of features by clicking Install . This will install deployment tools and the
USMT. Verify that the installation completes successfully before moving to the next step.
3. Start the WinPE Setup (D:\Downloads\ADK\adkwinpesetup.exe), click Next twice to accept the default
installation parameters, click Accept to accept the license agreement, and then on the Select the features
you want to install page click Install . This will install Windows PE for x86, AMD64, ARM, and ARM64.
Verify that the installation completes successfully before moving to the next step.
4. Extract the WSIM 1903 update (D:\Downloads\ADK\WSIM1903.zip) and then run the UpdateWSIM.bat
file.
You can confirm that the update is applied by viewing properties of the ImageCat.exe and ImgMgr.exe
files at C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment
Kit\Deployment Tools\WSIM and verifying that the Details tab displays a File version of
10.0.18362.144 or later.
5. If you downloaded the optional MDT_KB4564442 patch for BIOS based deployment, see this support article
for instructions on how to install the patch.
To use the WSUS that you have installed on MDT01, you must also configure Group Policy on DC01 and
perform the neccessary post-installation configuration of WSUS on MDT01.
Install MDT
NOTE
MDT installation requires the following:
The Windows ADK for Windows 10 (installed in the previous procedure)
Windows PowerShell (version 5.1 is recommended; type $host to check)
Microsoft .NET Framework
On MDT01 :
1. Visit the MDT resource page and click Download MDT .
2. Save the MicrosoftDeploymentToolkit_x64.msi file to the D:\Downloads\MDT folder on MDT01.
Note : As of the publishing date for this guide, the current version of MDT is 8456 (6.3.8456.1000), but
a later version will also work.
3. Install MDT (D:\Downloads\MDT\MicrosoftDeploymentToolkit_x64.exe) with the default settings.
OUName,OUPath
Contoso,"DC=CONTOSO,DC=COM"
Accounts,"OU=Contoso,DC=CONTOSO,DC=COM"
Computers,"OU=Contoso,DC=CONTOSO,DC=COM"
Groups,"OU=Contoso,DC=CONTOSO,DC=COM"
Admins,"OU=Accounts,OU=Contoso,DC=CONTOSO,DC=COM"
Service Accounts,"OU=Accounts,OU=Contoso,DC=CONTOSO,DC=COM"
Users,"OU=Accounts,OU=Contoso,DC=CONTOSO,DC=COM"
Servers,"OU=Computers,OU=Contoso,DC=CONTOSO,DC=COM"
Workstations,"OU=Computers,OU=Contoso,DC=CONTOSO,DC=COM"
Security Groups,"OU=Groups,OU=Contoso,DC=CONTOSO,DC=COM"
Next, copy the following commands into a file and save it as ~\Setup\Scripts\ou.ps1 . Be sure that you are
viewing file extensions and that you save the file with the .ps1 extension.
Import-CSV -Path $home\Setup\Scripts\oulist.csv | ForEach-Object {
New-ADOrganizationalUnit -Name $_.ouname -Path $_.oupath
Write-Host -ForegroundColor Green "OU $($_.ouname) is created in the location $($_.oupath)"
}
Lastly, open an elevated Windows PowerShell prompt on DC01 and run the ou.ps1 script:
To use the Active Directory Users and Computers console (instead of PowerShell):
On DC01 :
1. Using the Active Directory Users and Computers console (dsa.msc), in the contoso.com domain level, create a
top-level OU named Contoso .
2. In the Contoso OU, create the following OUs:
a. Accounts
b. Computers
c. Groups
3. In the Contoso / Accounts OU, create the following underlying OUs:
a. Admins
b. Service Accounts
c. Users
4. In the Contoso / Computers OU, create the following underlying OUs:
a. Servers
b. Workstations
5. In the Contoso / Groups OU, create the following OU:
a. Security Groups
The final result of either method is shown below. The MDT_BA account will be created next.
Create the MDT service account
When creating a reference image, you need an account for MDT. The MDT build account is used for Windows
Preinstallation Environment (Windows PE) to connect to MDT01.
To create an MDT build account, open an elevated Windows PowerShell prompt on DC01 and enter the
following (copy and paste the entire command, taking care to notice the scroll bar at the bottom). This command
will create the MDT_BA user account and set the password to "pass@word1":
If you have the Active Directory Users and Computers console open you can refresh the view and see this new
account in the Contoso\Accounts\Ser vice Accounts OU as shown in the screenshot above.
Alternatively, CMTrace formatting makes the logs much easier to read. See the same log file below, opened in
CMTrace:
After installing the ConfigMgrTools.msi file, you can search for cmtrace and pin the tool to your taskbar for easy
access.
Next steps
When you have completed all the steps in this section to prepare for deployment, see Create a Windows 10
reference image.
Appendix
Sample files
The following sample files are also available to help automate some MDT deployment tasks. This guide does not
use these files, but they are made available here so you can see how some tasks can be automated with
Windows PowerShell.
Gather.ps1. This sample Windows PowerShell script performs the MDT Gather process in a simulated MDT
environment. This allows you to test the MDT gather process and check to see if it is working correctly
without performing a full Windows deployment.
Set-OUPermissions.ps1. This sample Windows PowerShell script creates a domain account and then
configures OU permissions to allow the account to join machines to the domain in the specified OU.
MDTSample.zip. This sample web service shows you how to configure a computer name dynamically using
MDT.
Prepare for Zero Touch Installation of Windows 10
with Configuration Manager
3/26/2021 • 14 minutes to read • Edit Online
Applies to
Windows 10
This topic will walk you through the Zero Touch Installation process of Windows 10 operating system
deployment (OSD) using Microsoft Endpoint Manager (ConfigMgr) integrated with Microsoft Deployment
Toolkit (MDT).
Prerequisites
In this topic, you will use components of an existing Configuration Manager infrastructure to prepare for
Windows 10 OSD. In addition to the base setup, the following configurations should be made in the
Configuration Manager environment:
Configuration Manager current branch + all security and critical updates are installed.
Note: Procedures in this guide use ConfigMgr 1910. For information about the version of Windows 10
supported by ConfigMgr, see Support for Windows 10.
The Active Directory Schema has been extended and System Management container created.
Active Directory Forest Discovery and Active Directory System Discovery are enabled.
IP range boundaries and a boundary group for content and site assignment have been created.
The Configuration Manager reporting services point role has been added and configured.
A file system folder structure and Configuration Manager console folder structure for packages has been
created. Steps to verify or create this folder structure are provided below.
The Windows ADK (including USMT) version 1903, Windows PE add-on, WSIM 1903 update, MDT version
8456, and DaRT 10 (part of MDOP 2015) are installed.
The CMTrace tool (cmtrace.exe) is installed on the distribution point.
Note: CMTrace is automatically installed with the current branch of Configuration Manager at
Program Files\Microsoft Configuration Manager\tools\cmtrace.exe . In previous releases of
ConfigMgr it was necessary to install the Configuration Manager Toolkit separately to get the CMTrace
tool, but this is no longer needed. Configuraton Manager version 1910 installs version 5.0.8913.1000
of the CMTrace tool.
For the purposes of this guide, we will use three server computers: DC01, CM01 and HV01.
DC01 is a domain controller and DNS server for the contoso.com domain. DHCP services are also available
and optionally installed on DC01 or another server.
CM01 is a domain member server and Configuration Manager software distribution point. In this guide
CM01 is a standalone primary site server.
HV01 is a Hyper-V host computer that is used to build a Windows 10 reference image. This computer does
not need to be a domain member.
All servers are running Windows Server 2019. However, an earlier, supported version of Windows Server can
also be used.
All server and client computers referenced in this guide are on the same subnet. This is not required, but each
server and client computer must be able to connect to each other to share files, and to resolve all DNS names
and Active Directory information for the contoso.com domain. Internet connectivity is also required to download
OS and application updates.
Domain credentials
The following generic credentials are used in this guide. You should replace these credentials as they appear in
each procedure with your credentials.
Active Director y domain name : contoso.com
Domain administrator username : administrator
Domain administrator password : pass@word1
On DC01 :
To create the OU structure, you can use the Active Directory Users and Computers console (dsa.msc), or you can
use Windows PowerShell. The procedure below uses Windows PowerShell.
To use Windows PowerShell, copy the following commands into a text file and save it as
C:\Setup\Scripts\ou.ps1 . Be sure that you are viewing file extensions and that you save the file with the .ps1
extension.
Next, copy the following list of OU names and paths into a text file and save it as C:\Setup\Scripts\oulist.txt
OUName,OUPath
Contoso,"DC=CONTOSO,DC=COM"
Accounts,"OU=Contoso,DC=CONTOSO,DC=COM"
Computers,"OU=Contoso,DC=CONTOSO,DC=COM"
Groups,"OU=Contoso,DC=CONTOSO,DC=COM"
Admins,"OU=Accounts,OU=Contoso,DC=CONTOSO,DC=COM"
Service Accounts,"OU=Accounts,OU=Contoso,DC=CONTOSO,DC=COM"
Users,"OU=Accounts,OU=Contoso,DC=CONTOSO,DC=COM"
Servers,"OU=Computers,OU=Contoso,DC=CONTOSO,DC=COM"
Workstations,"OU=Computers,OU=Contoso,DC=CONTOSO,DC=COM"
Security Groups,"OU=Groups,OU=Contoso,DC=CONTOSO,DC=COM"
Lastly, open an elevated Windows PowerShell prompt on DC01 and run the ou.ps1 script:
2. The Set-OUPermissions.ps1 script allows the CM_JD user account permissions to manage computer
accounts in the Contoso / Computers / Workstations OU. The following is a list of the permissions being
granted:
Scope: This object and all descendant objects
Create Computer objects
Delete Computer objects
Scope: Descendant Computer objects
Read All Properties
Write All Properties
Read Permissions
Modify Permissions
Change Password
Reset Password
Validated write to DNS host name
Validated write to service principal name
NOTE
In most production environments, the packages are stored on a Distributed File System (DFS) share or a "normal" server
share, but in a lab environment you can store them on the site server.
D:\Sources
D:\Sources\OSD
D:\Sources\OSD\Boot
D:\Sources\OSD\DriverPackages
D:\Sources\OSD\DriverSources
D:\Sources\OSD\MDT
D:\Sources\OSD\OS
D:\Sources\OSD\Settings
D:\Sources\OSD\Branding
D:\Sources\Software
D:\Sources\Software\Adobe
D:\Sources\Software\Microsoft
You can run the following commands from an elevated Windows PowerShell prompt to create this folder
structure:
We will also create the D:\Logs folder here which will be used later to support server-side logging.
NOTE
If you select Enable a PXE responder without Windows Deployment Ser vice , then WDS will not be
installed, or if it is already installed it will be suspended, and the ConfigMgr PXE Responder Ser vice (SccmPxe)
will be used instead of WDS. The ConfigMgr PXE Responder does not support multicast. For more information, see
Install and configure distribution points.
4. Using the CMTrace tool, review the C:\Program Files\Microsoft Configuration Manager\Logs\distmgr.log
file. Look for ConfigurePXE and CcmInstallPXE lines.
The distmgr.log displays a successful configuration of PXE on the distribution point.
5. Verify that you have seven files in each of the folders D:\RemoteInstall\SMSBoot\x86 and
D:\RemoteInstall\SMSBoot\x64 .
NOTE
MDT installation requires the following:
The Windows ADK for Windows 10 (installed in the previous procedure)
Windows PowerShell (version 5.1 is recommended; type $host to check)
Microsoft .NET Framework
[Settings]
Priority=Model
[HP EliteBook 8570w]
Packages001=PS100010:Install HP Hotkeys
The following settings instruct the task sequence to put laptops and desktops in different organizational
units (OUs) during deployment, assign different computer names, and finally have the task sequence
install the Cisco VPN client, but only if the machine is a laptop.
[Settings]
Priority= ByLaptopType, ByDesktopType
[ByLaptopType]
Subsection=Laptop-%IsLaptop%
[ByDesktopType]
Subsection=Desktop-%IsDesktop%
[Laptop-True]
Packages001=PS100012:Install Cisco VPN Client
OSDComputerName=LT-%SerialNumber%
MachineObjectOU=ou=laptops,ou=Contoso,dc=contoso,dc=com
[Desktop-True]
OSDComputerName=DT-%SerialNumber%
MachineObjectOU=ou=desktops,ou=Contoso,dc=contoso,dc=com
The Gather action in the task sequence is reading the rules.
MDT adds an operating system deployment simulation environment
When testing a deployment, it is important to be able to quickly test any changes you make to the deployment
without needing to run through an entire deployment. MDT rules can be tested very quickly, saving significant
testing time in a deployment project. For more information, see Configure MDT settings.
The folder that contains the rules, a few scripts from MDT, and a custom script (Gather.ps1).
MDT adds real-time monitoring
With MDT integration, you can follow your deployments in real time, and if you have access to Microsoft
Diagnostics and Recovery Toolkit (DaRT), you can even remote into Windows Preinstallation Environment
(Windows PE) during deployment. The real-time monitoring data can be viewed from within the MDT
Deployment Workbench, via a web browser, Windows PowerShell, the Event Viewer, or Microsoft Excel 2013. In
fact, any script or app that can read an Open Data (OData) feed can read the information.
Related topics
Create a custom Windows PE boot image with Configuration Manager
Add a Windows 10 operating system image using Configuration Manager
Create an application to deploy with Windows 10 using Configuration Manager
Add drivers to a Windows 10 deployment with Windows PE using Configuration Manager
Create a task sequence with Configuration Manager and MDT
Deploy Windows 10 using PXE and Configuration Manager
Refresh a Windows 7 SP1 client with Windows 10 using Configuration Manager
Replace a Windows 7 SP1 client with Windows 10 using Configuration Manager
Build deployment rings for Windows 10 updates
8/19/2021 • 3 minutes to read • Edit Online
Applies to
Windows 10
NOTE
We're in the process of updating this topic with more definitive guidance. In the meantime, see this post on the Windows
10 IT Pro blog for some great suggestions for a deployment ring structure.
For Windows as a service, maintenance is ongoing and iterative. Deploying previous versions of Windows
required organizations to build sets of users to roll out the changes in phases. Typically, these users ranged (in
order) from the most adaptable and least risky to the least adaptable or riskiest. With Windows 10, a similar
methodology exists, but construction of the groups is a little different.
Deployment rings in Windows 10 are similar to the deployment groups most organizations constructed for
previous major revision upgrades. They are simply a method by which to separate machines into a deployment
timeline. With Windows 10, you construct deployment rings a bit differently in each servicing tool, but the
concepts remain the same. Each deployment ring should reduce the risk of issues derived from the deployment
of the feature updates by gradually deploying the update to entire departments. As previously mentioned,
consider including a portion of each department’s employees in several deployment rings.
Defining deployment rings is generally a one-time event (or at least infrequent), but IT should revisit these
groups to ensure that the sequencing is still correct. Also, there are times in which client computers could move
between different deployment rings when necessary.
Table 1 provides an example of the deployment rings you might use.
Table 1
NOTE
In this example, there are no rings made up of the long-term servicing channel (LTSC). The LTSC does not receive feature
updates.
As Table 1 shows, each combination of servicing channel and deployment group is tied to a specific deployment
ring. As you can see, the associated groups of devices are combined with a servicing channel to specify which
deployment ring those devices and their users fall into. The naming convention used to identify the rings is
completely customizable as long as the name clearly identifies the sequence. Deployment rings represent a
sequential deployment timeline, regardless of the servicing channel they contain. Deployment rings will likely
rarely change for an organization, but they should be periodically assessed to ensure that the deployment
cadence still makes sense.
Related topics
Update Windows 10 in the enterprise
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Manage software updates in Intune
Walkthrough: use Intune to configure Windows Update for Business
Manage device restarts after updates
How to check Windows release health
7/28/2021 • 7 minutes to read • Edit Online
The Windows release health page in the Microsoft 365 admin center enables you to view the latest information
on known issues for Windows monthly and feature updates. A known issue is an issue that has been identified
in a Windows monthly update or feature update that impacts Windows devices. The Windows release health
page is designed to inform you about known issues so you can troubleshoot issues your users may be
experiencing and/or to determine when, and at what scale, to deploy an update in your organization.
If you are unable to sign in to the Microsoft 365 admin portal, check the Microsoft 365 service health status
page to check for known issues preventing you from logging into your tenant.
To be informed about the latest updates and releases, follow us on Twitter @WindowsUpdate.
NOTE
By default, the Windows release health page is available to individuals who have been assigned the global admin
or service administrator role for their tenant. To allow Exchange, SharePoint, and Skype for Business admins to
view the Windows release health page, you must first assign them to a Service admin role. For more information
about roles that can view service health, see About admin roles.
2. To view Windows release health in the Microsoft 365 Admin Center, go to Health > Windows release
health .
3. On the Windows release health page, you will have access to known issue information for all
supported versions of the Windows operating system.
The All versions tab (the default view) shows all Windows products with access to their posted known
issues.
A known issue is an issue that has been identified in a Windows monthly update or feature update that
impacts Windows devices. The Active and recently resolved column provides a link to the Known
issues tab filtered to the version selected. Selecting the Known issues tab will show known issues that
are active or resolved within the last 30 days.
The Histor y tab shows the history of known issues that have been resolved for up to 6 months.
The known issue summary provides the following information:
Title - A summary of the problem.
Version - The name of the affected Windows product version.
Status - The current status of the issue.
Originating KB - The KB number where the issue was first identified.
Originating build - The build number for the KB.
Select the Issue title to access more information, including a link to the history of all status updates
posted while we work on a solution. Here is an example:
Status definitions
In the Windows release health experience, every known issue is assigned as status. Those statuses are
defined as follows:
STAT US DEF IN IT IO N
Repor ted An issue has been brought to the attention of the Windows
teams. At this stage, there is no confirmation that users are
affected.
Investigating The issue is believed to affect users and efforts are underway
to gather more information about the issue’s scope of
impact, mitigation steps, and root cause.
Applies to
Windows 10
Windows Update for Business is a free service that is available for all premium editions including Windows 10
Pro, Enterprise, Pro for Workstation, and Education editions.
Windows Update for Business enables IT administrators to keep the Windows 10 devices in their organization
always up to date with the latest security defenses and Windows features by directly connecting these systems
to Windows Update service. You can use Group Policy or Mobile Device Management (MDM) solutions such as
Microsoft Intune to configure the Windows Update for Business settings that control how and when Windows
10 devices are updated.
Specifically, Windows Update for Business lets you control update offerings and experiences to allow for
reliability and performance testing on a subset of devices before deploying updates across the organization. It
also provides a positive update experience for people in your organization.
Offering
You can control when updates are applied, for example by deferring when an update is installed on a device or
by pausing updates for a certain period.
Manage when updates are offered
You can defer or pause the installation of updates for a set period of time.
Enroll in pre-release updates
The branch readiness level enables administrators to specify which channel of feature updates they want to
receive. Today there are branch readiness level options for both pre-release and released updates:
Windows Insider Fast
Windows Insider Slow
Windows Insider Release Preview
Semi-Annual Channel
Prior to Windows 10, version 1903, there are two channels for released updates: Semi-Annual Channel and
Semi-Annual Channel (Targeted). Deferral days are calculated against the release date of the chosen channel.
Starting with Windows 10, version 1903 there is only the one release channel: Semi-Annual Channel. All deferral
days are calculated against a release’s Semi-Annual Channel release date. For exact release dates, see Windows
Release Information. You can set the branch readiness level by using the Select when Preview Builds and
Feature Updates are Received policy. To use this policy to manage pre-release builds, first enable preview
builds by using the Manage preview Builds policy.
Defer an update
A Windows Update for Business administrator can defer the installation of both feature and quality updates
from deploying to devices within a bounded range of time from when those updates are first made available on
the Windows Update service. You can use this deferral to allow time to validate deployments as they are pushed
to devices. Deferrals work by allowing you to specify the number of days after an update is released before it is
offered to a device. That is, if you set a feature update deferral period of 365 days, the device will not install a
feature update that has been released for less than 365 days. To defer feature updates, use the Select when
Preview Builds and Feature Updates are Received policy.
Non-deferrable none
Pause an update
If you discover a problem while deploying a feature or quality update, the IT administrator can pause the update
for 35 days from a specified start date to prevent other devices from installing it until the issue is mitigated. If
you pause a feature update, quality updates are still offered to devices to ensure they stay secure. The pause
period for both feature and quality updates is calculated from a start date that you set.
To pause feature updates, use the Select when Preview Builds and Feature Updates are Received policy
and to pause quality updates use the Select when Quality Updates are Received policy. For more
information, see Pause feature updates and Pause quality updates.
Built-in benefits: When updating from Windows Update, you get the added benefits of built-in compatibility
checks to prevent against a poor update experience for your device as well as a check to prevent repeated
rollbacks.
Recommendations
For the best experience with Windows Update, follow these guidelines:
Use devices for at least 6 hours per month, including at least 2 hours of continuous use.
Keep devices regularly charged. Plugging in devices overnight enables them to automatically update outside
of active hours.
Make sure that devices have at least 10 GB of free space.
Give devices unobstructed access to the Windows Update service.
Manage the end-user experience when receiving Windows Updates
Windows Update for Business provides controls to help meet your organization’s security standards as well as
provide a great end-user experience. We do this by enabling you to set automatic updates at times that work
well for people in your organization and set deadlines for quality and feature updates. Because Windows Update
includes built-in intelligence, it's better to use fewer controls to manage the user experience.
Recommended experience settings
Features like the smart busy check (which ensure updates don't happen when a user is signed in) and active
hours help provide the best experience for end users while keeping devices more secure and up to date. Follow
these steps to take advantage of these features:
1. Automatically download, install, and restart (default if no restart policies are set up or enabled)
2. Use the default notifications
3. Set update deadlines
Se t t i n g d e a d l i n e s
A compliance deadline policy (released in June 2019) enables you to set separate deadlines and grace periods
for feature and quality updates.
This policy enables you to specify the number of days from an update's publication date that it must be installed
on the device. The policy also includes a configurable grace period that specifies the number of days from when
the update is installed on the device until the device is forced to restart. This approach is useful in a vacation
scenario as it allows, for example, users who have been away to have a bit of time before being forced to restart
their devices when they return from vacation.
Update Baseline
The large number of different policies offered for Windows 10 can be overwhelming. Update Baseline provides
a clear list of recommended Windows update policy settings for IT administrators who want the best user
experience while also meeting their update compliance goals. The Update Baseline for Windows 10 includes
policy settings recommendations covering deadline configuration, restart behavior, power policies, and more.
The Update Baseline toolkit makes it easy by providing a single command for IT Admins to apply the Update
Baseline to devices. You can get the Update Baseline toolkit from the Download Center.
NOTE
The Update Baseline toolkit is available only for Group Policy. Update Baseline does not affect your offering policies,
whether you’re using deferrals or target version to manage which updates are offered to your devices when.
Deploy Windows 10 updates using Windows Server
Update Services (WSUS)
8/19/2021 • 14 minutes to read • Edit Online
Applies to
Windows 10
IMPORTANT
Due to naming changes, older terms like CB and CBB might still be displayed in some of our products, such as in Group
Policy or the registry. If you encounter these terms, "CB" refers to the Semi-Annual Channel (Targeted)--which is no longer
used--while "CBB" refers to the Semi-Annual Channel.
WSUS is a Windows Server role available in the Windows Server operating systems. It provides a single hub for
Windows updates within an organization. WSUS allows companies not only to defer updates but also to
selectively approve them, choose when they’re delivered, and determine which individual devices or groups of
devices receive them. WSUS provides additional control over Windows Update for Business but does not
provide all the scheduling options and deployment flexibility that Microsoft Endpoint Manager provides.
When you choose WSUS as your source for Windows updates, you use Group Policy to point Windows 10 client
devices to the WSUS server for their updates. From there, updates are periodically downloaded to the WSUS
server and managed, approved, and deployed through the WSUS administration console or Group Policy,
streamlining enterprise update management. If you’re currently using WSUS to manage Windows updates in
your environment, you can continue to do so in Windows 10.
IMPORTANT
Both KB 3095113 and KB 3159706 are included in the Security Monthly Quality Rollup starting in July 2017. This
means you might not see KB 3095113 and KB 3159706 as installed updates since they might have been installed with a
rollup. However, if you need either of these updates, we recommend installing a Security Monthly Quality Rollup
released after October 2017 since they contain an additional WSUS update to decrease memory utilization on WSUS's
clientwebservice. If you have synced either of these updates prior to the security monthly quality rollup, you can
experience problems. To recover from this, see How to Delete Upgrades in WSUS.
WSUS scalability
To use WSUS to manage all Windows updates, some organizations may need access to WSUS from a perimeter
network, or they might have some other complex scenario. WSUS is highly scalable and configurable for
organizations of any size or site layout. For specific information about scaling WSUS, including upstream and
downstream server configuration, branch offices, WSUS load balancing, and other complex scenarios, see
Choose a Type of WSUS Deployment.
NOTE
In this example, the Configure Automatic Updates and Intranet Microsoft Update Ser vice Location
Group Policy settings are specified for the entire domain. This is not a requirement; you can target these settings
to any security group by using Security Filtering or a specific OU.
4. In the New GPO dialog box, name the new GPO WSUS – Auto Updates and Intranet Update
Ser vice Location .
5. Right-click the WSUS – Auto Updates and Intranet Update Ser vice Location GPO, and then click
Edit .
6. In the Group Policy Management Editor, go to Computer Configuration\Policies\Administrative
Templates\Windows Components\Windows Update.
7. Right-click the Configure Automatic Updates setting, and then click Edit .
8. In the Configure Automatic Updates dialog box, select Enable .
9. Under Options , from the Configure automatic updating list, select 3 - Auto download and notify
for install , and then click OK .
IMPORTANT
Use Regedit.exe to check that the following key is not enabled, because it can break Windows Store connectivity:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\DoNotConnectToWi
ndowsUpdateInternetLocations
NOTE
There are three other settings for automatic update download and installation dates and times. This is simply the
option this example uses. For more examples of how to control automatic updates and other related policies, see
Configure Automatic Updates by Using Group Policy.
10. Right-click the Specify intranet Microsoft update ser vice location setting, and then select Edit .
11. In the Specify intranet Microsoft update ser vice location dialog box, select Enable .
12. Under Options , in the Set the intranet update ser vice for detecting updates and Set the
intranet statistics ser ver options, type http://Your_WSUS_Ser ver_FQDN:Por tNumber , and then
select OK .
NOTE
The URL http://CONTOSO-WSUS1.contoso.com:8530 in the following image is just an example. In your
environment, be sure to use the server name and port number for your WSUS instance.
NOTE
The default HTTP port for WSUS is 8530, and the default HTTP over Secure Sockets Layer (HTTPS) port is 8531.
(The other options are 80 and 443; no other ports are supported.)
As Windows clients refresh their computer policies (the default Group Policy refresh setting is 90 minutes and
when a computer restarts), computers start to appear in WSUS. Now that clients are communicating with the
WSUS server, create the computer groups that align with your deployment rings.
You can use computer groups to target a subset of devices that have specific quality and feature updates. These
groups represent your deployment rings, as controlled by WSUS. You can populate the groups either manually
by using the WSUS Administration Console or automatically through Group Policy. Regardless of the method
you choose, you must first create the groups in the WSUS Administration Console.
To create computer groups in the WSUS Administration Console
1. Open the WSUS Administration Console.
2. Go to Server_Name\Computers\All Computers, and then click Add Computer Group .
3. Type Ring 2 Pilot Business Users for the name, and then click Add .
4. Repeat these steps for the Ring 3 Broad IT and Ring 4 Broad Business Users groups. When you’re
finished, there should be three deployment ring groups.
Now that the groups have been created, add the computers to the computer groups that align with the desired
deployment rings. You can do this through Group Policy or manually by using the WSUS Administration
Console.
3. In the Set Computer Group Membership dialog box, select the Ring 2 Pilot Business Users
deployment ring, and then click OK .
Because they were assigned to a group, the computers are no longer in the Unassigned Computers
group. If you select the Ring 2 Pilot Business Users computer group, you will see both computers
there.
Search for multiple computers to add to groups
Another way to add multiple computers to a deployment ring in the WSUS Administration Console is to use the
search feature.
To search for multiple computers
1. In the WSUS Administration Console, go to Server_Name\Computers\All Computers, right-click All
Computers , and then click Search .
2. In the search box, type WIN10 .
3. In the search results, select the computers, right-click the selection, and then click Change Membership .
NOTE
This option is exclusively either-or. When you enable WSUS to use Group Policy for group assignment, you can no
longer manually add computers through the WSUS Administration Console until you change the option back.
Now that WSUS is ready for client-side targeting, complete the following steps to use Group Policy to configure
client-side targeting:
To configure client-side targeting
TIP
When using client-side targeting, consider giving security groups the same names as your deployment rings. Doing so
simplifies the policy-creation process and helps ensure that you don’t add computers to the incorrect rings.
WARNING
The target group name must match the computer group name.
The next time the clients in the Ring 4 Broad Business Users security group receive their computer policy
and contact WSUS, they will be added to the Ring 4 Broad Business Users deployment ring.
NOTE
WSUS respects the client device's servicing branch. If you approve a feature update while it is still in one branch, such as
Insider Preview, WSUS will install the update only on devices that are in that servicing branch. When Microsoft releases
the build for Semi-Annual Channel, the devices in the Semi-Annual Channel will install it. Windows Update for Business
branch settings do not apply to feature updates through WSUS.
To configure an Automatic Approval rule for Windows 10 feature updates and approve them for
the Ring 3 Broad IT deployment ring
1. In the WSUS Administration Console, go to Update Services\Server_Name\Options, and then select
Automatic Approvals .
2. On the Update Rules tab, click New Rule .
3. In the Add Rule dialog box, select the When an update is in a specific classification , When an
update is in a specific product , and Set a deadline for the approval check boxes.
4. In the Edit the proper ties area, select any classification . Clear everything except Upgrades , and then
click OK .
5. In the Edit the proper ties area , click the any product link. Clear all check boxes except Windows 10 ,
and then click OK .
Windows 10 is under All Products\Microsoft\Windows.
6. In the Edit the proper ties area, click the all computers link. Clear all the computer group check boxes
except Ring 3 Broad IT , and then click OK .
7. Leave the deadline set for 7 days after the approval at 3:00 AM .
8. In the Step 3: Specify a name box, type Windows 10 Upgrade Auto-approval for Ring 3 Broad
IT , and then click OK .
Now, whenever Windows 10 feature updates are published to WSUS, they will automatically be approved for
the Ring 3 Broad IT deployment ring with an installation deadline of 1 week.
WARNING
The auto approval rule runs after synchronization occurs. This means that the next upgrade for each Windows 10 version
will be approved. If you select Run Rule , all possible updates that meet the criteria will be approved, potentially including
older updates that you don't actually want--which can be a problem when the download sizes are very large.
NOTE
If you approve more than one feature update for a computer, an error can result with the client. Approve only one feature
update per computer.
3. In the Approve Updates dialog box, from the Ring 4 Broad Business Users list, select Approved for
Install .
4. In the Approve Updates dialog box, from the Ring 4 Broad Business Users list, click Deadline , click
One Week , and then click OK .
5. If the Microsoft Software License Terms dialog box opens, click Accept .
If the deployment is successful, you should receive a successful progress report.
Related topics
Update Windows 10 in the enterprise
Overview of Windows as a service
Prepare servicing strategy for Windows 10 updates
Build deployment rings for Windows 10 updates
Assign devices to servicing channels for Windows 10 updates
Optimize update delivery for Windows 10 updates
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Deploy updates using Windows Update for Business
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Deploy Windows 10 updates using Microsoft Endpoint Configuration Manager
Manage device restarts after updates
Deploy Windows 10 using PXE and Configuration
Manager
3/26/2021 • 3 minutes to read • Edit Online
Applies to
Windows 10
In this topic, you will learn how to deploy Windows 10 using Microsoft Endpoint Manager deployment packages
and task sequences. This topic will walk you through the process of deploying the Windows 10 Enterprise image
to a Unified Extensible Firmware Interface (UEFI) computer named PC0001. An existing Configuration Manager
infrastructure that is integrated with MDT is used for the procedures in this topic.
This topic assumes that you have completed the following prerequisite procedures:
Prepare for Zero Touch Installation of Windows 10 with Configuration Manager
Create a custom Windows PE boot image with Configuration Manager
Add a Windows 10 operating system image using Configuration Manager
Create an application to deploy with Windows 10 using Configuration Manager
Add drivers to a Windows 10 deployment with Windows PE using Configuration Manager
Create a task sequence with Configuration Manager and MDT
Finalize the operating system configuration for Windows 10 deployment with Configuration Manager
For the purposes of this guide, we will use a minimum of two server computers (DC01 and CM01) and one
client computer (PC0001).
DC01 is a domain controller and DNS server for the contoso.com domain. DHCP services are also available
and optionally installed on DC01 or another server. Note: DHCP services are required for the client (PC0001)
to connect to the Windows Deployment Service (WDS).
CM01 is a domain member server and Configuration Manager software distribution point. In this guide
CM01 is a standalone primary site server.
CM01 is also running WDS which will be required to start PC0001 via PXE. Note : Ensure that only
CM01 is running WDS.
PC0001 is a client computer that is blank, or has an operating system that will be erased and replaced with
Windows 10. The device must be configured to boot from the network.
NOTE
If desired, PC0001 can be a VM hosted on the server HV01, which is a Hyper-V host computer that we used previously to
build a Windows 10 reference image. However, if PC0001 is a VM then you must ensure it has sufficient resources
available to run the Configuration Manager OSD task sequence. 2GB of RAM or more is recommended.
All servers are running Windows Server 2019. However, an earlier, supported version of Windows Server can
also be used.
All server and client computers referenced in this guide are on the same subnet. This is not required, but each
server and client computer must be able to connect to each other to share files, and to resolve all DNS names
and Active Directory information for the contoso.com domain. Internet connectivity is also required to download
OS and application updates.
NOTE
No WDS console configuration is required for PXE to work. Everything is done with the Configuration Manager console.
Procedures
1. Start the PC0001 computer. At the Pre-Boot Execution Environment (PXE) boot menu, press Enter to
allow it to PXE boot.
2. On the Welcome to the Task Sequence Wizard page, type in the password pass@word1 and click
Next .
3. On the Select a task sequence to run page, select Windows 10 Enterprise x64 RTM and click
Next .
4. On the Edit Task Sequence Variables page, double-click the OSDComputerName variable, and in
the Value field, type PC0001 and click OK . Then click Next .
5. The operating system deployment will take several minutes to complete.
6. You can monitor the deployment on CM01 using the MDT Deployment Workbench. When you see the
PC0001 entry, double-click PC0001 , and then click DaRT Remote Control and review the Remote
Control option. The task sequence will run and do the following:
Install the Windows 10 operating system.
Install the Configuration Manager client and the client hotfix.
Join the computer to the domain.
Install the application added to the task sequence.
NOTE
You also can use the built-in reports to get information about ongoing deployments. For example, a task
sequence report gives you a quick overview of the task sequence progress.
Related topics
Prepare for Zero Touch Installation of Windows 10 with Configuration Manager
Create a custom Windows PE boot image with Configuration Manager
Add a Windows 10 operating system image using Configuration Manager
Create an application to deploy with Windows 10 using Configuration Manager
Add drivers to a Windows 10 deployment with Windows PE using Configuration Manager
Create a task sequence with Configuration Manager and MDT
Refresh a Windows 7 SP1 client with Windows 10 using Configuration Manager
Replace a Windows 7 SP1 client with Windows 10 using Configuration Manager
Refresh a Windows 7 SP1 client with Windows 10
using Configuration Manager
3/26/2021 • 5 minutes to read • Edit Online
Applies to
Windows 10
This topic will show you how to refresh a Windows 7 SP1 client with Windows 10 using Configuration Manager
and Microsoft Deployment Toolkit (MDT). A computer refresh is not the same as an in-place upgrade. A
computer refresh involves storing user data and settings from the old installation, wiping the hard drives,
installing a new OS, and then restoring the user data at the end of the installation. Also see the MDT refesh
procedure: Refresh a Windows 7 computer with Windows 10.
A computer refresh with Configuration Manager works the same as it does with MDT Lite Touch installation.
Configuration Manager also uses the User State Migration Tool (USMT) from the Windows Assessment and
Deployment Kit (Windows ADK) 10 in the background. A computer refresh with Configuration Manager has the
following steps:
1. Data and settings are backed up locally in a backup folder.
2. The partition is wiped, except for the backup folder.
3. The new operating system image is applied.
4. Other applications are installed.
5. Data and settings are restored.
Infrastructure
An existing Configuration Manager infrastructure that is integrated with MDT is used for the following
procedures. For more information about the setup for this article, see Prepare for Zero Touch Installation of
Windows 10 with Configuration Manager.
For the purposes of this article, we will use one server computer (CM01) and one client computer (PC0003).
CM01 is a domain member server and Configuration Manager software distribution point. In this guide
CM01 is a standalone primary site server.
PC0003 is a domain member client computer running Windows 7 SP1, or a later version of Windows, with
the Configuration Manager client installed, that will be refreshed to Windows 10.
NOTE
If desired, PC0003 can be a VM hosted on the server HV01, which is a Hyper-V host computer that we used previously to
build a Windows 10 reference image. However, if PC0003 is a VM then you must ensure it has sufficient resources
available to run the Configuration Manager OSD task sequence. 2GB of RAM or more is recommended.
All servers are running Windows Server 2019. However, an earlier, supported version of Windows Server can
also be used.
All server and client computers referenced in this guide are on the same subnet. This is not required, but each
server and client computer must be able to connect to each other to share files, and to resolve all DNS names
and Active Directory information for the contoso.com domain. Internet connectivity is also required to download
OS and application updates.
IMPORTANT
This article assumes that you have configured Active Directory permissions in the specified OU for the CM_JD account,
and the client's Active Directory computer account is in the Contoso > Computers > Workstations OU. Use the
Active Directory Users and Computers console to review the location of computer objects and move them if needed.
NOTE
It may take a short while for the collection to refresh; you can view progress via the Colleval.log file. If you want to
speed up the process, you can manually update membership on the Install Windows 10 Enterprise x64 collection
by right-clicking the collection and selecting Update Membership.
NOTE
It is not necessary to make the deployment available to media and Pre-Boot Execution Environment (PXE) for a
computer refresh, but you will use the same deployment for bare-metal deployments later on and you will need it
at that point.
Scheduling
<default>
User Experience
<default>
Alerts
<default>
Distribution Points
<default>
Initiate a computer refresh
Now you can start the computer refresh on PC0003.
On CM01 :
1. Using the Configuration Manager console, in the Assets and Compliance workspace, click the Install
Windows 10 Enterprise x64 collection, right-click PC0003 , point to Client Notification , click
Download Computer Policy , and then click OK in the popup dialog box that appears.
On PC0003 :
1. Open the Software Center (click Start and type Software Center , or click the New software is available
balloon in the system tray), select Operating Systems and click the Windows 10 Enterprise x64 RTM
deployment, then click Install .
2. In the Software Center warning dialog box, click Install Operating System .
3. The client computer will run the Configuration Manager task sequence, boot into Windows PE, and install the
new OS and applications. See the following examples:
Next, see Replace a Windows 7 SP1 client with Windows 10 using Configuration Manager.
Related topics
Prepare for Zero Touch Installation of Windows 10 with Configuration Manager
Create a custom Windows PE boot image with Configuration Manager
Add a Windows 10 operating system image using Configuration Manager
Create an application to deploy with Windows 10 using Configuration Manager
Add drivers to a Windows 10 deployment with Windows PE using Configuration Manager
Create a task sequence with Configuration Manager and MDT
Deploy Windows 10 using PXE and Configuration Manager
Replace a Windows 7 SP1 client with Windows 10 using Configuration Manager
Replace a Windows 7 SP1 client with Windows 10
using Configuration Manager
3/26/2021 • 7 minutes to read • Edit Online
Applies to
Windows 10
In this topic, you will learn how to replace a Windows 7 SP1 computer using Microsoft Endpoint Configuration
Manager. This process is similar to refreshing a computer, but since you are replacing the device, you have to run
the backup job separately from the deployment of Windows 10.
In this topic, you will create a backup-only task sequence that you run on PC0004 (the device you are replacing),
deploy the PC0006 computer running Windows 10, and then restore this backup of PC0004 onto PC006. This is
similar to the MDT replace process: Replace a Windows 7 computer with a Windows 10 computer.
Infrastructure
An existing Configuration Manager infrastructure that is integrated with MDT is used for the following
procedures. For more information about the setup for this article, see Prepare for Zero Touch Installation of
Windows 10 with Configuration Manager.
For the purposes of this article, we will use one server computer (CM01) and two client computers (PC0004,
PC0006).
CM01 is a domain member server and Configuration Manager software distribution point. In this guide
CM01 is a standalone primary site server.
Important: CM01 must include the State migration point role for the replace task sequence used in
this article to work.
PC0004 is a domain member client computer running Windows 7 SP1, or a later version of Windows, with
the Configuration Manager client installed, that will be replaced.
PC0006 is a domain member client computer running Windows 10, with the Configuration Manager client
installed, that will replace PC0004.
NOTE
PC0004 and PC006 can be VMs hosted on the server HV01, which is a Hyper-V host computer that we used previously
to build a Windows 10 reference image. However, the VMs must have sufficient resources available to run the
Configuration Manager OSD task sequence. 2GB of RAM or more is recommended.
All servers are running Windows Server 2019. However, an earlier, supported version of Windows Server can
also be used.
All server and client computers referenced in this guide are on the same subnet. This is not required, but each
server and client computer must be able to connect to each other to share files, and to resolve all DNS names
and Active Directory information for the contoso.com domain. Internet connectivity is also required to download
OS and application updates.
IMPORTANT
This article assumes that you have configured Active Directory permissions in the specified OU for the CM_JD account,
and the client's Active Directory computer account is in the Contoso > Computers > Workstations OU. Use the
Active Directory Users and Computers console to review the location of computer objects and move them if needed.
NOTE
This task sequence has many fewer actions than the normal client task sequence. If it doesn't seem different, make
sure you selected the Client Replace Task Sequence template when creating the task sequence.
The backup-only task sequence (named Replace Task Sequence).
NOTE
You also can use the Client Notification option in the Configuration Manager console, as shown in Refresh a
Windows 7 SP1 client with Windows 10 using Configuration Manager.
3. Open the Software Center, select the Replace Task Sequence deployment and then click Install .
4. Confirm you want to upgrade the operating system on this computer by clicking Install again.
5. Allow the Replace Task Sequence to complete. The PC0004 computer will gather user data, boot into
Windows PE and gather more data, then boot back to the full OS. The entire process should only take a
few minutes.
NOTE
It may take a few minutes for the user state store location to be populated.
Related topics
Prepare for Zero Touch Installation of Windows 10 with Configuration Manager
Create a custom Windows PE boot image with Configuration Manager
Add a Windows 10 operating system image using Configuration Manager
Create an application to deploy with Windows 10 using Configuration Manager
Add drivers to a Windows 10 deployment with Windows PE using Configuration Manager
Create a task sequence with Configuration Manager and MDT
Deploy Windows 10 using PXE and Configuration Manager
Refresh a Windows 7 SP1 client with Windows 10 using Configuration Manager
Perform an in-place upgrade to Windows 10 using
Configuration Manager
7/19/2021 • 5 minutes to read • Edit Online
Applies to
Windows 10
The simplest path to upgrade PCs currently running Windows 7, Windows 8, or Windows 8.1 to Windows 10 is
through an in-place upgrade. You can use a Microsoft Endpoint Manager task sequence to completely automate
the process.
IMPORTANT
Beginning with Windows 10 and Windows Server 2016, Windows Defender is already installed. A management client for
Windows Defender is also installed automatically if the Configuration Manager client is installed. However, previous
Windows operating systems installed the System Center Endpoint Protection (SCEP) client with the Configuration
Manager client. The SCEP client can block in-place upgrade to Windows 10 due to incompatibility, and must be removed
from a device before performing an in-place upgrade to Windows 10.
Infrastructure
An existing Configuration Manager infrastructure that is integrated with MDT is used for the following
procedures. For more information about the setup for this article, see Prepare for Zero Touch Installation of
Windows 10 with Configuration Manager.
For the purposes of this article, we will use one server computer (CM01) and one client computers (PC0004).
CM01 is a domain member server and Configuration Manager software distribution point. In this guide
CM01 is a standalone primary site server.
PC0004 is a domain member client computer running Windows 7 SP1, or a later version of Windows, with
the Configuration Manager client installed, that will be upgraded to Windows 10.
All servers are running Windows Server 2019. However, an earlier, supported version of Windows Server can
also be used.
All server and client computers referenced in this guide are on the same subnet. This is not required, but each
server and client computer must be able to connect to each other to share files, and to resolve all DNS names
and Active Directory information for the contoso.com domain. Internet connectivity is also required to download
OS and application updates.
NOTE
You also can use the Client Notification option in the Configuration Manager console, as shown in Refresh a
Windows 7 SP1 client with Windows 10 using Configuration Manager.
3. Open the Software Center, select the Upgrade Task Sequence deployment and then click Install .
4. Confirm you want to upgrade the operating system on this computer by clicking Install again.
5. Allow the Upgrade Task Sequence to complete. The PC0004 computer will download the install.wim file,
perform an in-place upgrade, and install your added applications. See the following examples:
In-place upgrade with Configuration Manager
Related topics
Windows 10 deployment scenarios
Configuration Manager Team blog
Deploy a Windows 10 image using MDT
8/16/2021 • 28 minutes to read • Edit Online
Applies to
Windows 10
This topic will show you how to take your reference image for Windows 10 (that was just created), and deploy
that image to your environment using the Microsoft Deployment Toolkit (MDT).
We will prepare for this by creating an MDT deployment share that is used solely for image deployment.
Separating the processes of creating reference images from the processes used to deploy them in production
allows greater control of on both processes. We will configure Active Directory permissions, configure the
deployment share, create a new task sequence, and add applications, drivers, and rules.
For the purposes of this topic, we will use four computers: DC01, MDT01, HV01 and PC0005.
DC01 is a domain controller
MDT01 is a domain member server
HV01 is a Hyper-V server
PC0005 is a blank device to which we will deploy Windows 10
MDT01 and PC0005 are members of the domain contoso.com for the fictitious Contoso Corporation. HV01 used
to test deployment of PC0005 in a virtual environment.
NOTE
For details about the setup for the procedures in this article, please see Prepare for deployment with MDT.
3. Next, run the Set-OuPermissions script to apply permissions to the MDT_JD service account, enabling it
to manage computer accounts in the Contoso / Computers OU. Run the following commands from an
elevated Windows PowerShell prompt:
NOTE
The reason for adding the setup files has changed since earlier versions of MDT. MDT 2010 used the setup files to install
Windows. MDT uses DISM to apply the image; however, you still need the setup files because some components in roles
and features are stored outside the main image.
Step 4: Add an application
When you configure your MDT Build Lab deployment share, you can also add applications to the new
deployment share before creating your task sequence. This section walks you through the process of adding an
application to the MDT Production deployment share using Adobe Reader as an example.
Create the install: Adobe Reader DC
On MDT01 :
1. Download the Enterprise distribution version of Adobe Acrobat Reader DC
(AcroRdrDC2100520060_en_US.exe) to D:\setup\adobe on MDT01.
2. Extract the .exe file that you downloaded to an .msi (ex: .\AcroRdrDC2100520060_en_US.exe -
sfx_o"d:\setup\adobe\install" -sfx_ne).
3. In the Deployment Workbench, expand the MDT Production node and navigate to the Applications
node.
4. Right-click the Applications node, and create a new folder named Adobe .
5. In the Applications node, right-click the Adobe folder and select New Application .
6. On the Application Type page, select the Application with source files option and click Next .
7. On the Details page, in the Application Name text box, type Install - Adobe Reader and click Next*.
8. On the Source page, in the Source Director y text box, browse to D:\setup\adobe\install and click
Next .
9. On the Destination page, in the Specify the name of the director y that should be created text
box, type Install - Adobe Reader and click Next .
10. On the Command Details page, in the Command Line text box, type msiexec /i AcroRead.msi /q ,
click Next twice, and then click Finish .
The Adobe Reader application added to the Deployment Workbench.
NOTE
You should only add drivers to the Windows PE images if the default drivers don't work. Adding drivers that are not
necessary will only make the boot image larger and potentially delay the download time.
IMPORTANT
In the steps below, it is critical that the folder names used for various computer makes and models exactly match the
results of wmic computersystem get model,manufacturer on the target system.
NOTE
Even if you are not going to use both x86 and x64 boot images, we still recommend that you add the support structure
for future use.
Get-WmiObject -Class:Win32_ComputerSystem
If you want a more standardized naming convention, try the ModelAliasExit.vbs script from the Deployment
Guys blog post, entitled Using and Extending Model Aliases for Hardware Specific Application Installation.
NOTE
The configuration above indicates that MDT should only use drivers from the folder specified by the
DriverGroup001 property, which is defined by the "Choose a selection profile: Nothing" setting, and that
MDT should not use plug and play to determine which drivers to copy, which is defined by the "Install all
drivers from the selection profile" setting.
NOTE
The following instructions assume the device is online. If you're offline you can remove SLShare variable.
On MDT01 :
1. Right-click the MDT Production deployment share and select Proper ties .
2. Select the Rules tab and replace the existing rules with the following information (modify the domain
name, WSUS server, and administrative credentials to match your environment):
[Settings]
Priority=Default
[Default]
_SMSTSORGNAME=Contoso
OSInstall=YES
UserDataLocation=AUTO
TimeZoneName=Pacific Standard Time
AdminPassword=pass@word1
JoinDomain=contoso.com
DomainAdmin=CONTOSO\MDT_JD
DomainAdminPassword=pass@word1
MachineObjectOU=OU=Workstations,OU=Computers,OU=Contoso,DC=contoso,DC=com
SLShare=\\MDT01\Logs$
ScanStateArgs=/ue:*\* /ui:CONTOSO\*
USMTMigFiles001=MigApp.xml
USMTMigFiles002=MigUser.xml
HideShell=YES
ApplyGPOPack=NO
WSUSServer=mdt01.contoso.com:8530
SkipAppsOnUpgrade=NO
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerName=NO
SkipDomainMembership=YES
SkipUserData=YES
SkipLocaleSelection=YES
SkipTaskSequence=NO
SkipTimeZone=YES
SkipApplications=NO
SkipBitLocker=YES
SkipSummary=YES
SkipCapture=YES
SkipFinalSummary=NO
[Default]
DeployRoot=\\MDT01\MDTProduction$
UserDomain=CONTOSO
UserID=MDT_BA
UserPassword=pass@word1
SkipBDDWelcome=YES
4. On the Windows PE tab, in the Platform drop-down list, make sure x86 is selected.
5. On the General sub tab (still under the main Windows PE tab), configure the following settings:
In the Lite Touch Boot Image Settings area:
Image description: MDT Production x86
ISO file name: MDT Production x86.iso
NOTE
Because you are going to use Pre-Boot Execution Environment (PXE) later to deploy the machines, you do not
need the ISO file; however, we recommend creating ISO files because they are useful when troubleshooting
deployments and for quick tests.
6. On the Drivers and Patches sub tab, select the WinPE x86 selection profile and select the Include all
drivers from the selection profile option.
7. On the Windows PE tab, in the Platform drop-down list, select x64 .
8. On the General sub tab, configure the following settings:
In the Lite Touch Boot Image Settings area:
Image description: MDT Production x64
ISO file name: MDT Production x64.iso
9. In the Drivers and Patches sub tab, select the WinPE x64 selection profile and select the Include all
drivers from the selection profile option.
10. In the Monitoring tab, select the Enable monitoring for this deployment share check box.
11. Click OK .
NOTE
It will take a while for the Deployment Workbench to create the monitoring database and web service.
The Windows PE tab for the x64 boot image.
The rules explained
The rules for the MDT Production deployment share are somewhat different from those for the MDT Build Lab
deployment share. The biggest differences are that you deploy the machines into a domain instead of a
workgroup.
You can optionally remove the UserID and UserPassword entries from Bootstrap.ini so that users performing
PXE boot are prompted to provide credentials with permission to connect to the deployment share. Setting
SkipBDDWelcome=NO enables the welcome screen that displays options to run the deployment wizard, run
DaRT tools (if installed), exit to a Windows PE command prompt, set the keyboard layout, or configure a static IP
address. In this example we are skipping the welcome screen and providing credentials.
The Bootstrap.ini file
This is the MDT Production Bootstrap.ini:
[Settings]
Priority=Default
[Default]
DeployRoot=\\MDT01\MDTProduction$
UserDomain=CONTOSO
UserID=MDT_BA
UserPassword=pass@word1
SkipBDDWelcome=YES
[Default]
_SMSTSORGNAME=Contoso
OSInstall=Y
UserDataLocation=AUTO
TimeZoneName=Pacific Standard Time
AdminPassword=pass@word1
JoinDomain=contoso.com
DomainAdmin=CONTOSO\MDT_JD
DomainAdminPassword=pass@word1
MachineObjectOU=OU=Workstations,OU=Computers,OU=Contoso,DC=contoso,DC=com
SLShare=\\MDT01\Logs$
ScanStateArgs=/ue:*\* /ui:CONTOSO\*
USMTMigFiles001=MigApp.xml
USMTMigFiles002=MigUser.xml
HideShell=YES
ApplyGPOPack=NO
WSUSServer=http://mdt01.contoso.com:8530
SkipAppsOnUpgrade=NO
SkipAdminPassword=YES
SkipProductKey=YES
SkipComputerName=NO
SkipDomainMembership=YES
SkipUserData=YES
SkipLocaleSelection=YES
SkipTaskSequence=NO
SkipTimeZone=YES
SkipApplications=NO
SkipBitLocker=YES
SkipSummary=YES
SkipCapture=YES
SkipFinalSummary=NO
EventService=http://MDT01:9800
Some properties to use in the MDT Production rules file are as follows:
JoinDomain. The domain to join.
DomainAdmin. The account to use when joining the machine to the domain.
DomainAdminDomain. The domain for the join domain account.
DomainAdminPassword. The password for the join domain account.
MachineObjectOU. The organizational unit (OU) to which to add the computer account.
ScanStateArgs. Arguments for the User State Migration Tool (USMT) ScanState command.
USMTMigFiles(*). List of USMT templates (controlling what to backup and restore).
EventSer vice. Activates logging information to the MDT monitoring web service.
Optional deployment share configuration
If your organization has a Microsoft Software Assurance agreement, you also can subscribe to the additional
Microsoft Desktop Optimization Package (MDOP) license (at an additional cost). Included in MDOP is Microsoft
Diagnostics and Recovery Toolkit (DaRT), which contains tools that can help you troubleshoot MDT deployments,
as well as troubleshoot Windows itself.
Add DaRT 10 to the boot images
If you have licensing for MDOP and DaRT, you can add DaRT to the boot images using the steps in this section. If
you do not have DaRT licensing, or don't want to use it, simply skip to the next section, Update the Deployment
Share. To enable the remote connection feature in MDT, you need to do the following:
NOTE
DaRT 10 is part of MDOP 2015.
MDOP might be available as a download from your Visual Studio subscription. When searching, be sure to look for
Desktop Optimization Pack .
On MDT01 :
1. Download MDOP 2015 and copy the DaRT 10 installer file to the D:\Setup\DaRT 10 folder on MDT01
(DaRT\DaRT 10\Installers\<lang>\x64\MSDaRT100.msi).
2. Install DaRT 10 (MSDaRT10.msi) using the default settings.
3. Copy the two tools CAB files from C:\Program Files\Microsoft DaRT\v10 (Toolsx86.cab and
Toolsx64.cab ) to the production deployment share at D:\MDTProduction\Tools\x86 and
D:\MDTProduction\Tools\x64 , respectively.
4. In the Deployment Workbench, right-click the MDT Production deployment share and select
Proper ties .
5. On the Windows PE tab, in the Platform drop-down list, make sure x86 is selected.
6. On the Features sub tab, select the Microsoft Diagnostics and Recover y Toolkit (DaRT) checkbox.
Selecting the DaRT 10 feature in the deployment share.
7. In the Windows PE tab, in the Platform drop-down list, select x64 .
8. In the Features sub tab, in addition to the default selected feature pack, select the Microsoft
Diagnostics and Recover y Toolkit (DaRT) check box.
9. Click OK .
Update the deployment share
Like the MDT Build Lab deployment share, the MDT Production deployment share needs to be updated after it
has been configured. This is the process during which the Windows PE boot images are created.
1. Right-click the MDT Production deployment share and select Update Deployment Share .
2. Use the default options for the Update Deployment Share Wizard.
NOTE
The update process will take 5 to 10 minutes.
Multicast deployments
Multicast deployment allows for image deployment with reduced network load during simultaneous
deployments. Multicast is a useful operating system deployment feature in MDT deployments, however it is
important to ensure that your network supports it and is designed for it. If you have a limited number of
simultaneous deployments, you probably do not need to enable multicast.
Requirements
Multicast requires that Windows Deployment Services (WDS) is running on Windows Server 2008 or later. In
addition to the core MDT setup for multicast, the network needs to be configured to support multicast. In
general, this means involving the organization networking team to make sure that Internet Group Management
Protocol (IGMP) snooping is turned on and that the network is designed for multicast traffic. The multicast
solution uses IGMPv3.
Set up MDT for multicast
Setting up MDT for multicast is straightforward. You enable multicast on the deployment share, and MDT takes
care of the rest.
On MDT01 :
1. In the Deployment Workbench, right-click the MDT Production deployment share folder and select
Proper ties .
2. On the General tab, select the Enable multicast for this deployment share (requires Windows
Ser ver 2008 R2 Windows Deployment Ser vices) check box, and click OK .
3. Right-click the MDT Production deployment share folder and select Update Deployment Share .
4. After updating the deployment share, use the Windows Deployment Services console to, verify that the
multicast namespace was created.
NOTE
When creating offline media, you need to create the target folder first. It is crucial that you do not create a
subfolder inside the deployment share folder because it will break the offline media.
2. In the Deployment Workbench, under the MDT Production / Advanced Configuration node, right-
click the Media node, and select New Media .
3. Use the following settings for the New Media Wizard:
General Settings
Media path: D:\MDTOfflineMedia
Selection profile: Windows 10 Offline Media
Configure the offline media
Offline media has its own rules, its own Bootstrap.ini and CustomSettings.ini files. These files are stored in the
Control folder of the offline media; they also can be accessed via properties of the offline media in the
Deployment Workbench.
On MDT01 :
1. Copy the CustomSettings.ini file from the D:\MDTProduction\Control folder to
D:\MDTOfflineMedia\Content\Deploy\Control . Overwrite the existing files.
2. In the Deployment Workbench, under the MDT Production / Advanced Configuration / Media
node, right-click the MEDIA001 media, and select Proper ties .
3. In the General tab, configure the following:
Clear the Generate x86 boot image check box.
ISO file name: Windows 10 Offline Media.iso
4. On the Windows PE tab, in the Platform drop-down list, select x64 .
5. On the General sub tab, configure the following settings:
In the Lite Touch Boot Image Settings area:
Image description: MDT Production x64
In the Windows PE Customizations area, set the Scratch space size to 128.
6. On the Drivers and Patches sub tab, select the WinPE x64 selection profile and select the Include all
drivers from the selection profile option.
7. Click OK .
Generate the offline media
You have now configured the offline media deployment share, however the share has not yet been populated
with the files required for deployment. Now everything is ready you populate the deployment share content
folder and generate the offline media ISO.
On MDT01 :
1. In the Deployment Workbench, navigate to the MDT Production / Advanced Configuration / Media
node.
2. Right-click the MEDIA001 media, and select Update Media Content . The Update Media Content
process now generates the offline media in the D:\MDTOfflineMedia\Content folder. The process
might require several minutes.
Create a bootable USB stick
The ISO that you got when updating the offline media item can be burned to a DVD and used directly (it will be
bootable), but it is often more efficient to use USB sticks instead since they are faster and can hold more data. (A
dual-layer DVD is limited to 8.5 GB.)
TIP
In this example, the .wim file is 5.5 GB in size. However, bootable USB sticks are formatted with the FAT32 file system
which limits file size to 4.0 GB. You can place the image on a different drive (ex: E:\Deploy\Operating
Systems\W10EX64RTM\REFW10X64-001.swm) and then modify E:\Deploy\Control\OperatingSystems.xml to point to it.
Alternatively to keep using the USB you must split the .wim file, which can be done using DISM:
Windows Setup automatically installs from this file, provided you name it install.swm. The file names for the next files
include numbers, for example: install2.swm, install3.swm.
To enable split image in MDT, the Settings.xml file in your deployment share (ex: D:\MDTProduction\Control\Settings.xml)
must have the SkipWimSplit value set to False . By default this value is set to True (
<SkipWimSplit>True</SkipWimSplit> ), so this must be changed and the offline media content updated.
Follow these steps to create a bootable USB stick from the offline media content:
1. On a physical machine running Windows 7 or later, insert the USB stick you want to use.
2. Copy the content of the MDTOfflineMedia\Content folder to the root of the USB stick.
3. Start an elevated command prompt (run as Administrator), and start the Diskpart utility by typing
Diskpar t and pressing Enter .
4. In the Diskpart utility, you can type list volume (or the shorter list vol ) to list the volumes, but you
really only need to remember the drive letter of the USB stick to which you copied the content. In our
example, the USB stick had the drive letter F.
5. In the Diskpart utility, type select volume F (replace F with your USB stick drive letter).
6. In the Diskpart utility, type active , and then type exit .
Related topics
Get started with the Microsoft Deployment Toolkit (MDT)
Create a Windows 10 reference image
Build a distributed environment for Windows 10 deployment
Refresh a Windows 7 computer with Windows 10
Replace a Windows 7 computer with a Windows 10 computer
Configure MDT settings
Refresh a Windows 7 computer with Windows 10
3/26/2021 • 5 minutes to read • Edit Online
Applies to
Windows 10
This topic will show you how to use MDT Lite Touch Installation (LTI) to upgrade a Windows 7 computer to a
Windows 10 computer using the online computer refresh process. The computer refresh scenario is a
reinstallation of an updated operating system on the same computer. You can also use this procedure to reinstall
the same OS version. In this article, the computer refresh will be done while the computer is online. MDT also
supports an offline computer refresh. For more info on that scenario, see the USMTOfflineMigration property on
the MDT resource page.
For the purposes of this topic, we will use three computers: DC01, MDT01, and PC0001.
DC01 is a domain controller for the contoso.com domain.
MDT01 is domain member server that hosts your deployment share.
PC0001 is a domain member computer running a previous version of Windows that is going to be refreshed
to a new version of Windows 10, with data and settings restored. The example used here is a computer
running Windows 7 SP1.
Both DC01 and MDT01 are running Windows Server 2019; however any supported version of Windows Server
can be used. For more details on the setup for this topic, please see Prepare for deployment with MDT.
Multi-user migration
By default, ScanState in USMT backs up all profiles on the machine, including local computer profiles. If you have
a computer that has been in your environment for a while, it likely has several domain-based profiles on it,
including those of former users. You can limit which profiles are backed up by configuring command-line
switches to ScanState (added as rules in MDT).
For example, the following line configures USMT to migrate only domain user profiles and not profiles from the
local SAM account database: ScanStateArgs=/ue:*\* /ui:CONTOSO\*
NOTE
You also can combine the preceding switches with the /uel switch, which excludes profiles that have not been accessed
within a specific number of days. For example, adding /uel:60 will configure ScanState (or LoadState) not to include profiles
that haven't been accessed for more than 60 days.
1. On PC0001, sign in as contoso\Administrator and start the Lite Touch Deploy Wizard by opening
\\MDT01\MDTProduction$\Scripts\Litetouch.vbs .
2. Complete the deployment guide using the following settings:
Select a task sequence to execute on this computer: Windows 10 Enterprise x64 RTM Custom
Image
Computer name: <default>
Specify where to save a complete computer backup: Do not back up the existing computer
NOTE
Skip this optional full WIM backup that we are choosing not to perform. The USMT backup will still run.
5. After the refresh process completes, sign in to the Windows 10 computer and verify that user accounts,
data and settings were migrated.
Related topics
Get started with the Microsoft Deployment Toolkit (MDT)
Prepare for deployment with MDT
Create a Windows 10 reference image
Deploy a Windows 10 image using MDT
Build a distributed environment for Windows 10 deployment
Replace a Windows 7 computer with a Windows 10 computer
Configure MDT settings
Replace a Windows 7 computer with a Windows 10
computer
3/5/2021 • 4 minutes to read • Edit Online
Applies to
Windows 10
A computer replace scenario for Windows 10 is quite similar to a computer refresh for Windows 10. However,
because you are replacing a device, you cannot store the backup on the old computer. Instead you need to store
the backup to a location where the new computer can read it. The User State Migration Tool (USMT) will be used
to back up and restore data and settings.
For the purposes of this topic, we will use four computers: DC01, MDT01, PC0002, and PC0007.
DC01 is a domain controller for the contoso.com domain.
MDT01 is domain member server that hosts your deployment share.
PC0002 is an old computer running Windows 7 SP1 that will be replaced by PC0007.
PC0007 is a new computer will have the Windows 10 OS installed prior to data from PC0002 being
migrated. Both PC0002 and PC0007 are members of the contoso.com domain.
For more details on the setup for this topic, please see Prepare for deployment with MDT.
HV01 is also used in this topic to host the PC0007 virtual machine for demonstration purposes, however
typically PC0007 is a physical computer.
NOTE
If you are replacing the computer at a remote site you should create the MigData folder on MDT02 and
use that share instead.
b. Specify where to save a complete computer backup: Do not back up the existing computer
The task sequence will now run USMT (Scanstate.exe) to capture user data and settings of the computer.
The new task sequence running the Capture User State action on PC0002.
4. On MDT01 , verify that you have an USMT.MIG compressed backup file in the
D:\MigData\PC0002\USMT folder.
The USMT backup of PC0002.
Deploy the replacement computer
To demonstrate deployment of the replacement computer, HV01 is used to host a virtual machine: PC0007.
On HV01 :
1. Create a virtual machine with the following settings:
Name: PC0007
Location: C:\VMs
Generation: 2
Memory: 2048 MB
Hard disk: 60 GB (dynamic disk)
Install an operating system from a network-based installation server
2. Start the PC0007 virtual machine, and press Enter to start the Pre-Boot Execution Environment (PXE)
boot. The VM will now load the Windows PE boot image from MDT01 (or MDT02 if at a remote site).
Related topics
Get started with the Microsoft Deployment Toolkit (MDT)
Create a Windows 10 reference image
Deploy a Windows 10 image using MDT
Build a distributed environment for Windows 10 deployment
Refresh a Windows 7 computer with Windows 10
Configure MDT settings
Perform an in-place upgrade to Windows 10 with
MDT
3/26/2021 • 3 minutes to read • Edit Online
Applies to
Windows 10
The simplest path to upgrade PCs that are currently running Windows 7, Windows 8, or Windows 8.1 to
Windows 10 is through an in-place upgrade.
TIP
In-place upgrade is the preferred method to use when migrating from Windows 10 to a later release of Windows 10, and
is also a preferred method for upgrading from Windows 7 or 8.1 if you do not plan to significantly change the device's
configuration or applications. MDT includes an in-place upgrade task sequence template that makes the process really
simple.
In-place upgrade differs from computer refresh in that you cannot use a custom image to perform the in-place
upgrade. In this article we will add a default Windows 10 image to the production deployment share specifically
to perform an in-place upgrade.
Three computers are used in this topic: DC01, MDT01, and PC0002.
DC01 is a domain controller for the contoso.com domain
MDT01 is a domain member server
PC0002 is a domain member computer running Windows 7 SP1, targeted for the Windows 10 upgrade
NOTE
For details about the setup for the procedures in this article, please see Prepare for deployment with MDT.
If you have already completed all the steps in Deploy a Windows 10 image using MDT, then you already
have a production deployment share and you can skip to Add Windows 10 Enterprise x64 (full source).
On MDT01 :
1. Sign in as contoso\administrator and copy the content of a Windows 10 Enterprise x64 DVD/ISO to the
D:\Downloads\Windows 10 Enterprise x64 folder on MDT01, or just insert the DVD or mount an ISO on
MDT01.
2. Using the Deployment Workbench, expand the Deployment Shares node, and then expand MDT
Production .
3. Right-click the Operating Systems node, and create a new folder named Windows 10 .
4. Expand the Operating Systems node, right-click the Windows 10 folder, and select Impor t Operating
System . Use the following settings for the Import Operating System Wizard:
Full set of source files
Source directory: (location of your source files)
Destination directory name: W10EX64RTM
5. After adding the operating system, in the Operating Systems / Windows 10 folder, double-click it and
change the name to: Windows 10 Enterprise x64 RTM Default Image .
Related topics
Windows 10 deployment scenarios
Microsoft Deployment Toolkit downloads and resources
Windows 10 Subscription Activation
7/20/2021 • 14 minutes to read • Edit Online
Starting with Windows 10, version 1703 Windows 10 Pro supports the Subscription Activation feature, enabling
users to “step-up” from Windows 10 Pro to Windows 10 Enterprise automatically if they are subscribed to
Windows 10 Enterprise E3 or E5.
With Windows 10, version 1903 the Subscription Activation feature also supports the ability to step-up from
Windows 10 Pro Education to the Enterprise grade edition for educational institutions—Windows 10
Education .
The Subscription Activation feature eliminates the need to manually deploy Windows 10 Enterprise or Education
images on each target device, then later standing up on-prem key management services such as KMS or MAK
based activation, entering Generic Volume License Keys (GVLKs), and subsequently rebooting client devices.
Summary
Inherited Activation: Description of a new feature available in Windows 10, version 1803 and later.
The evolution of Windows 10 deployment: A short history of Windows deployment.
Requirements: Prerequisites to use the Windows 10 Subscription Activation model.
Benefits: Advantages of Windows 10 subscription-based licensing.
How it works: A summary of the subscription-based licensing option.
Virtual Desktop Access (VDA): Enable Windows 10 Subscription Activation for VMs in the cloud.
For information on how to deploy Windows 10 Enterprise licenses, see Deploy Windows 10 Enterprise licenses.
Inherited Activation
Inherited Activation is a new feature available in Windows 10, version 1803 that allows Windows 10 virtual
machines to inherit activation state from their Windows 10 host.
When a user with Windows 10 E3/E5 or A3/A5 license assigned creates a new Windows 10 virtual machine
(VM) using a Windows 10 local host, the VM inherits the activation state from a host machine independent of
whether user signs on with a local account or using an Azure Active Directory (AAD) account on a VM.
To support Inherited Activation, both the host computer and the VM must be running Windows 10, version 1803
or later. The hypervisor platform must also be Windows Hyper-V.
The following figure illustrates how deploying Windows 10 has evolved with each release. With this release,
deployment is automatic.
Windows 7 required you to redeploy the operating system using a full wipe-and-load process if you
wanted to change from Windows 7 Professional to Windows 10 Enterprise.
Windows 8.1 added support for a Windows 8.1 Pro to Windows 8.1 Enterprise in-place upgrade
(considered a “repair upgrade” because the OS version was the same before and after). This was a lot
easier than wipe-and-load, but it was still time-consuming.
Windows 10, version 1507 added the ability to install a new product key using a provisioning package
or using MDM to change the SKU. This required a reboot, which would install the new OS components,
and took several minutes to complete. However, it was a lot quicker than in-place upgrade.
Windows 10, version 1607 made a big leap forward. Now you can just change the product key and
the SKU instantly changes from Windows 10 Pro to Windows 10 Enterprise. In addition to provisioning
packages and MDM, you can just inject a key using SLMGR.VBS (which injects the key into WMI), so it
became trivial to do this using a command line.
Windows 10, version 1703 made this “step-up” from Windows 10 Pro to Windows 10 Enterprise
automatic for those that subscribed to Windows 10 Enterprise E3 or E5 via the CSP program.
Windows 10, version 1709 adds support for Windows 10 Subscription Activation, very similar to the
CSP support but for large enterprises, enabling the use of Azure AD for assigning licenses to users. When
those users sign in on an AD or Azure AD-joined machine, it automatically steps up from Windows 10
Pro to Windows 10 Enterprise.
Windows 10, version 1803 updates Windows 10 Subscription Activation to enable pulling activation
keys directly from firmware for devices that support firmware-embedded keys. It is no longer necessary
to run a script to perform the activation step on Windows 10 Pro prior to activating Enterprise. For virtual
machines and hosts running Windows 10, version 1803 Inherited Activation is also enabled.
Windows 10, version 1903 updates Windows 10 Subscription Activation to enable step up from
Windows 10 Pro Education to Windows 10 Education for those with a qualifying Windows 10 or
Microsoft 365 subscription.
Requirements
Windows 10 Enterprise requirements
NOTE
The following requirements do not apply to general Windows 10 activation on Azure. Azure activation requires a
connection to Azure KMS only, and supports workgroup, Hybrid, and Azure AD-joined VMs. In most scenarios, activation
of Azure VMs happens automatically. For more information, see Understanding Azure KMS endpoints for Windows
product activation of Azure Virtual Machines.
NOTE
Currently, Subscription Activation is only available on commercial tenants and is currently not available on US GCC, GCC
High, or DoD tenants.
For Microsoft customers with Enterprise Agreements (EA) or Microsoft Products & Services Agreements
(MPSA), you must have the following:
Windows 10 (Pro or Enterprise) version 1703 or later installed on the devices to be upgraded.
Azure Active Directory (Azure AD) available for identity management.
Devices must be Azure AD-joined or Hybrid Azure AD joined. Workgroup-joined or Azure AD registered
devices are not supported.
For Microsoft customers that do not have EA or MPSA, you can obtain Windows 10 Enterprise E3/E5 or A3/A5
through a cloud solution provider (CSP). Identity management and device requirements are the same when you
use CSP to manage licenses, with the exception that Windows 10 Enterprise E3 is also available through CSP to
devices running Windows 10, version 1607. For more information about obtaining Windows 10 Enterprise E3
through your CSP, see Windows 10 Enterprise E3 in CSP.
If devices are running Windows 7 or Windows 8.1, see New Windows 10 upgrade benefits for Windows Cloud
Subscriptions in CSP
Multifactor authentication
An issue has been identified with Hybrid Azure AD joined devices that have enabled multifactor authentication
(MFA). If a user signs into a device using their Active Directory account and MFA is enabled, the device will not
successfully upgrade to their Windows Enterprise subscription.
To resolve this issue:
If the device is running Windows 10, version 1703, 1709, or 1803, the user must either sign in with an Azure AD
account, or you must disable MFA for this user during the 30-day polling period and renewal.
If the device is running Windows 10, version 1809 or later:
Windows 10, version 1809 must be updated with KB4497934. Later versions of Windows 10
automatically include this patch.
When the user signs in on a Hybrid Azure AD joined device with MFA enabled, a notification will indicate
that there is a problem. Click the notification and then click Fix now to step through the subscription
activation process. See the example below:
IMPORTANT
If Windows 10 Pro is converted to Windows 10 Pro Education by using benefits available in Store for Education, then the
feature will not work. You will need to re-image the device using a Windows 10 Pro Education edition.
Benefits
With Windows 10 Enterprise or Windows 10 Education, businesses and institutions can benefit from enterprise-
level security and control. Previously, only organizations with a Microsoft Volume Licensing Agreement could
deploy Windows 10 Education or Windows 10 Enterprise to their users. Now, with Windows 10 Enterprise E3 or
A3 and E5 or A5 being available as a true online service, it is available in select channels thus allowing all
organizations to take advantage of enterprise-grade Windows 10 features. To compare Windows 10 editions
and review pricing, see the following:
Compare Windows 10 editions
Enterprise Mobility + Security Pricing Options
You can benefit by moving to Windows as an online service in the following ways:
Licenses for Windows 10 Enterprise and Education are checked based on Azure Active Directory (Azure
AD) credentials, so now businesses have a systematic way to assign licenses to end users and groups in
their organization.
User logon triggers a silent edition upgrade, with no reboot required.
Support for mobile worker/BYOD activation; transition away from on-prem KMS and MAK keys.
Compliance support via seat assignment.
Licenses can be updated to different users dynamically, enabling you to optimize your licensing
investment against changing needs.
How it works
The device is AAD joined from Settings > Accounts > Access work or school .
The IT administrator assigns Windows 10 Enterprise to a user. See the following figure.
When a licensed user signs in to a device that meets requirements using their Azure AD credentials, the
operating system steps up from Windows 10 Pro to Windows 10 Enterprise (or Windows 10 Pro Education to
Windows 10 Education) and all the appropriate Windows 10 Enterprise/Education features are unlocked. When
a user’s subscription expires or is transferred to another user, the device reverts seamlessly to Windows 10 Pro /
Windows 10 Pro Education edition, once current subscription validity expires.
Devices running Windows 10 Pro, version 1703 or Windows 10 Pro Education, version 1903 or later can get
Windows 10 Enterprise or Education Semi-Annual Channel on up to five devices for each user covered by the
license. This benefit does not include Long Term Servicing Channel.
The following figures summarize how the Subscription Activation model works:
Before Windows 10, version 1903:
Scenarios
Scenario #1
You are using Windows 10, version 1803 or above, and just purchased Windows 10 Enterprise E3 or E5
subscriptions (or have had an E3 or E5 subscription for a while but haven’t yet deployed Windows 10
Enterprise).
All of your Windows 10 Pro devices will step-up to Windows 10 Enterprise, and devices that are already running
Windows 10 Enterprise will migrate from KMS or MAK activated Enterprise edition to Subscription activated
Enterprise edition when a Subscription Activation-enabled user signs in to the device.
Scenario #2
You are using Windows 10, version 1607, 1703, or 1709 with KMS for activation, and just purchased Windows
10 Enterprise E3 or E5 subscriptions (or have had an E3 or E5 subscription for a while but haven’t yet deployed
Windows 10 Enterprise).
To change all of your Windows 10 Pro devices to Windows 10 Enterprise, run the following command on each
computer:
The command causes the OS to change to Windows 10 Enterprise and then seek out the KMS server to
reactivate. This key comes from Appendix A: KMS Client Setup Keys in the Volume Activation guide. It is also
possible to inject the Windows 10 Pro key from this article if you wish to step back down from Enterprise to Pro.
Scenario #3
Using Azure AD-joined devices or Active Directory-joined devices running Windows 10 1709 or later, and with
Azure AD synchronization configured, just follow the steps in Deploy Windows 10 Enterprise licenses to acquire
a $0 SKU and get a new Windows 10 Enterprise E3 or E5 license in Azure AD. Then, assign that license to all of
your Azure AD users. These can be AD-synced accounts. The device will automatically change from Windows 10
Pro to Windows 10 Enterprise when that user signs in.
In summary, if you have a Windows 10 Enterprise E3 or E5 subscription, but are still running Windows 10 Pro,
it’s really simple (and quick) to move to Windows 10 Enterprise using one of the scenarios above.
If you’re running Windows 7, it can be more work. A wipe-and-load approach works, but it is likely to be easier
to upgrade from Windows 7 Pro directly to Windows 10 Enterprise. This is a supported path, and completes the
move in one step. This method also works if you are running Windows 8.1 Pro.
Licenses
The following policies apply to acquisition and renewal of licenses on devices:
Devices that have been upgraded will attempt to renew licenses about every 30 days, and must be connected
to the Internet to successfully acquire or renew a license.
If a device is disconnected from the Internet until its current subscription expires, the operating system will
revert to Windows 10 Pro or Windows 10 Pro Education. As soon as the device is connected to the Internet
again, the license will automatically renew.
Up to five devices can be upgraded for each user license. If the user license is used for a sixth device, the
operating system on the computer to which a user has not logged in the longest will revert to Windows 10
Pro or Windows 10 Pro Education.
If a device meets the requirements and a licensed user signs in on that device, it will be upgraded.
Licenses can be reallocated from one user to another user, allowing you to optimize your licensing investment
against changing needs.
When you have the required Azure AD subscription, group-based licensing is the preferred method to assign
Enterprise E3 and E5 licenses to users. For more information, see Group-based licensing basics in Azure AD.
Existing Enterprise deployments
If you are running Windows 10, version 1803 or later, Subscription Activation will automatically pull the
firmware-embedded Windows 10 activation key and activate the underlying Pro License. The license will then
step-up to Windows 10 Enterprise using Subscription Activation. This automatically migrates your devices from
KMS or MAK activated Enterprise to Subscription activated Enterprise.
Cau t i on
Firmware-embedded Windows 10 activation happens automatically only when we go through OOBE (Out Of
Box Experience).
If you are using Windows 10, version 1607, 1703, or 1709 and have already deployed Windows 10 Enterprise,
but you want to move away from depending on KMS servers and MAK keys for Windows client machines, you
can seamlessly transition as long as the computer has been activated with a firmware-embedded Windows 10
Pro product key.
If the computer has never been activated with a Pro key, run the following script. Copy the text below into a .cmd
file and run the file from an elevated command prompt:
@echo off
FOR /F "skip=1" %%A IN ('wmic path SoftwareLicensingService get OA3xOriginalProductKey') DO (
SET "ProductKey=%%A"
goto InstallKey
)
:InstallKey
IF [%ProductKey%]==[] (
echo No key present
) ELSE (
echo Installing %ProductKey%
changepk.exe /ProductKey %ProductKey%
)
Related topics
Connect domain-joined devices to Azure AD for Windows 10 experiences
Compare Windows 10 editions
Windows for business
Windows 10 Enterprise E3 in CSP
3/26/2021 • 16 minutes to read • Edit Online
Windows 10 Enterprise E3 launched in the Cloud Solution Provider (CSP) channel on September 1, 2016.
Windows 10 Enterprise E3 in CSP is a new offering that delivers, by subscription, exclusive features reserved for
Windows 10 Enterprise edition. This offering is available through the Cloud Solution Provider (CSP) channel via
the Partner Center as an online service. Windows 10 Enterprise E3 in CSP provides a flexible, per-user
subscription for small- and medium-sized organizations (from one to hundreds of users). To take advantage of
this offering, you must have the following:
Windows 10 Pro, version 1607 (Windows 10 Anniversary Update) or later, installed and activated, on the
devices to be upgraded
Azure Active Directory (Azure AD) available for identity management
Starting with Windows 10, version 1607 (Windows 10 Anniversary Update), you can move from Windows 10
Pro to Windows 10 Enterprise more easily than ever before—no keys and no reboots. After one of your users
enters the Azure AD credentials associated with a Windows 10 Enterprise E3 license, the operating system turns
from Windows 10 Pro to Windows 10 Enterprise and all the appropriate Windows 10 Enterprise features are
unlocked. When a subscription license expires or is transferred to another user, the Windows 10 Enterprise
device seamlessly steps back down to Windows 10 Pro.
Previously, only organizations with a Microsoft Volume Licensing Agreement could deploy Windows 10
Enterprise to their users. Now, with Windows 10 Enterprise E3 in CSP, small- and medium-sized organizations
can more easily take advantage of Windows 10 Enterprise features.
When you purchase Windows 10 Enterprise E3 via a partner, you get the following benefits:
Windows 10 Enterprise edition . Devices currently running Windows 10 Pro, version 1607 can get
Windows 10 Enterprise Current Branch (CB) or Current Branch for Business (CBB). This benefit does not
include Long Term Service Branch (LTSB).
Suppor t from one to hundreds of users . Although the Windows 10 Enterprise E3 in CSP program
does not have a limitation on the number of licenses an organization can have, the program is designed
for small- and medium-sized organizations.
Deploy on up to five devices . For each user covered by the license, you can deploy Windows 10
Enterprise edition on up to five devices.
Roll back to Windows 10 Pro at any time . When a user’s subscription expires or is transferred to
another user, the Windows 10 Enterprise device reverts seamlessly to Windows 10 Pro edition (after a
grace period of up to 90 days).
Monthly, per-user pricing model . This makes Windows 10 Enterprise E3 affordable for any
organization.
Move licenses between users . Licenses can be quickly and easily reallocated from one user to another
user, allowing you to optimize your licensing investment against changing needs.
How does the Windows 10 Enterprise E3 in CSP program compare with Microsoft Volume Licensing
Agreements and Software Assurance?
Microsoft Volume Licensing programs are broader in scope, providing organizations with access to
licensing for all Microsoft products.
Software Assurance provides organizations with the following categories of benefits:
Deployment and management . These benefits include planning services, Microsoft Desktop
Optimization (MDOP), Windows Virtual Desktop Access Rights, Windows-To-Go Rights, Windows
Roaming Use Rights, Windows Thin PC, Windows RT Companion VDA Rights, and other benefits.
Training . These benefits include training vouchers, online e-learning, and a home use program.
Suppor t . These benefits include 24x7 problem resolution support, backup capabilities for disaster
recovery, System Center Global Service Monitor, and a passive secondary instance of SQL Server.
Specialized . These benefits include step-up licensing availability (which enables you to migrate
software from an earlier edition to a higher-level edition) and to spread license and Software
Assurance payments across three equal, annual sums.
In addition, in Windows 10 Enterprise E3 in CSP, a partner can manage your licenses for you. With
Software Assurance, you, the customer, manage your own licenses.
In summary, the Windows 10 Enterprise E3 in CSP program is an upgrade offering that provides small- and
medium-sized organizations easier, more flexible access to the benefits of Windows 10 Enterprise edition,
whereas Microsoft Volume Licensing programs and Software Assurance are broader in scope and provide
benefits beyond access to Windows 10 Enterprise edition.
Credential Guard This feature uses virtualization-based security to help protect security secrets (for example,
NTLM password hashes, Kerberos Ticket Granting Tickets) so that only privileged system
software can access them. This helps prevent Pass-the-Hash or Pass-the-Ticket attacks.
Credential Guard has the following features:
Hardware-level security . Credential Guard uses hardware platform security features
(such as Secure Boot and virtualization) to help protect derived domain credentials and
other secrets.
Vir tualization-based security . Windows services that access derived domain
credentials and other secrets run in a virtualized, protected environment that is isolated.
Improved protection against persistent threats . Credential Guard works with
other technologies (e.g., Device Guard) to help provide further protection against
attacks, no matter how persistent.
Improved manageability . Credential Guard can be managed through Group Policy,
Windows Management Instrumentation (WMI), or Windows PowerShell.
For more information, see Protect derived domain credentials with Credential Guard.
Credential Guard requires UEFI 2.3.1 or greater with Trusted Boot; Virtualization Extensions
such as Intel VT-x, AMD-V, and SLAT must be enabled; x64 version of Windows; IOMMU, such
as Intel VT-d, AMD-Vi; BIOS Lockdown; TPM 2.0 recommended for device health attestation
(will use software if TPM 2.0 not present)
F EAT URE DESC RIP T IO N
Device Guard This feature is a combination of hardware and software security features that allows only trusted
applications to run on a device. Even if an attacker manages to get control of the Windows
kernel, he or she will be much less likely to run executable code. Device Guard can use
virtualization-based security (VBS) in Windows 10 Enterprise edition to isolate the Code
Integrity service from the Windows kernel itself. With VBS, even if malware gains access to the
kernel, the effects can be severely limited, because the hypervisor can prevent the malware from
executing code.
Device Guard does the following:
Helps protect against malware
Helps protect the Windows system core from vulnerability and zero-day exploits
Allows only trusted apps to run
For more information, see Introduction to Device Guard.
AppLocker This feature helps IT pros determine which applications and files users can run on a device. The
management applications and files that can be managed include executable files, scripts, Windows Installer
files, dynamic-link libraries (DLLs), packaged apps, and packaged app installers.
For more information, see AppLocker.
Application This feature makes applications available to end users without installing the applications directly
Virtualization on users’ devices. App-V transforms applications into centrally managed services that are never
(App-V) installed and don't conflict with other applications. This feature also helps ensure that
applications are kept current with the latest security updates.
For more information, see Getting Started with App-V for Windows 10.
User Experience With this feature, you can capture user-customized Windows and application settings and store
Virtualization them on a centrally managed network file share. When users log on, their personalized settings
(UE-V) are applied to their work session, regardless of which device or virtual desktop infrastructure
(VDI) sessions they log on to.
UE-V provides the ability to do the following:
Specify which application and Windows settings synchronize across user devices
Deliver the settings anytime and anywhere users work throughout the enterprise
Create custom templates for your third-party or line-of-business applications
Recover settings after hardware replacement or upgrade, or after re-imaging a virtual
machine to its initial state
For more information, see User Experience Virtualization (UE-V) for Windows 10 overview.
F EAT URE DESC RIP T IO N
Managed User This feature helps customize and lock down a Windows device’s user interface to restrict it to a
Experience specific task. For example, you can configure a device for a controlled scenario such as a kiosk or
classroom device. The user experience would be automatically reset once a user signs off. You
can also restrict access to services including Cortana or the Windows Store, and manage Start
layout options, such as:
Removing and preventing access to the Shut Down, Restart, Sleep, and Hibernate
commands
Removing Log Off (the User tile) from the Start menu
Removing frequent programs from the Start menu
Removing the All Programs list from the Start menu
Preventing users from customizing their Start screen
Forcing Start menu to be either full-screen size or menu size
Preventing changes to Taskbar and Start menu settings
Start layout customization You can deploy a customized Start layout to users in a
domain. No reimaging is required, and the Start layout can
be updated simply by overwriting the .xml file that contains
the layout. This enables you to customize Start layouts for
different departments or organizations, with minimal
management overhead.
For more information on these settings, see Customize
Windows 10 Start and taskbar with Group Policy.
Unbranded boot You can suppress Windows elements that appear when
Windows starts or resumes and can suppress the crash
screen when Windows encounters an error from which it
cannot recover.
For more information on these settings, see Unbranded
Boot.
Custom logon You can use the Custom Logon feature to suppress
Windows 10 UI elements that relate to the Welcome screen
and shutdown screen. For example, you can suppress all
elements of the Welcome screen UI and provide a custom
logon UI. You can also suppress the Blocked Shutdown
Resolver (BSDR) screen and automatically end applications
while the OS waits for applications to close before a
shutdown.
For more information on these settings, see Custom Logon.
Shell launcher Enables Assigned Access to run only a classic Windows app
via Shell Launcher to replace the shell.
For more information on these settings, see Shell Launcher.
Keyboard filter You can use Keyboard Filter to suppress undesirable key
presses or key combinations. Normally, users can use certain
Windows key combinations like Ctrl+Alt+Delete or
Ctrl+Shift+Tab to control a device by locking the screen or
using Task Manager to close a running application. This is
not desirable on devices intended for a dedicated purpose.
For more information on these settings, see Keyboard Filter.
F EAT URE DESC RIP T IO N
Unified write filter You can use Unified Write Filter (UWF) on your device to
help protect your physical storage media, including most
standard writable storage types that are supported by
Windows, such as physical hard disks, solid-state drives,
internal USB devices, external SATA devices, and so on. You
can also use UWF to make read-only media appear to the
OS as a writable volume.
For more information on these settings, see Unified Write
Filter.
Related topics
Windows 10 Enterprise Subscription Activation
Connect domain-joined devices to Azure AD for Windows 10 experiences
Compare Windows 10 editions
Windows for business
Configure VDA for Windows 10 Subscription
Activation
3/26/2021 • 6 minutes to read • Edit Online
This document describes how to configure virtual machines (VMs) to enable Windows 10 Subscription
Activation in a Windows Virtual Desktop Access (VDA) scenario. Windows VDA is a device or user-based
licensing mechanism for managing access to virtual desktops.
Deployment instructions are provided for the following scenarios:
1. Active Directory-joined VMs
2. Azure Active Directory-joined VMs
3. Azure Gallery VMs
Requirements
VMs must be running Windows 10 Pro, version 1703 (also known as the Creator's Update) or later.
VMs must be Active Directory-joined or Azure Active Directory (AAD)-joined.
VMs must be generation 1.
VMs must be hosted by a Qualified Multitenant Hoster (QMTH).
Activation
Scenario 1
The VM is running Windows 10, version 1803 or later.
The VM is hosted in Azure or another Qualified Multitenant Hoster (QMTH).
When a user with VDA rights signs in to the VM using their AAD credentials, the VM is automatically
stepped-up to Enterprise and activated. There is no need to perform Windows 10 Pro activation. This
eliminates the need to maintain KMS or MAK in the qualifying cloud infrastructure.
Scenario 2
The Hyper-V host and the VM are both running Windows 10, version 1803 or later.
Inherited Activation is enabled. All VMs created by a user with a Windows 10 E3 or E5 license are
automatically activated independent of whether a user signs in with a local account or using an Azure
Active Directory account.
Scenario 3
The VM is running Windows 10, version 1703 or 1709, or the hoster is not an authorized QMTH partner.
In this scenario, the underlying Windows 10 Pro license must be activated prior to Subscription Activation
of Windows 10 Enterprise. Activation is accomplished using a Windows 10 Pro Generic Volume License
Key (GVLK) and a Volume License KMS activation server provided by the hoster. Alternatively, a KMS
activation server can be used. KMS activation is provided for Azure VMs. For more information, see
Troubleshoot Azure Windows virtual machine activation problems.
For examples of activation issues, see Troubleshoot the user experience.
Active Directory-joined VMs
1. Use the following instructions to prepare the VM for Azure: Prepare a Windows VHD or VHDX to upload
to Azure
2. (Optional) To disable network level authentication, type the following at an elevated command prompt:
19. Right-click the mounted image in file explorer and click Eject .
20. See instructions at Upload and create VM from generalized VHD to log in to Azure, get your storage
account details, upload the VHD, and create a managed image.
For Azure AD-joined VMs, follow the same instructions (above) as for Active Directory-joined VMs with the
following exceptions:
In step 9, during setup with Windows Configuration Designer, under Name , type a name for the project that
indicates it is not for Active Directory joined VMs, such as Desktop Bulk Enrollment Token Pro GVLK .
In step 11, during setup with Windows Configuration Designer, on the Account Management page, instead of
enrolling in Active Directory, choose Enroll in Azure AD , click Get Bulk Token , sign in and add the bulk
token using your organization's credentials.
In step 15, sub-step 2, when entering the PackagePath, use the project name you entered in step 9 (ex:
Desktop Bulk Enrollment Token Pro GVLK.ppkg )
When attempting to access the VM using remote desktop, you will need to create a custom RDP settings file
as described below in Create custom RDP settings for Azure.
enablecredsspsupport:i:0
authentication level:i:2
6. enablecredsspsuppor t and authentication level should each appear only once in the file.
7. Save your changes, and then use this custom RDP file with your Azure AD credentials to connect to the
Azure VM.
Related topics
Windows 10 Subscription Activation
Recommended settings for VDI desktops
Licensing the Windows Desktop for VDI Environments
Deploy Windows 10 Enterprise licenses
4/29/2021 • 10 minutes to read • Edit Online
This topic describes how to deploy Windows 10 Enterprise E3 or E5 licenses with Windows 10 Enterprise
Subscription Activation or Windows 10 Enterprise E3 in CSP and Azure Active Directory (Azure AD).
NOTE
Windows 10 Enterprise Subscription Activation (EA or MPSA) requires Windows 10 Pro, version 1703 or later.
Windows 10 Enterprise E3 in CSP requires Windows 10 Pro, version 1607 or later.
Automatic, non-KMS activation requires Windows 10, version 1803 or later, on a device with a firmware-embedded
activation key.
Windows 10 Enterprise Subscription Activation requires Windows 10 Enterprise per user licensing; it does not work on
per device based licensing.
IMPORTANT
An issue has been identified where devices can lose activation status or be blocked from upgrading to Windows Enterprise
if the device is not able to connect to Windows Update. A workaround is to ensure that devices do not have the
REG_DWORD present
HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\DoNotConnectToWindowsUpdateInternetLocations and
set to 1. If this REG_DWORD is present, it must be set to 0.
Also ensure that the Group Policy setting: Computer Configuration > Administrative Templates > Windows Components
> Windows Update > "Do not connect to any Windows Update Internet locations" is set to "Disabled".
If the device has a firmware-embedded activation key, it will be displayed in the output. If the output is blank, the
device does not have a firmware embedded activation key. Most OEM-provided devices designed to run
Windows 8 or later will have a firmware-embedded key.
NOTE
If you are implementing Azure AD, and you already have an on-premises domain, you don't need to integrate with Azure
AD, since your main authentication method is your internal AD. If you want to manage all your infrastructure in the cloud,
you can safely configure your domain controller remotely to integrate your computers with Azure AD, but you won't be
able to apply fine controls using GPO. Azure AD is best suited for the global administration of devices when you don't
have any on-premises servers.
Figure 2. The “Who owns this PC?” page in initial Windows 10 setup
2. On the Choose how you’ll connect page, select Join Azure AD , and then click Next , as illustrated in
Figure 3 .
Figure 3. The “Choose how you’ll connect” page in initial Windows 10 setup
3. On the Let’s get you signed in page, enter the Azure AD credentials, and then click Sign in , as
illustrated in Figure 4 .
Figure 4. The “Let’s get you signed in” page in initial Windows 10 setup
Now the device is Azure AD–joined to the company’s subscription.
To join a device to Azure AD when the device already has Windows 10 Pro, version 1703 installed
and set up
IMPORTANT
Make sure that the user you're signing in with is not a BUILTIN/Administrator. That user cannot use the + Connect
button to join a work or school account.
IMPORTANT
If your device is running Windows 10, version 1803 or later, this step is not needed. From Windows 10, version 1803, the
device will automatically activate Windows 10 Enterprise using the firmware-embedded activation key. If the device is
running Windows 10, version 1703 or 1709, then Windows 10 Pro must be successfully activated in Settings > Update
& Security > Activation , as illustrated in Figure 7a .
Figure 7a - Windows 10 Pro activation in Settings
Windows 10 Pro activation is required before Enterprise E3 or E5 can be enabled (Windows 10, versions 1703
and 1709 only).
Step 3: Sign in using Azure AD account
Once the device is joined to your Azure AD subscription, the user will sign in by using his or her Azure AD
account, as illustrated in Figure 8 . The Windows 10 Enterprise E3 or E5 license associated with the user will
enable Windows 10 Enterprise edition capabilities on the device.
NOTE
If you use slmgr /dli or /dlv commands to retrieve the activation information for the Windows 10 E3 or E5 license, the
license information displayed will be the following: Name: Windows(R), Professional edition Description: Windows(R)
Operating System, RETAIL channel Partial Product Key: 3V66T
Applies to
Windows 10
TIP
If you're not familiar with the Windows 10 servicing or release channels, read Servicing Channels first.
Due to naming changes, older terms like CB and CBB might still be displayed in some of our products, such as in Group
Policy. If you encounter these terms, "CB" refers to the Semi-Annual Channel (Targeted)--which is no longer used--while
"CBB" refers to the Semi-Annual Channel.
The Semi-Annual Channel is the default servicing channel for all Windows 10 devices except devices with the
LTSB edition installed. The following table shows the servicing channels available to each Windows 10 edition.
LO N G- T ERM SERVIC IN G
W IN DO W S 10 EDIT IO N SEM I- A N N UA L C H A N N EL C H A N N EL IN SIDER P RO GRA M
Home
Pro
Enterprise
Enterprise LTSB
Pro Education
Education
NOTE
The LTSB edition of Windows 10 is only available through the Microsoft Volume Licensing Center.
NOTE
Devices will automatically recieve updates from the Semi-Annual Channel, unless they are configured to recieve preview
updates through the Windows Insider Program.
IMPORTANT
Starting with Windows 10, version 1709, this policy is replaced by Manage preview builds policy.
Group Policy: Computer Configuration/Administrative Templates/Windows Components/Windows
Update/Windows Update for Business - Manage preview builds
MDM: Update/ManagePreviewBuilds
Switching channels
During the life of a device, it might be necessary or desirable to switch between the available channels.
Depending on the channel you are using, the exact mechanism for doing this can be different; some will be
simple, others more involved.
F RO M T H IS C H A N N EL TO T H IS C H A N N EL Y O U N EED TO
Related topics
Update Windows 10 in the enterprise
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Manage device restarts after updates
Deploy Windows 10 updates with Configuration
Manager
3/26/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
See the Microsoft Endpoint Manager documentation for details about using Configuration Manager to deploy
and manage Windows 10 updates.
Deploy Windows 10 updates with Intune
3/26/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
See the Microsoft Intune documentation for details about using Intune to deploy and manage Windows 10
updates.
Deploy Windows 10 updates using Windows Server
Update Services (WSUS)
8/19/2021 • 14 minutes to read • Edit Online
Applies to
Windows 10
IMPORTANT
Due to naming changes, older terms like CB and CBB might still be displayed in some of our products, such as in Group
Policy or the registry. If you encounter these terms, "CB" refers to the Semi-Annual Channel (Targeted)--which is no longer
used--while "CBB" refers to the Semi-Annual Channel.
WSUS is a Windows Server role available in the Windows Server operating systems. It provides a single hub for
Windows updates within an organization. WSUS allows companies not only to defer updates but also to
selectively approve them, choose when they’re delivered, and determine which individual devices or groups of
devices receive them. WSUS provides additional control over Windows Update for Business but does not
provide all the scheduling options and deployment flexibility that Microsoft Endpoint Manager provides.
When you choose WSUS as your source for Windows updates, you use Group Policy to point Windows 10 client
devices to the WSUS server for their updates. From there, updates are periodically downloaded to the WSUS
server and managed, approved, and deployed through the WSUS administration console or Group Policy,
streamlining enterprise update management. If you’re currently using WSUS to manage Windows updates in
your environment, you can continue to do so in Windows 10.
IMPORTANT
Both KB 3095113 and KB 3159706 are included in the Security Monthly Quality Rollup starting in July 2017. This
means you might not see KB 3095113 and KB 3159706 as installed updates since they might have been installed with a
rollup. However, if you need either of these updates, we recommend installing a Security Monthly Quality Rollup
released after October 2017 since they contain an additional WSUS update to decrease memory utilization on WSUS's
clientwebservice. If you have synced either of these updates prior to the security monthly quality rollup, you can
experience problems. To recover from this, see How to Delete Upgrades in WSUS.
WSUS scalability
To use WSUS to manage all Windows updates, some organizations may need access to WSUS from a perimeter
network, or they might have some other complex scenario. WSUS is highly scalable and configurable for
organizations of any size or site layout. For specific information about scaling WSUS, including upstream and
downstream server configuration, branch offices, WSUS load balancing, and other complex scenarios, see
Choose a Type of WSUS Deployment.
NOTE
In this example, the Configure Automatic Updates and Intranet Microsoft Update Ser vice Location
Group Policy settings are specified for the entire domain. This is not a requirement; you can target these settings
to any security group by using Security Filtering or a specific OU.
4. In the New GPO dialog box, name the new GPO WSUS – Auto Updates and Intranet Update
Ser vice Location .
5. Right-click the WSUS – Auto Updates and Intranet Update Ser vice Location GPO, and then click
Edit .
6. In the Group Policy Management Editor, go to Computer Configuration\Policies\Administrative
Templates\Windows Components\Windows Update.
7. Right-click the Configure Automatic Updates setting, and then click Edit .
8. In the Configure Automatic Updates dialog box, select Enable .
9. Under Options , from the Configure automatic updating list, select 3 - Auto download and notify
for install , and then click OK .
IMPORTANT
Use Regedit.exe to check that the following key is not enabled, because it can break Windows Store connectivity:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\DoNotConnectToWi
ndowsUpdateInternetLocations
NOTE
There are three other settings for automatic update download and installation dates and times. This is simply the
option this example uses. For more examples of how to control automatic updates and other related policies, see
Configure Automatic Updates by Using Group Policy.
10. Right-click the Specify intranet Microsoft update ser vice location setting, and then select Edit .
11. In the Specify intranet Microsoft update ser vice location dialog box, select Enable .
12. Under Options , in the Set the intranet update ser vice for detecting updates and Set the
intranet statistics ser ver options, type http://Your_WSUS_Ser ver_FQDN:Por tNumber , and then
select OK .
NOTE
The URL http://CONTOSO-WSUS1.contoso.com:8530 in the following image is just an example. In your
environment, be sure to use the server name and port number for your WSUS instance.
NOTE
The default HTTP port for WSUS is 8530, and the default HTTP over Secure Sockets Layer (HTTPS) port is 8531.
(The other options are 80 and 443; no other ports are supported.)
As Windows clients refresh their computer policies (the default Group Policy refresh setting is 90 minutes and
when a computer restarts), computers start to appear in WSUS. Now that clients are communicating with the
WSUS server, create the computer groups that align with your deployment rings.
You can use computer groups to target a subset of devices that have specific quality and feature updates. These
groups represent your deployment rings, as controlled by WSUS. You can populate the groups either manually
by using the WSUS Administration Console or automatically through Group Policy. Regardless of the method
you choose, you must first create the groups in the WSUS Administration Console.
To create computer groups in the WSUS Administration Console
1. Open the WSUS Administration Console.
2. Go to Server_Name\Computers\All Computers, and then click Add Computer Group .
3. Type Ring 2 Pilot Business Users for the name, and then click Add .
4. Repeat these steps for the Ring 3 Broad IT and Ring 4 Broad Business Users groups. When you’re
finished, there should be three deployment ring groups.
Now that the groups have been created, add the computers to the computer groups that align with the desired
deployment rings. You can do this through Group Policy or manually by using the WSUS Administration
Console.
3. In the Set Computer Group Membership dialog box, select the Ring 2 Pilot Business Users
deployment ring, and then click OK .
Because they were assigned to a group, the computers are no longer in the Unassigned Computers
group. If you select the Ring 2 Pilot Business Users computer group, you will see both computers
there.
Search for multiple computers to add to groups
Another way to add multiple computers to a deployment ring in the WSUS Administration Console is to use the
search feature.
To search for multiple computers
1. In the WSUS Administration Console, go to Server_Name\Computers\All Computers, right-click All
Computers , and then click Search .
2. In the search box, type WIN10 .
3. In the search results, select the computers, right-click the selection, and then click Change Membership .
NOTE
This option is exclusively either-or. When you enable WSUS to use Group Policy for group assignment, you can no
longer manually add computers through the WSUS Administration Console until you change the option back.
Now that WSUS is ready for client-side targeting, complete the following steps to use Group Policy to configure
client-side targeting:
To configure client-side targeting
TIP
When using client-side targeting, consider giving security groups the same names as your deployment rings. Doing so
simplifies the policy-creation process and helps ensure that you don’t add computers to the incorrect rings.
WARNING
The target group name must match the computer group name.
The next time the clients in the Ring 4 Broad Business Users security group receive their computer policy
and contact WSUS, they will be added to the Ring 4 Broad Business Users deployment ring.
NOTE
WSUS respects the client device's servicing branch. If you approve a feature update while it is still in one branch, such as
Insider Preview, WSUS will install the update only on devices that are in that servicing branch. When Microsoft releases
the build for Semi-Annual Channel, the devices in the Semi-Annual Channel will install it. Windows Update for Business
branch settings do not apply to feature updates through WSUS.
To configure an Automatic Approval rule for Windows 10 feature updates and approve them for
the Ring 3 Broad IT deployment ring
1. In the WSUS Administration Console, go to Update Services\Server_Name\Options, and then select
Automatic Approvals .
2. On the Update Rules tab, click New Rule .
3. In the Add Rule dialog box, select the When an update is in a specific classification , When an
update is in a specific product , and Set a deadline for the approval check boxes.
4. In the Edit the proper ties area, select any classification . Clear everything except Upgrades , and then
click OK .
5. In the Edit the proper ties area , click the any product link. Clear all check boxes except Windows 10 ,
and then click OK .
Windows 10 is under All Products\Microsoft\Windows.
6. In the Edit the proper ties area, click the all computers link. Clear all the computer group check boxes
except Ring 3 Broad IT , and then click OK .
7. Leave the deadline set for 7 days after the approval at 3:00 AM .
8. In the Step 3: Specify a name box, type Windows 10 Upgrade Auto-approval for Ring 3 Broad
IT , and then click OK .
Now, whenever Windows 10 feature updates are published to WSUS, they will automatically be approved for
the Ring 3 Broad IT deployment ring with an installation deadline of 1 week.
WARNING
The auto approval rule runs after synchronization occurs. This means that the next upgrade for each Windows 10 version
will be approved. If you select Run Rule , all possible updates that meet the criteria will be approved, potentially including
older updates that you don't actually want--which can be a problem when the download sizes are very large.
NOTE
If you approve more than one feature update for a computer, an error can result with the client. Approve only one feature
update per computer.
3. In the Approve Updates dialog box, from the Ring 4 Broad Business Users list, select Approved for
Install .
4. In the Approve Updates dialog box, from the Ring 4 Broad Business Users list, click Deadline , click
One Week , and then click OK .
5. If the Microsoft Software License Terms dialog box opens, click Accept .
If the deployment is successful, you should receive a successful progress report.
Related topics
Update Windows 10 in the enterprise
Overview of Windows as a service
Prepare servicing strategy for Windows 10 updates
Build deployment rings for Windows 10 updates
Assign devices to servicing channels for Windows 10 updates
Optimize update delivery for Windows 10 updates
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Deploy updates using Windows Update for Business
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Deploy Windows 10 updates using Microsoft Endpoint Configuration Manager
Manage device restarts after updates
Walkthrough: Use Group Policy to configure
Windows Update for Business
3/26/2021 • 12 minutes to read • Edit Online
Applies to
Windows 10
Overview
You can use Group Policy through the Group Policy Management Console (GPMC) to control how Windows
Update for Business works. You should consider and devise a deployment strategy for updates before you make
changes to the Windows Update for Business settings. See Prepare servicing strategy for Windows 10 updates
for more information.
An IT administrator can set policies for Windows Update for Business by using Group Policy, or they can be set
locally (per device). All of the relevant policies are under the path Computer configuration >
Administrative Templates > Windows Components > Windows Update .
To manage updates with Windows Update for Business as described in this article, you should prepare with
these steps, if you haven't already:
Create Active Directory security groups that align with the deployment rings you use to phase deployment of
updates. See Build deployment rings for Windows 10 updates to learn more about deployment rings in
Windows 10.
Allow access to the Windows Update service.
Download and install ADMX templates appropriate to your Windows 10 version. For more information, see
How to create and manage the Central Store for Group Policy Administrative Templates in Windows and
Step-By-Step: Managing Windows 10 with Administrative templates.
When the quality update is released, it is offered to devices in the pilot ring the next time they scan for updates.
Fi ve days l at er
The devices in the fast ring are offered the quality update the next time they scan for updates.
Te n d a y s l a t e r
Ten days after the quality update is released, it is offered to the devices in the slow ring the next time they scan
for updates.
If no problems occur, all of the devices that scan for updates will be offered the quality update within ten days of
its release, in three waves.
W h at i f a pr o bl em o c c u r s w i t h t h e u pdat e?
In this example, some problem is discovered during the deployment of the update to the "pilot" ring.
At this point, the IT administrator can set a policy to pause the update. In this example, the admin selects the
Pause quality updates check box.
Now all devices are paused from updating for 35 days. When the pause is removed, they will be offered the next
quality update, which ideally will not have the same issue. If there is still an issue, the IT admin can pause
updates again.
I want to stay on a specific version
If you need a device to stay on a version beyond the point when deferrals on the next version would elapse or if
you need to skip a version (for example, update fall release to fall release) use the Select the target Feature
Update version setting instead of using the Specify when Preview Builds and Feature Updates are
received setting for feature update deferrals. When you use this policy, specify the version that you want your
device(s) to use. If you don't update this before the device reaches end of service, the device will automatically
be updated once it is 60 days past end of service for its edition.
When you set the target version policy, if you specify a feature update version that is older than your current
version or set a value that isn't valid, the device will not receive any feature updates until the policy is updated.
When you specify target version policy, feature update deferrals will not be in effect.
Manage how users experience updates
I want to manage when devices download, install, and restart after updates
We recommend that you allow to update automatically--this is the default behavior. If you don't set an
automatic update policy, the device will attempt to download, install, and restart at the best times for the user by
using built-in intelligence such as intelligent active hours and smart busy check.
For more granular control, you can set the maximum period of active hours the user can set with Computer
Configuration > Administrative Templates > Windows Components > Windows Update > Specify
active hours range for auto restar t .
It's best to refrain from setting the active hours policy because it's enabled by default when automatic updates
are not disabled and provides a better experience when users can set their own active hours. If you do want to
set active hours, use Computer Configuration > Administrative Templates > Windows Components >
Windows Update > Turn off auto-restar t for updates during active hours .
To update outside of the active hours, you don't need to set any additional settings: simply don't disable
automatic restarts. For even more granular control, consider using automatic updates to schedule the install
time, day, or week. To do this, use Computer Configuration > Administrative Templates > Windows
Components > Windows Update > Configure Automatic Updates and select Auto download and
schedule the install . You can customize this setting to accommodate the time that you want the update to be
installed for your devices.
When you set these policies, installation happens automatically at the specified time and the device will restart
15 minutes after installation is complete (unless it's interrupted by the user).
I want to keep devices secure and compliant with update deadlines
We recommend that you use Computer Configuration > Administrative Templates > Windows
Components > Windows Update > Specify deadline for automatic updates and restar ts for feature
and quality updates to ensure that devices stay secure on Windows 10, version 1709 and later. This works by
enabling you to specify the number of days that can elapse after an update is offered to a device before it must
be installed. Also you can set the number of days that can elapse after a pending restart before the user is forced
to restart.
This policies also offers an option to opt out of automatic restarts until a deadline is reached by presenting an
"engaged restart experience" until the deadline has actually expired. At that point the device will automatically
schedule a restart regardless of active hours.
These notifications are what the user sees depending on the settings you choose:
When Specify deadlines for automatic updates and restar ts is set (For Windows 10, version 1709 and
later):
While restar t is pending, before the deadline occurs:
For the first few days, the user receives a toast notification
After this period, the user receives this dialog:
If the user scheduled a restart, or if an auto restart is scheduled, 15 minutes before the scheduled
time the user is receives this notification that the restart is about to occur:
Once the deadline has passed, the user is forced to restart to keep their devices in compliance and
receives this notification:
I want to manage the notifications a user sees
There are additional settings that affect the notifications.
We recommend that you use the default notifications as they aim to provide the best user experience while
adjusting for the compliance policies that you have set. If you do have further needs that are not met by the
default notification settings, you can use Computer Configuration > Administrative Templates >
Windows Components > Windows Update > Display options for update notifications with these
values:
0 (default) – Use the default Windows Update notifications 1 – Turn off all notifications, excluding restart
warnings 2 – Turn off all notifications, including restart warnings
NOTE
Option 2 creates a poor experience for personal devices; it's only recommended for kiosk devices where automatic
restarts have been disabled.
Still more options are available in Computer Configuration > Administrative Templates > Windows
Components > Windows Update > Configure auto-restar t restar t warning notifications schedule
for updates . This setting allows you to specify the period for auto-restart warning reminder notifications (from
2-24 hours; 4 hours is the default) before the update and to specify the period for auto-restart imminent
warning notifications (15-60 minutes is the default). We recommend using the default notifications.
I want to manage the update settings a user can access
Every Windows device provides users with a variety of controls they can use to manage Windows Updates. They
can access these controls by Search to find Windows Updates or by going selecting Updates and Security in
Settings . We provide the ability to disable a variety of these controls that are accessible to users.
Users with access to update pause settings can prevent both feature and quality updates for 7 days. You can
prevent users from pausing updates through the Windows Update settings page by using Computer
Configuration > Administrative Templates > Windows Components > Windows Update > Remove
access to “Pause updates . When you disable this setting, users will see Some settings are managed by
your organization and the update pause settings are greyed out.
If you use Windows Server Update Server (WSUS), you can prevent users from scanning Windows Update. To
do this, use Computer Configuration > Administrative Templates > Windows Components >
Windows Update > Remove access to use all Windows Update features .
Related topics
Update Windows 10 in the enterprise
Overview of Windows as a service
Prepare servicing strategy for Windows 10 updates
Build deployment rings for Windows 10 updates
Assign devices to servicing channels for Windows 10 updates
Optimize update delivery for Windows 10 updates
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Deploy updates using Windows Update for Business
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Intune to configure Windows Update for Business
Deploy Windows 10 updates using Windows Server Update Services
Deploy Windows 10 updates using Microsoft Endpoint Configuration Manager
Manage device restarts after updates
Update Windows installation media with Dynamic
Update
8/5/2021 • 18 minutes to read • Edit Online
Dynamic Update
Whenever installation of a feature update starts (whether from media or an environment connected to Windows
Update), Dynamic Update is one of the first steps. Windows Setup contacts a Microsoft endpoint to fetch
Dynamic Update packages, and then applies those updates to your operating system installation media. The
update packages include the following kinds of updates:
Updates to Setup.exe binaries or other files that Setup uses for feature updates
Updates for the "safe operating system" (SafeOS) that is used for the Windows recovery environment
Updates to the servicing stack necessary to complete the feature update (see Servicing stack updates for
more information)
The latest cumulative (quality) update
Updates to applicable drivers already published by manufacturers specifically intended for Dynamic Update
Dynamic Update preserves language pack and Features on Demand packages by reacquiring them.
Devices must be able to connect to the internet to obtain Dynamic Updates. In some environments, it's not an
option to obtain Dynamic Updates. You can still do a media-based feature update by acquiring Dynamic Update
packages and applying it to the image prior to starting Setup on the device.
TO F IN D T H IS DY N A M IC
UP DAT E PA C K A GES,
SEA RC H F O R O R C H EC K DESC RIP T IO N ( SEL EC T T H E
T H E RESULT S H ERE T IT L E P RO DUC T T IT L E L IN K TO SEE DETA IL S )
Servicing stack Dynamic 2019-09 Ser vicing Stack Windows 10... Install this update to
Update Update for Windows 10 resolve issues in Windows...
If you want to customize the image with additional languages or Features on Demand, download supplemental
media ISO files from the Volume Licensing Service Center. For example, since Dynamic Update will be disabled
for your devices, and if users require specific Features on Demand, you can preinstall these into the image.
O P ERAT IN G SY ST EM
TA SK W IN RE ( W IN RE. W IM ) W IN P E ( B O OT. W IM ) ( IN STA L L . W IM ) N EW M EDIA
Add localized 3 11
optional packages
Add text-to-speech 5 13
Update Lang.ini 14
Add Features on 20
Demand
Add Safe OS 6
Dynamic Update
Add Optional 23
Components
Export image 8 17 25
NOTE
Starting in February 2021, the latest cumulative update and servicing stack update will be combined and distributed in
the Microsoft Update Catalog as a new combined cumulative update. For Steps 1, 9, and 18 that require the servicing
stack update for updating the installation media, you should use the combined cumulative update. For more information
on the combined cumulative update, see Servicing stack updates.
NOTE
Microsoft will remove the Flash component from Windows through KB4577586, “Update for Removal of Adobe Flash
Player”. You can also remove Flash anytime by deploying the update in KB4577586 (available on the Catalog) between
steps 20 and 21. As of July 2021, KB4577586, “Update for Removal of Adobe Flash Player” will be included in the latest
cumulative update for Windows 10, versions 1607 and 1507. The update will also be included in the Monthly Rollup and
the Security Only Update for Windows 8.1, Windows Server 2012, and Windows Embedded 8 Standard. For more
information, see Update on Adobe Flash Player End of Support.
C:\mediaRefresh\oldMedia Folder that contains the original media that will be refreshed.
For example, contains Setup.exe, and \sources folder.
C:\mediaRefresh\newMedia Folder that will contain the updated media. It is copied from
\oldMedia, then used as the target for all update and
cleanup operations.
Get started
The script starts by declaring global variables and creating folders to use for mounting images. Then, make a
copy of the original media, from \oldMedia to \newMedia, keeping the original media in case there is a script
error and it's necessary to start over from a known state. Also, it will provide a comparison of old versus new
media to evaluate changes. To ensure that the new media updates, make sure they are not read-only.
#Requires -RunAsAdministrator
# Keep the original media, make a copy of it for the new, updated media.
Write-Output "$(Get-TS): Copying original media to new media path"
Copy-Item -Path $MEDIA_OLD_PATH"\*" -Destination $MEDIA_NEW_PATH -Force -Recurse -ErrorAction stop | Out-
Null
Get-ChildItem -Path $MEDIA_NEW_PATH -Recurse | Where-Object { -not $_.PSIsContainer -and $_.IsReadOnly } |
ForEach-Object { $_.IsReadOnly = $false }
Update WinRE
The script assumes that only a single edition is being updated, indicated by Index = 1 (Windows 10 Education
Edition). Then the script mounts the image, saves Winre.wim to the working folder, and mounts it. It then applies
servicing stack Dynamic Update, since its components are used for updating other components. Since the script
is optionally adding Japanese, it adds the language pack to the image, and installs the Japanese versions of all
optional packages already installed in Winre.wim. Then, it applies the Safe OS Dynamic Update package.
It finishes by cleaning and exporting the image to reduce the image size.
#
# update Windows Recovery Environment (WinRE)
#
Copy-Item -Path $MAIN_OS_MOUNT"\windows\system32\recovery\winre.wim" -Destination $WORKING_PATH"\winre.wim"
-Force -Recurse -ErrorAction stop | Out-Null
Write-Output "$(Get-TS): Mounting WinRE"
Mount-WindowsImage -ImagePath $WORKING_PATH"\winre.wim" -Index 1 -Path $WINRE_MOUNT -ErrorAction stop | Out-
Null
# Note: If you are using a combined cumulative update, there may be a prerequisite servicing stack update
required
# This is where you'd add the prerequisite SSU, before applying the latest combined cumulative update.
# Note: If you are applying a combined cumulative update to a previously updated image (e.g. an image you
updated last month)
# There is a known issue where the servicing stack update is installed, but the cumulative update will fail.
# This error should be caught and ignored, as the last step will be to apply the cumulative update
# (or in this case the combined cumulative update) and thus the image will be left with the correct packages
installed.
try
{
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SSU_PATH | Out-Null
}
Catch
{
$theError = $_
Write-Output "$(Get-TS): $theError"
#
# Optional: Add the language to recovery environment
#
# Install lp.cab cab
Write-Output "$(Get-TS): Adding package $WINPE_OC_LP_PATH"
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_OC_LP_PATH -ErrorAction stop | Out-Null
$INDEX = $PACKAGE.PackageName.IndexOf("-Package")
if ($INDEX -ge 0) {
$OC_CAB = $PACKAGE.PackageName.Substring(0, $INDEX) + "_" + $LANG + ".cab"
if ($WINPE_OC_LANG_CABS.Contains($OC_CAB)) {
$OC_CAB_PATH = Join-Path $WINPE_OC_LANG_PATH $OC_CAB
Write-Output "$(Get-TS): Adding package $OC_CAB_PATH"
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $OC_CAB_PATH -ErrorAction stop | Out-Null
}
}
}
}
# Add Safe OS
Write-Output "$(Get-TS): Adding package $SAFE_OS_DU_PATH"
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SAFE_OS_DU_PATH -ErrorAction stop | Out-Null
# Dismount
Dismount-WindowsImage -Path $WINRE_MOUNT -Save -ErrorAction stop | Out-Null
# Export
Write-Output "$(Get-TS): Exporting image to $WORKING_PATH\winre2.wim"
Export-WindowsImage -SourceImagePath $WORKING_PATH"\winre.wim" -SourceIndex 1 -DestinationImagePath
$WORKING_PATH"\winre2.wim" -ErrorAction stop | Out-Null
Move-Item -Path $WORKING_PATH"\winre2.wim" -Destination $WORKING_PATH"\winre.wim" -Force -ErrorAction stop |
Out-Null
Update WinPE
This script is similar to the one that updates WinRE, but instead it mounts Boot.wim, applies the packages with
the latest cumulative update last, and saves. It repeats this for all images inside of Boot.wim, typically two
images. It starts by applying the servicing stack Dynamic Update. Since the script is customizing this media with
Japanese, it installs the language pack from the WinPE folder on the language pack ISO. Additionally, add font
support and text to speech (TTS) support. Since the script is adding a new language, it rebuilds lang.ini, used to
identify languages installed in the image. Finally, it cleans and exports Boot.wim, and copies it back to the new
media.
#
# update Windows Preinstallation Environment (WinPE)
#
# update WinPE
Write-Output "$(Get-TS): Mounting WinPE"
Mount-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\boot.wim" -Index $IMAGE.ImageIndex -Path
$WINPE_MOUNT -ErrorAction stop | Out-Null
# Add SSU
# Note: If you are using a combined cumulative update, there may be a prerequisite servicing stack
update required
# This is where you'd add the prerequisite SSU, before applying the latest combined cumulative update.
# Note: If you are applying a combined cumulative update to a previously updated image (e.g. an image
you updated last month)
# There is a known issue where the servicing stack update is installed, but the cumulative update will
fail.
# This error should be caught and ignored, as the last step will be to apply the cumulative update
# (or in this case the combined cumulative update) and thus the image will be left with the correct
packages installed.
try
{
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $SSU_PATH | Out-Null
}
Catch
{
$theError = $_
Write-Output "$(Get-TS): $theError"
$INDEX = $PACKAGE.PackageName.IndexOf("-Package")
if ($INDEX -ge 0) {
# Generates a new Lang.ini file which is used to define the language packs inside the image
if ( (Test-Path -Path $WINPE_MOUNT"\sources\lang.ini") ) {
Write-Output "$(Get-TS): Updating lang.ini"
DISM /image:$WINPE_MOUNT /Gen-LangINI /distribution:$WINPE_MOUNT | Out-Null
}
# Dismount
Dismount-WindowsImage -Path $WINPE_MOUNT -Save -ErrorAction stop | Out-Null
#Export WinPE
Write-Output "$(Get-TS): Exporting image to $WORKING_PATH\boot2.wim"
Export-WindowsImage -SourceImagePath $MEDIA_NEW_PATH"\sources\boot.wim" -SourceIndex $IMAGE.ImageIndex -
DestinationImagePath $WORKING_PATH"\boot2.wim" -ErrorAction stop | Out-Null
#
# update Main OS
#
# Note: If I wanted to enable additional Features on Demand, I'd add these here.
# Copy our updated recovery image from earlier into the main OS
# Note: If I were updating more than 1 edition, I'd want to copy the same recovery image file
# into each edition to enable single instancing
Copy-Item -Path $WORKING_PATH"\winre.wim" -Destination $MAIN_OS_MOUNT"\windows\system32\recovery\winre.wim"
-Force -Recurse -ErrorAction stop | Out-Null
#
# Note: If I wanted to enable additional Optional Components, I'd add these here.
# In addition, we'll add .NET 3.5 here as well. Both .NET and Optional Components might require
# the image to be booted, and thus if we tried to cleanup after installation, it would fail.
#
# Export
Write-Output "$(Get-TS): Exporting image to $WORKING_PATH\install2.wim"
Export-WindowsImage -SourceImagePath $MEDIA_NEW_PATH"\sources\install.wim" -SourceIndex 1 -
DestinationImagePath $WORKING_PATH"\install2.wim" -ErrorAction stop | Out-Null
Move-Item -Path $WORKING_PATH"\install2.wim" -Destination $MEDIA_NEW_PATH"\sources\install.wim" -Force -
ErrorAction stop | Out-Null
#
# update remaining files on media
#
# Add Setup DU by copy the files from the package into the newMedia
Write-Output "$(Get-TS): Adding package $SETUP_DU_PATH"
cmd.exe /c $env:SystemRoot\System32\expand.exe $SETUP_DU_PATH -F:* $MEDIA_NEW_PATH"\sources" | Out-Null
Finish up
As a last step, the script removes the working folder of temporary files, and unmounts our language pack and
Features on Demand ISOs.
#
# Perform final cleanup
#
This article provides some background on the problem of keeping language resources and Features on Demand
during operating system updates and offers guidance to help you move forward in the short term and prepare
for the long term.
When you update the operating system, it’s critical to keep language resources and Features on Demand (FODs).
Many commercial organizations use Configuration Manager or other management tools to distribute and
orchestrate Windows 10 setup using a local Windows image or WIM file (a “media-based” or “task-sequence-
based” update). Others do in-place updates using an approved Windows 10 feature update by using Windows
Server Update Services (WSUS), Configuration Manager, or equivalent tools (a "servicing-based” update).
Neither approach contains the full set of Windows optional features that a user’s device might need, so those
features are not migrated to the new operating system. Further, those features are not available in Configuration
Manager or WSUS for on-premises acquisition after a feature update
Learn more
For more information about the Unified Update Platform and the approaches outlined in this article, see the
following resources:
/InstallLangPacks
/DynamicUpdate
Configure a Windows Repair Source
Ignite 2019 theater session THR3073
Ignite 2019 theater session THR4002
Run custom actions during feature update
Unified Update Platform
Updating Windows 10 media with Dynamic Update packages
Windows Setup Automation Overview
Sample scripts
Options 3 and 5 involve the most scripting. Sample scripts for Option 3 already exist, so we’ll look at sample
scripts for Option 5: Install Optional Content after Deployment.
Creating an optional content repository
To get started, we’ll build a repository of optional content and host on a network share. This content is a subset
of content from the FOD and language pack ISOs that ship with each release. We’ll configure this repository or
repo with only those FODs our organization needs, using DISM /Export. For example, a superset based on taking
inventory of optional features installed on existing devices. In this case, we exclude the Windows Mixed Reality
feature. In addition, we copy all language packs to the root of the repository.
if (Test-Path $REPO_PATH) {
Remove-Item -Path $REPO_PATH -Force -Recurse -ErrorAction stop| Out-Null
}
# Mount the main OS, I'll use this throughout the script
Write-Host "Mounting main OS"
Mount-WindowsImage -ImagePath $MEDIA_PATH"\sources\install.wim" -Index 1 -Path $MAIN_OS_MOUNT -ErrorAction
stop| Out-Null
# Dismount OS image
Dismount-WindowsImage -Path $MAIN_OS_MOUNT -Discard -ErrorAction ignore | Out-Null
$OUTPUT_PATH = "C:\TEMP\"
$OUTPUT_PATH = "C:\TEMP\"
$LOG_PATH = $OUTPUT_PATH + "log.txt"
$OUTPUT_PATH = "C:\TEMP\"
$LOG_PATH = $OUTPUT_PATH + "log.txt"
$LANG_PATH = $OUTPUT_PATH + "sourceLang.txt"
$CAP_PATH = $OUTPUT_PATH + "sourceCapability.txt"
$OSVERSION_PATH = $OUTPUT_PATH + "sourceVersion.txt"
$REPO_PATH = "Z:\Repo\"
$LOCAL_REPO_PATH = $OUTPUT_PATH + "Local_Repo\"
Function Log
{
param (
[Parameter(Mandatory=$True)]
[string]$MESSAGE
)
Function IsLangFile
{
param (
[Parameter(Mandatory=$True)]
[string]$PATH
)
if (($PATH -match '[-_~]ar[-_~]') -or ($PATH -match '[-_~]bg[-_~]') -or ($PATH -match '[-_~]cs[-_~]') -
or `
($PATH -match '[-_~]da[-_~]') -or ($PATH -match '[-_~]de[-_~]') -or ($PATH -match '[-_~]el[-_~]') -
or `
($PATH -match '[-_~]en[-_~]') -or ($PATH -match '[-_~]es[-_~]') -or ($PATH -match '[-_~]et[-_~]') -
or `
($PATH -match '[-_~]fi[-_~]') -or ($PATH -match '[-_~]fr[-_~]') -or ($PATH -match '[-_~]he[-_~]') -
or `
($PATH -match '[-_~]hr[-_~]') -or ($PATH -match '[-_~]hu[-_~]') -or ($PATH -match '[-_~]it[-_~]') -
or `
($PATH -match '[-_~]ja[-_~]') -or ($PATH -match '[-_~]ko[-_~]') -or ($PATH -match '[-_~]lt[-_~]') -
or `
($PATH -match '[-_~]lv[-_~]') -or ($PATH -match '[-_~]nb[-_~]') -or ($PATH -match '[-_~]nl[-_~]') -
or `
($PATH -match '[-_~]pl[-_~]') -or ($PATH -match '[-_~]pt[-_~]') -or ($PATH -match '[-_~]ro[-_~]') -
or `
($PATH -match '[-_~]ru[-_~]') -or ($PATH -match '[-_~]sk[-_~]') -or ($PATH -match '[-_~]sl[-_~]') -
or `
($PATH -match '[-_~]sv[-_~]') -or ($PATH -match '[-_~]th[-_~]') -or ($PATH -match '[-_~]tr[-_~]') -
or `
($PATH -match '[-_~]uk[-_~]') -or ($PATH -match '[-_~]zh[-_~]') -or ($PATH -match '[-_~]sr[-_~]')) {
return $True
}
else {
return $False
}
}
# Get OS version, to use later for detecting compat scans versus OS installation
# Get OS version, to use later for detecting compat scans versus OS installation
$OSINFO = Get-CimInstance Win32_OperatingSystem
Log "OS Version: $($OSINFO.Version)"
Add-Content -Path $OSVERSION_PATH -Value $OSINFO.Version
# Save System Language, save only output line with default system language
$SYSLANG = $INTL | Select-String -SimpleMatch 'Default system UI language'
# Get and save installed packages, we'll use this for debugging
$PACKAGES = Get-WindowsPackage -Online
ForEach ($ITEM in $PACKAGES) {
if($ITEM.PackageState -eq "Installed") {
Log "Package $($ITEM.PackageName) is installed"
}
}
# Copy a subset of the Repo files locally, all neutral files and the languages needed
$REPO_FILES = Get-ChildItem $REPO_PATH -file -Recurse
ForEach ($FILE in $REPO_FILES) {
$PATH = ($FILE.DirectoryName + "\") -Replace [Regex]::Escape($REPO_PATH), $LOCAL_REPO_PATH
If (!(Test-Path $Path)) {
New-Item -ItemType Directory -Path $PATH -Force | Out-Null
}
If ((IsLangFile $FILE.Name)) {
# Only copy those files where we need the primary languages from the source OS
ForEach ($ITEM in $LANGUAGES) {
if ($FILE.Name -match $Item) {
# Copy all 'neutral files' and those language specific that are not in the core 38
If (!(Test-Path (Join-Path $Path $File.Name))) {
If (!(Test-Path (Join-Path $Path $File.Name))) {
Copy-Item $FILE.FullName -Destination $PATH -Force
Log "Copied file $($FILE.FullName) to local repository"
}
else {
Log "File $($FILE.Name) already exists in local repository"
}
}
}
Log ("Exiting")
$OUTPUT_PATH = "C:\TEMP\"
$LOG_PATH = $OUTPUT_PATH + "log.txt"
$LANG_PATH = $OUTPUT_PATH + "sourceLang.txt"
$CAP_PATH = $OUTPUT_PATH + "sourceCapability.txt"
$OSVERSION_PATH = $OUTPUT_PATH + "sourceVersion.txt"
$LOCAL_REPO_PATH = $OUTPUT_PATH + "Local_Repo\"
$LCU_PATH = $OUTPUT_PATH + "Windows10.0-KB4565503-x64_PSFX.cab"
$PENDING = $false
Function Log
{
param (
[Parameter(Mandatory=$True)]
[string]$MESSAGE
)
Log "Starting"
# Get OS version
$OSINFO = Get-CimInstance Win32_OperatingSystem
Log "OS Version: $($OSINFO.Version)"
# If this script is executing and the OS version hasn't changed, let's exit out.
else {
else {
# Save System Language, save only output line with default system language
$SYS_LANG = $INTL | Select-String -SimpleMatch 'Default system UI language'
# Get and save installed packages, we'll use this for debugging
$PACKAGES = Get-WindowsPackage -Online
ForEach ($ITEM in $PACKAGES) {
if($ITEM.PackageState -eq "Installed") {
Log "Package $($ITEM.PackageName) is installed"
}
}
# Get packages, we'll use this for debugging and to see if we need to restart to install
$PACKAGES = Get-WindowsPackage -Online
ForEach ($ITEM in $PACKAGES) {
Log "Package $($ITEM.PackageName) is $($ITEM.PackageState)"
if ($ITEM.PackageState -eq "InstallPending") {
$PENDING = $true
}
}
}
}
Log ("Exiting")
Safeguard holds
3/26/2021 • 2 minutes to read • Edit Online
Microsoft uses quality and compatibility data to identify issues that might cause a Windows 10 feature update to
fail or roll back. When we find such an issue, we might apply holds to the updating service to prevent affected
devices from installing the update in order to safeguard them from these experiences. We also use holds when a
customer, a partner, or Microsoft internal validation finds an issue that would cause severe impact (for example,
rollback of the update, data loss, loss of connectivity, or loss of key functionality) and when a workaround is not
immediately available.
Safeguard holds prevent a device with a known issue from being offered a new operating system version. We
renew the offering once a fix is found and verified. We use holds to ensure customers have a successful
experience as their device moves to a new version of Windows 10.
The lifespan of holds varies depending on the time required to investigate and fix an issue. During this time
Microsoft works diligently to procure, develop, and validate a fix and then offer it to affected devices. We
monitor quality and compatibility data to confirm that a fix is complete before releasing the hold. Once we
release the hold, Windows Update will resume offering new operating system versions to devices.
Safeguard holds only affect devices that use the Window Update service for updates. We encourage IT admins
who manage updates to devices through other channels (such as media installations or updates coming from
Windows Server Update Services) to remain aware of known issues that might also be present in their
environments.
If you see this message, it means one or more holds affect your device. When the issue is fixed and the update is
safe to install, we’ll release the hold and the update can resume safely.
Opting out of a safeguard hold can put devices at risk from known performance issues. We strongly
recommend that you complete robust testing to ensure the impact is acceptable before opting out.
With that in mind, IT admins who stay informed with Update Compliance and the Windows release health
dashboard can choose to temporarily opt-out of the protection of all safeguard holds and allow an update to
proceed. We recommend opting out only in an IT environment and for validation purposes. If you do opt out of
a hold, this condition is temporary. Once an update is complete, the protection of safeguard holds is reinstated
automatically.
Manage device restarts after updates
3/26/2021 • 10 minutes to read • Edit Online
Applies to
Windows 10
You can use Group Policy settings, mobile device management (MDM), or Registry (not recommended) to
configure when devices will restart after a Windows 10 update is installed. You can schedule update installation
and set policies for restart, configure active hours for when restarts will not occur, or you can do both.
NOTE
When using Remote Desktop Protocol connections, only active RDP sessions are considered as logged on users. Devices
that do not have locally logged on users, or active RDP sessions, will be restarted.
You can also use Registry, to prevent automatic restarts when a user is signed in. Under
HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU , set AuOptions to 4 and enable
NoAutoRebootWithLoggedOnUsers . As with Group Policy, if a user schedules the restart in the update
notification, it will override this setting.
For a detailed description of these registry keys, see Registry keys used to manage restart.
NOTE
To configure active hours manually on a single device, go to Settings > Update & security > Windows Update and
select Change active hours .
P O L IC Y A P P L IES TO W IN DO W S 10 N OT ES
Turn off auto-restart for updates Use this policy to configure active
during active hours hours, during which the device will not
be restarted. This policy has no effect if
the No auto-restar t with logged
on users for scheduled automatic
updates installations or Always
automatically restar t at the
scheduled time policies are enabled.
Specify deadline before auto-restart Use this policy to specify how many
for update installation days (between 2 and 14) an automatic
restart can be delayed. This policy has
no effect if the No auto-restar t with
logged on users for scheduled
automatic updates installations or
Always automatically restar t at
the scheduled time policies are
enabled.
NOTE
You can only choose one path for restart behavior. If you set conflicting restart policies, the actual restart behavior may
not be what you expected. When using RDP, only active RDP sessions are considered as logged on users.
REGIST RY K EY K EY T Y P E VA L UE
HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU
REGIST RY K EY K EY T Y P E VA L UE
Related articles
Update Windows 10 in the enterprise
Overview of Windows as a service
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Manage additional Windows Update settings
3/26/2021 • 11 minutes to read • Edit Online
Applies to
Windows 10
You can use Group Policy settings or mobile device management (MDM) to configure the behavior of Windows
Update (WU) on your Windows 10 devices. You can configure the update detection frequency, select when
updates are received, specify the update service location and more.
IMPORTANT
Additional information about settings to manage device restarts and restart notifications for updates is available on
Manage device restar ts after updates .
Additional settings that configure when Feature and Quality updates are received are detailed on Configure Windows
Update for Business .
NOTE
If the "Configure Automatic Updates" policy is disabled, then this policy has no effect.
If the "Alternate Download Server" is not set, it will use the intranet update service by default to download updates.
The option to "Download files with no Url..." is only used if the "Alternate Download Server" is set.
NOTE
The "Specify intranet Microsoft update service location" setting must be enabled for this policy to have effect.
If the "Configure Automatic Updates" policy is disabled, this policy has no effect.
NOTE
This policy applies only when the device is configured to connect to an intranet update service using the "Specify intranet
Microsoft update service location" policy.
NOTE
Updates from a service other than an intranet Microsoft update service must always be signed by Microsoft and are not
affected by this policy setting.
Installing updates
To add more flexibility to the update process, settings are available to control update installation.
Configure Automatic Updates offers 4 different options for automatic update installation, while Do not include
drivers with Windows Updates makes sure drivers are not installed with the rest of the received updates.
Do not include drivers with Windows Updates
Allows admins to exclude Windows Update (WU) drivers during updates.
To configure this setting in Group Policy, use Computer Configuration\Administrative
Templates\Windows Components\Windows update\Do not include drivers with Windows Updates .
Enable this policy to not include drivers with Windows quality updates. If you disable or do not configure this
policy, Windows Update will include updates that have a Driver classification.
Configure Automatic Updates
Enables the IT admin to manage automatic update behavior to scan, download, and install updates.
Configuring Automatic Updates by using Group Policy
Under Computer Configuration\Administrative Templates\Windows Components\Windows
update\Configure Automatic Updates , you must select one of the four options:
2 - Notify for download and auto install - When Windows finds updates that apply to this device, users will
be notified that updates are ready to be downloaded. After going to Settings > Update & security >
Windows Update , users can download and install any available updates.
3 - Auto download and notify for Install - Windows finds updates that apply to the device and downloads
them in the background (the user is not notified or interrupted during this process). When the downloads are
complete, users will be notified that they are ready to install. After going to Settings > Update & security >
Windows Update , users can install them.
4 - Auto download and schedule the install - Specify the schedule using the options in the Group Policy
Setting. For more information about this setting, see Schedule update installation.
5 - Allow local admin to choose setting - With this option, local administrators will be allowed to use the
settings app to select a configuration option of their choice. Local administrators will not be allowed to disable
the configuration for Automatic Updates.
If this setting is set to Disabled, any updates that are available on Windows Update must be downloaded and
installed manually. To do this, users must go to Settings > Update & security > Windows Update .
If this setting is set to Not Configured, an administrator can still configure Automatic Updates through the
settings app, under Settings > Update & security > Windows Update > Advanced options .
Configuring Automatic Updates by editing the registry
NOTE
Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method.
These problems might require you to reinstall the operating system. Microsoft cannot guarantee that these problems can
be resolved. Modify the registry at your own risk.
In an environment that does not have Active Directory deployed, you can edit registry settings to configure
group policies for Automatic Update.
To do this, follow these steps:
1. Select Star t , search for "regedit", and then open Registry Editor.
2. Open the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
NOTE
This setting only affects client behavior after the clients have updated to the SUS SP1 client version or later
versions.
NoAutoRebootWithLoggedOnUsers (REG_DWORD):
0 (false) or 1 (true). If set to 1 , Automatic Updates does not automatically restart a computer while
users are logged on.
NOTE
This setting affects client behavior after the clients have updated to the SUS SP1 client version or later
versions.
To use Automatic Updates with a server that is running Software Update Services, see the Deploying Microsoft
Windows Server Update Services 2.0 guidance.
When you configure Automatic Updates directly by using the policy registry keys, the policy overrides the
preferences that are set by the local administrative user to configure the client. If an administrator removes the
registry keys at a later date, the preferences that were set by the local administrative user are used again.
To determine the WSUS server that the client computers and servers connect to for updates, add the following
registry values to the registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\
WUServer (REG_SZ)
This value sets the WSUS server by HTTP name (for example, http://IntranetSUS).
WUStatusServer (REG_SZ)
This value sets the SUS statistics server by HTTP name (for example, http://IntranetSUS).
Related topics
Update Windows 10 in the enterprise
Overview of Windows as a service
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Configure Windows Update for Business
Manage device restarts after updates
Deploy feature updates during maintenance
windows
6/8/2021 • 18 minutes to read • Edit Online
Applies to : Windows 10
Use the following information to deploy feature updates during a maintenance window.
NOTE
The following settings must be shorter in duration than the shortest maintenance window applied to the computer.
Display a temporar y notification to the user that indicates the inter val before the user is logged off or
the computer restar ts (minutes).
Display a dialog box that the user cannot close, which displays the countdown inter val before the user
is logged off or the computer restar ts (minutes).
[SetupConfig]
Priority=Normal
You can use the new Run Scripts feature to run a PowerShell script like the sample below to create the
SetupConfig.ini on target devices.
#Parameters
Param(
[string] $PriorityValue = "Normal"
)
<#
Disclaimer
Sample scripts are not supported under any Microsoft standard support program or service. The sample scripts
is
provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including,
without
limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire
risk
arising out of the use or performance of the sample script and documentation remains with you. In no event
shall
Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be
liable
for any damages whatsoever (including, without limitation, damages for loss of business profits, business
interruption,
loss of business information, or other pecuniary loss) arising out of the use of or inability to use the
sample script
or documentation, even if Microsoft has been advised of the possibility of such damages.
#>
NOTE
If you elect not to override the default setup priority, you will need to increase the maximum run time value for Feature
Update to Windows 10, version 1709 or higher from the default of 60 minutes. A value of 240 minutes may be required.
Remember to ensure that your maintenance window duration is larger than your defined maximum run time value.
NOTE
The deployment package source location that you specify cannot be used by another software deployment
package.
IMPORTANT
The SMS Provider computer account and the user that is running the wizard to download the feature updates
must both have Write NTFS permissions on the download location. You should carefully restrict access to the
download location to reduce the risk of attackers tampering with the feature update source files.
IMPORTANT
You can change the package source location in the deployment package properties after Configuration Manager
creates the deployment package. But if you do so, you must first copy the content from the original package
source to the new package source location.
Click Next .
4. On the Distribution Points page, specify the distribution points or distribution point groups that will
host the feature update files, and then click Next . For more information about distribution points, see
Distribution point configurations.
NOTE
The Distribution Points page is available only when you create a new software update deployment package.
NOTE
When you use this setting, download the software updates from any computer with Internet access, and
then copy the software updates to a location on the local network that is accessible from the computer
running the wizard.
Click Next .
7. On the Language Selection page, specify the languages for which the selected feature updates are to
be downloaded, and then click Next . Ensure that your language selection matches the language(s) of the
feature updates selected for download. For example, if you selected English and German based feature
updates for download, select those same languages on the language selection page.
8. On the Summar y page, verify the settings that you selected in the wizard, and then click Next to
download the software updates.
9. On the Completion page, verify that the software updates were successfully downloaded, and then click
Close.
To monitor content status
1. To monitor the content status for the feature updates, click Monitoring in the Configuration Manager
console.
2. In the Monitoring workspace, expand Distribution Status , and then click Content Status .
3. Select the feature update package that you previously identified to download the feature updates.
4. On the Home tab, in the Content group, click View Status .
Step 3: Deploy the feature update (s)
After you determine which feature updates you intend to deploy, you can manually deploy the feature update(s).
Use the following procedure to manually deploy the feature update(s).
1. In the Configuration Manager console, click Software Librar y .
2. In the Software Library workspace, expand Windows 10 Ser vicing , and click All Windows 10
Updates .
3. Choose the feature update(s) to deploy by using your saved search criteria. Select one or more of the
feature updates returned, right click, and select Deploy .
The Deploy Software Updates Wizard opens.
4. On the General page, configure the following settings:
Name : Specify the name for the deployment. The deployment must have a unique name that
describes the purpose of the deployment and differentiates it from other deployments in the
Configuration Manager site. By default, Configuration Manager automatically provides a name for the
deployment in the following format: Microsoft Software Updates - <date><time>
Description : Specify a description for the deployment. The description provides an overview of the
deployment and any other relevant information that helps to identify and differentiate the deployment
among others in Configuration Manager site. The description field is optional, has a limit of 256
characters, and has a blank value by default.
Software Update/Software Update Group : Verify that the displayed software update group, or
software update, is correct.
Select Deployment Template : Specify whether to apply a previously saved deployment template.
You can configure a deployment template to contain multiple common software update deployment
properties and then apply the template when you deploy subsequent software updates to ensure
consistency across similar deployments and to save time.
Collection : Specify the collection for the deployment, as applicable. Members of the collection receive
the feature updates that are defined in the deployment.
5. On the Deployment Settings page, configure the following settings:
Type of deployment : Specify the deployment type for the software update deployment. Select
Required to create a mandatory software update deployment in which the feature updates are
automatically installed on clients before a configured installation deadline.
IMPORTANT
After you create the software update deployment, you cannot later change the type of deployment.
NOTE
A software update group deployed as Required will be downloaded in background and honor BITS
settings, if configured.
WARNING
Before you can use this option, computers and networks must be configured for Wake On LAN.
Detail level : Specify the level of detail for the state messages that are reported by client
computers.
6. On the Scheduling page, configure the following settings:
Schedule evaluation : Specify whether the available time and installation deadline times are
evaluated according to UTC or the local time of the computer running the Configuration Manager
console.
NOTE
When you select local time, and then select As soon as possible for the Software available time or
Installation deadline , the current time on the computer running the Configuration Manager console is
used to evaluate when updates are available or when they are installed on a client. If the client is in a
different time zone, these actions will occur when the client's time reaches the evaluation time.
Software available time : Select As soon as possible to specify when the software updates will
be available to clients:
As soon as possible : Select this setting to make the software updates in the deployment
available to clients as soon as possible. When the deployment is created, the client policy is
updated, the clients are made aware of the deployment at their next client policy polling cycle,
and then the software updates are available for installation.
Installation deadline : Select Specific time to specify the installation deadline for the software
updates in the deployment.
NOTE
You can configure the installation deadline setting only when Type of deployment is set to Required on
the Deployment Settings page.
Specific time : Select this setting to automatically install the software updates in the deployment
at a specific date and time. Set the date and time value to correspond with your defined
maintenance window for the target collection. Allow sufficient time for clients to download the
content in advance of the deadline. Adjust accordingly if clients in your environment will need
additional download time. E.g., slow or unreliable network links.
NOTE
The actual installation deadline time is the specific time that you configure plus a random amount of time up to 2
hours. This reduces the potential impact of all client computers in the destination collection installing the software
updates in the deployment at the same time. Configure the Computer Agent client setting, Disable deadline
randomization to disable the installation randomization delay for the required software updates to allow a greater
chance for the installation to start and complete within your defined maintenance window. For more information,
see Computer Agent.
IMPORTANT
Suppressing system restarts can be useful in server environments or for cases in which you do not want
the computers that are installing the software updates to restart by default. However, doing so can leave
computers in an insecure state, whereas allowing a forced restart helps to ensure immediate completion of
the software update installation.
Write filter handling for Windows Embedded devices : When you deploy software updates
to Windows Embedded devices that are write filter enabled, you can specify to install the software
update on the temporary overlay and either commit changes later or commit the changes at the
installation deadline or during a maintenance window. When you commit changes at the
installation deadline or during a maintenance window, a restart is required and the changes persist
on the device.
NOTE
When you deploy a software update to a Windows Embedded device, make sure that the device is a
member of a collection that has a configured maintenance window.
NOTE
You can review recent software updates alerts from the Software Updates node in the Software Library workspace.
NOTE
Clients request the content location from a management point for the software updates in a deployment.
The download behavior depends upon how you have configured the distribution point, the deployment
package, and the settings on this page. For more information, see Content source priority.
10. On the Summary page, review the settings. To save the settings to a deployment template, click Save As
Template , enter a name and select the settings that you want to include in the template, and then click
Save . To change a configured setting, click the associated wizard page and change the setting.
11. Click Next to deploy the feature update(s).
Step 4: Monitor the deployment status
After you deploy the feature update(s), you can monitor the deployment status. Use the following procedure to
monitor the deployment status:
1. In the Configuration Manager console, navigate to Monitoring > Over view > Deployments .
2. Click the software update group or software update for which you want to monitor the deployment status.
3. On the Home tab, in the Deployment group, click View Status .
Deploy feature updates for user-initiated
installations (during a fixed service window)
3/26/2021 • 16 minutes to read • Edit Online
Applies to : Windows 10
Use the following steps to deploy a feature update for a user-initiated installation.
[SetupConfig]
Priority=Normal
You can use the new Run Scripts feature to run a PowerShell script like the sample below to create the
SetupConfig.ini on target devices.
#Parameters
Param(
[string] $PriorityValue = "Normal"
)
<#
Disclaimer
Sample scripts are not supported under any Microsoft standard support program or service. The sample scripts
is
provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including,
without
limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire
risk
arising out of the use or performance of the sample script and documentation remains with you. In no event
shall
Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be
liable
for any damages whatsoever (including, without limitation, damages for loss of business profits, business
interruption,
loss of business information, or other pecuniary loss) arising out of the use of or inability to use the
sample script
or documentation, even if Microsoft has been advised of the possibility of such damages.
#>
NOTE
If you elect not to override the default setup priority, you will need to increase the maximum run time value for Feature
Update to Windows 10, version 1709 or higher from the default of 60 minutes. A value of 240 minutes may be required.
Remember to ensure that your maintenance window duration is larger than your defined maximum run time value.
NOTE
The deployment package source location that you specify cannot be used by another software
deployment package.
IMPORTANT
The SMS Provider computer account and the user that is running the wizard to download the feature
updates must both have Write NTFS permissions on the download location. You should carefully restrict
access to the download location to reduce the risk of attackers tampering with the feature update source
files.
IMPORTANT
You can change the package source location in the deployment package properties after Configuration
Manager creates the deployment package. But if you do so, you must first copy the content from the
original package source to the new package source location.
Click Next .
4. On the Distribution Points page, specify the distribution points or distribution point groups that will
host the feature update files, and then click Next . For more information about distribution points, see
Distribution point configurations.
NOTE
The Distribution Points page is available only when you create a new software update deployment package.
Click Next .
7. On the Language Selection page, specify the languages for which the selected feature updates are to
be downloaded, and then click Next . Ensure that your language selection matches the language(s) of the
feature updates selected for download. For example, if you selected English and German based feature
updates for download, select those same languages on the language selection page.
8. On the Summar y page, verify the settings that you selected in the wizard, and then click Next to
download the software updates.
9. On the Completion page, verify that the software updates were successfully downloaded, and then click
Close .
To monitor content status
1. To monitor the content status for the feature updates, click Monitoring in the Configuration Manager
console.
2. In the Monitoring workspace, expand Distribution Status , and then click Content Status .
3. Select the feature update package that you previously identified to download the feature updates.
4. On the Home tab, in the Content group, click View Status .
Step 3: Deploy the feature update (s)
After you determine which feature updates you intend to deploy, you can manually deploy the feature update(s).
Use the following procedure to manually deploy the feature update(s).
1. In the Configuration Manager console, click Software Librar y .
2. In the Software Library workspace, expand Windows 10 Ser vicing , and click All Windows 10
Updates .
3. Choose the feature update(s) to deploy by using your saved search criteria. Select one or more of the
feature updates returned, right click, and select Deploy .
The Deploy Software Updates Wizard opens.
4. On the General page, configure the following settings:
Name : Specify the name for the deployment. The deployment must have a unique name that
describes the purpose of the deployment and differentiates it from other deployments in the
Configuration Manager site. By default, Configuration Manager automatically provides a name for the
deployment in the following format: Microsoft Software Updates - <date><time>
Description : Specify a description for the deployment. The description provides an overview of the
deployment and any other relevant information that helps to identify and differentiate the deployment
among others in Configuration Manager site. The description field is optional, has a limit of 256
characters, and has a blank value by default.
Software Update/Software Update Group : Verify that the displayed software update group, or
software update, is correct.
Select Deployment Template : Specify whether to apply a previously saved deployment template.
You can configure a deployment template to contain multiple common software update deployment
properties and then apply the template when you deploy subsequent software updates to ensure
consistency across similar deployments and to save time.
Collection : Specify the collection for the deployment, as applicable. Members of the collection receive
the feature updates that are defined in the deployment.
5. On the Deployment Settings page, configure the following settings:
Type of deployment : Specify the deployment type for the software update deployment. Select
Required to create a mandatory software update deployment in which the feature updates are
automatically installed on clients before a configured installation deadline.
IMPORTANT
After you create the software update deployment, you cannot later change the type of deployment.
NOTE
A software update group deployed as Required will be downloaded in background and honor BITS
settings, if configured.
WARNING
Before you can use this option, computers and networks must be configured for Wake On LAN.
Detail level : Specify the level of detail for the state messages that are reported by client
computers.
6. On the Scheduling page, configure the following settings:
Schedule evaluation : Specify whether the available time and installation deadline times are
evaluated according to UTC or the local time of the computer running the Configuration Manager
console.
Software available time : Select Specific time to specify when the software updates will be
available to clients:
Specific time : Select this setting to make the feature update in the deployment available to
clients at a specific date and time. Specify a date and time that corresponds with the start of
your fixed servicing window. When the deployment is created, the client policy is updated and
clients are made aware of the deployment at their next client policy polling cycle. However, the
feature update in the deployment is not available for installation until after the specified date
and time are reached and the required content has been downloaded.
Installation deadline : Select Specific time to specify the installation deadline for the software
updates in the deployment.
NOTE
You can configure the installation deadline setting only when Type of deployment is set to Required on
the Deployment Settings page.
Specific time : Select this setting to automatically install the software updates in the
deployment at a specific date and time. However, for the purposes of the fixed servicing
window, set the installation deadline date and time to a future value, well beyond the fixed
servicing window.
Required deployments for software updates can benefit from functionality called advanced
download. When the software available time is reached, clients will start downloading the content
based on a randomized time. The feature update will not be displayed in Software Center for
installation until the content is fully downloaded. This ensures that the feature update installation
will start immediately when initiated.
7. On the User Experience page, configure the following settings:
User notifications : Specify Display in Software Center and show all notifications .
Deadline behavior : Available only when Type of deployment is set to Required on the
Deployment Settings page. Specify the behavior that is to occur when the deadline is reached for
the software update deployment. Specify whether to install the software updates in the
deployment. Also specify whether to perform a system restart after software update installation
regardless of a configured maintenance window.
NOTE
Remember that the installation deadline date and time will be well into the future to allow plenty of time
for the user-initiated install during a fixed servicing window.
Device restar t behavior : Available only when Type of deployment is set to Required on the
Deployment Settings page. Specify whether to suppress a system restart on servers and
workstations after software updates are installed and a system restart is required to complete the
installation.
IMPORTANT
Suppressing system restarts can be useful in server environments or for cases in which you do not want
the computers that are installing the software updates to restart by default. However, doing so can leave
computers in an insecure state, whereas allowing a forced restart helps to ensure immediate completion of
the software update installation.
Write filter handling for Windows Embedded devices : When you deploy software updates
to Windows Embedded devices that are write filter enabled, you can specify to install the software
update on the temporary overlay and either commit changes later or commit the changes at the
installation deadline or during a maintenance window. When you commit changes at the
installation deadline or during a maintenance window, a restart is required and the changes persist
on the device.
NOTE
When you deploy a software update to a Windows Embedded device, make sure that the device is a
member of a collection that has a configured maintenance window.
NOTE
You can review recent software updates alerts from the Software Updates node in the Software Librar y
workspace.
NOTE
Clients request the content location from a management point for the software updates in a deployment.
The download behavior depends upon how you have configured the distribution point, the deployment
package, and the settings on this page. For more information, see Content source location scenarios.
10. On the Summary page, review the settings. To save the settings to a deployment template, click Save As
Template , enter a name and select the settings that you want to include in the template, and then click
Save . To change a configured setting, click the associated wizard page and change the setting.
11. Click Next to deploy the feature update(s).
Step 4: Monitor the deployment status
After you deploy the feature update(s), you can monitor the deployment status. Use the following procedure to
monitor the deployment status:
1. In the Configuration Manager console, navigate to Monitoring > Over view > Deployments .
2. Click the software update group or software update for which you want to monitor the deployment status.
3. On the Home tab, in the Deployment group, click View Status .
What is Windows Update for Business?
3/26/2021 • 7 minutes to read • Edit Online
Applies to
Windows 10
Windows Update for Business is a free service that is available for all premium editions including Windows 10
Pro, Enterprise, Pro for Workstation, and Education editions.
Windows Update for Business enables IT administrators to keep the Windows 10 devices in their organization
always up to date with the latest security defenses and Windows features by directly connecting these systems
to Windows Update service. You can use Group Policy or Mobile Device Management (MDM) solutions such as
Microsoft Intune to configure the Windows Update for Business settings that control how and when Windows
10 devices are updated.
Specifically, Windows Update for Business lets you control update offerings and experiences to allow for
reliability and performance testing on a subset of devices before deploying updates across the organization. It
also provides a positive update experience for people in your organization.
Offering
You can control when updates are applied, for example by deferring when an update is installed on a device or
by pausing updates for a certain period.
Manage when updates are offered
You can defer or pause the installation of updates for a set period of time.
Enroll in pre-release updates
The branch readiness level enables administrators to specify which channel of feature updates they want to
receive. Today there are branch readiness level options for both pre-release and released updates:
Windows Insider Fast
Windows Insider Slow
Windows Insider Release Preview
Semi-Annual Channel
Prior to Windows 10, version 1903, there are two channels for released updates: Semi-Annual Channel and
Semi-Annual Channel (Targeted). Deferral days are calculated against the release date of the chosen channel.
Starting with Windows 10, version 1903 there is only the one release channel: Semi-Annual Channel. All deferral
days are calculated against a release’s Semi-Annual Channel release date. For exact release dates, see Windows
Release Information. You can set the branch readiness level by using the Select when Preview Builds and
Feature Updates are Received policy. To use this policy to manage pre-release builds, first enable preview
builds by using the Manage preview Builds policy.
Defer an update
A Windows Update for Business administrator can defer the installation of both feature and quality updates
from deploying to devices within a bounded range of time from when those updates are first made available on
the Windows Update service. You can use this deferral to allow time to validate deployments as they are pushed
to devices. Deferrals work by allowing you to specify the number of days after an update is released before it is
offered to a device. That is, if you set a feature update deferral period of 365 days, the device will not install a
feature update that has been released for less than 365 days. To defer feature updates, use the Select when
Preview Builds and Feature Updates are Received policy.
Non-deferrable none
Pause an update
If you discover a problem while deploying a feature or quality update, the IT administrator can pause the update
for 35 days from a specified start date to prevent other devices from installing it until the issue is mitigated. If
you pause a feature update, quality updates are still offered to devices to ensure they stay secure. The pause
period for both feature and quality updates is calculated from a start date that you set.
To pause feature updates, use the Select when Preview Builds and Feature Updates are Received policy
and to pause quality updates use the Select when Quality Updates are Received policy. For more
information, see Pause feature updates and Pause quality updates.
Built-in benefits: When updating from Windows Update, you get the added benefits of built-in compatibility
checks to prevent against a poor update experience for your device as well as a check to prevent repeated
rollbacks.
Recommendations
For the best experience with Windows Update, follow these guidelines:
Use devices for at least 6 hours per month, including at least 2 hours of continuous use.
Keep devices regularly charged. Plugging in devices overnight enables them to automatically update outside
of active hours.
Make sure that devices have at least 10 GB of free space.
Give devices unobstructed access to the Windows Update service.
Manage the end-user experience when receiving Windows Updates
Windows Update for Business provides controls to help meet your organization’s security standards as well as
provide a great end-user experience. We do this by enabling you to set automatic updates at times that work
well for people in your organization and set deadlines for quality and feature updates. Because Windows Update
includes built-in intelligence, it's better to use fewer controls to manage the user experience.
Recommended experience settings
Features like the smart busy check (which ensure updates don't happen when a user is signed in) and active
hours help provide the best experience for end users while keeping devices more secure and up to date. Follow
these steps to take advantage of these features:
1. Automatically download, install, and restart (default if no restart policies are set up or enabled)
2. Use the default notifications
3. Set update deadlines
Se t t i n g d e a d l i n e s
A compliance deadline policy (released in June 2019) enables you to set separate deadlines and grace periods
for feature and quality updates.
This policy enables you to specify the number of days from an update's publication date that it must be installed
on the device. The policy also includes a configurable grace period that specifies the number of days from when
the update is installed on the device until the device is forced to restart. This approach is useful in a vacation
scenario as it allows, for example, users who have been away to have a bit of time before being forced to restart
their devices when they return from vacation.
Update Baseline
The large number of different policies offered for Windows 10 can be overwhelming. Update Baseline provides
a clear list of recommended Windows update policy settings for IT administrators who want the best user
experience while also meeting their update compliance goals. The Update Baseline for Windows 10 includes
policy settings recommendations covering deadline configuration, restart behavior, power policies, and more.
The Update Baseline toolkit makes it easy by providing a single command for IT Admins to apply the Update
Baseline to devices. You can get the Update Baseline toolkit from the Download Center.
NOTE
The Update Baseline toolkit is available only for Group Policy. Update Baseline does not affect your offering policies,
whether you’re using deferrals or target version to manage which updates are offered to your devices when.
Configure Windows Update for Business
4/14/2021 • 14 minutes to read • Edit Online
Applies to
Windows 10
Windows Server 2016
Windows Server 2019
You can use Group Policy or your mobile device management (MDM) service to configure Windows Update for
Business settings for your devices. The sections in this topic provide the Group Policy and MDM policies for
Windows 10, version 1511 and above. The MDM policies use the OMA-URI setting from the Policy CSP.
IMPORTANT
Beginning with Windows 10, version 1903, organizations can use Windows Update for Business policies, regardless of the
diagnostic data level chosen. If the diagnostic data level is set to 0 (Security) , Windows Update for Business policies will
still be honored. For instructions, see Configure the operating system diagnostic data level.
Some Windows Update for Business policies are not applicable or behave differently for devices running
Windows 10 Mobile Enterprise. Specifically, policies pertaining to Feature Updates will not be applied to
Windows 10 Mobile Enterprise. All Windows 10 Mobile updates are recognized as Quality Updates, and can only
be deferred or paused using the Quality Update policy settings. Additional information is provided in this topic.
TIP
In addition to setting up multiple rings for your update deployments, also incorporate devices enrolled in the Windows
Insider Program as part of your deployment strategy. This will provide you the chance to not only evaluate new features
before they are broadly available to the public, but it also increases the lead time to provide feedback and influence
Microsoft’s design on functional aspects of the product. For more information on Windows Insider program, see
https://insider.windows.com/.
Starting with Windows 10, version 1703, users can configure the branch readiness level for their device by using
Settings > Update & security > Windows Update > Advanced options .
NOTE
Users will not be able to change this setting if it was configured by policy.
NOTE
If not configured by policy, individual users can defer feature updates by using Settings > Update & security >
Windows Update > Advanced options .
IMPORTANT
In Windows 10, version 1703 and later versions, you can pause feature updates to 35 days, similar to the number of days
for quality updates.
You can check the date that Feature Updates were paused by checking the registry key PausedFeatureDate
under HKLM\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\Settings .
The local group policy editor (GPEdit.msc) will not reflect whether the Feature Update pause period has expired.
Although the device will resume Feature Updates after 35 days automatically, the pause checkbox will remain
selected in the policy editor. To check whether a device has automatically resumed taking Feature Updates, check
the status registry key PausedFeatureStatus under
HKLM\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\Settings for the following values:
VA L UE STAT US
NOTE
If not configured by policy, individual users can pause feature updates by using Settings > Update & security >
Windows Update > Advanced options .
Starting with Windows 10, version 1703, using Settings to control the pause behavior provides a more
consistent experience, specifically:
Any active restart notification are cleared or closed.
Any pending restarts are canceled.
Any pending update installations are canceled.
Any update installation running when pause is activated will attempt to roll back.
NOTE
If not configured by policy, individual users can defer quality updates by using Settings > Update & security >
Windows Update > Advanced options .
NOTE
Starting with Windows 10, version 1809, IT administrators can prevent individual users from pausing updates.
You can check the date that quality Updates were paused by checking the registry key PausedQualityDate
under HKLM\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\Settings .
The local group policy editor (GPEdit.msc) will not reflect whether the quality Update pause period has expired.
Although the device will resume quality Updates after 35 days automatically, the pause checkbox will remain
selected in the policy editor. To check whether a device has automatically resumed taking quality Updates, check
the status registry key PausedQualityStatus under
HKLM\SOFTWARE\Microsoft\WindowsUpdate\UpdatePolicy\Settings for the following values:
VA L UE STAT US
NOTE
If not configured by policy, individual users can pause quality updates by using Settings > Update & security >
Windows Update > Advanced options .
Starting with Windows 10, version 1703, using Settings to control the pause behavior provides a more
consistent experience, specifically:
Any active restart notification are cleared or closed
Any pending restarts are canceled
Any pending update installations are canceled
Any update installation running when pause is activated will attempt to rollback
Configure when devices receive Windows Insider Preview builds
Starting with Windows 10, version 1709, you can set policies to manage preview builds and their delivery:
The Manage preview builds setting gives administrators control over enabling or disabling preview build
installation on a device. You can also decide to stop preview builds once the release is public.
Group Policy: Computer Configuration/Administrative Templates/Windows
Components/Windows Update/Windows Update for Business - Manage preview builds
MDM: Update/ManagePreviewBuilds
Microsoft Endpoint Configuration Manager: Enable dual scan, manage through Windows Update for
Business policy
IMPORTANT
This policy replaces the "Toggle user control over Insider builds" policy under that is only supported up to Windows 10,
version 1703. You can find the older policy here:
Group Policy: Computer Configuration/Administrative Templates/Windows Components/Data Collection
and Preview Builds/Toggle user control over Insider builds
MDM: System/AllowBuildPreview
The policy settings to Select when Feature Updates are received allows you to choose between preview
flight rings, and allows you to defer or pause their delivery.
Group Policy: Computer Configuration/Administrative Templates/Windows
Components/Windows Update/ Windows Update for Business - Select when Preview Builds and
Feature Updates are received
MDM: Update/BranchReadinessLevel
Summary: MDM and Group Policy settings for Windows 10, version
1703 and later
The following are quick-reference tables of the supported policy values for Windows Update for Business in
Windows 10, version 1607 and later.
GPO: HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate
GP O K EY K EY T Y P E VA L UE
MDM: HKEY_LOCAL_MACHINE\Software\Microsoft\PolicyManager\default\Update
M DM K EY K EY T Y P E VA L UE
M DM K EY K EY T Y P E VA L UE
PauseFeatureUpdates PauseFeatureUpdatesStartTime
PauseQualityUpdates PauseQualityUpdatesStartTime
Related topics
Update Windows 10 in the enterprise
Overview of Windows as a service
Prepare servicing strategy for Windows 10 updates
Build deployment rings for Windows 10 updates
Assign devices to servicing channels for Windows 10 updates
Optimize update delivery for Windows 10 updates
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Deploy updates using Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Deploy Windows 10 updates using Windows Server Update Services
Deploy Windows 10 updates using Microsoft Endpoint Configuration Manager
Manage device restarts after updates
Windows Update for Business deployment service
6/17/2021 • 7 minutes to read • Edit Online
The Windows Update for Business deployment service is a cloud service within the Windows Update for
Business product family. It provides control over the approval, scheduling, and safeguarding of updates
delivered from Windows Update. It's designed to work in harmony with your existing Windows Update for
Business policies.
The deployment service is designed for IT Pros who are looking for more control than is provided through
deferral policies and deployment rings. It provides the following abilities:
You can schedule deployment of updates to start on a specific date (for example, deploy 20H2 to specified
devices on March 14, 2021).
You can stage deployments over a period of days or weeks by using rich expressions (for example, deploy
20H2 to 500 devices per day, beginning on March 14, 2021).
You can bypass pre-configured Windows Update for Business policies to immediately deploy a security
update across your organization when emergencies arise.
You can benefit from deployments with automatic piloting tailored to your unique device population to
ensure coverage of hardware and software in your organization.
The service is privacy focused and backed by leading industry compliance certifications.
How it works
The deployment service complements existing Windows Update for Business capabilities, including existing
device policies and Update Compliance.
Prerequisites
To work with the deployment service, devices must meet all these requirements:
Be running Windows 10, version 1709 or later
Be joined to Azure Active Directory (AD) or Hybrid AD
Have one of the following Windows 10 editions installed:
Windows 10 Pro
Windows 10 Enterprise
Windows 10 Education
Windows 10 Pro Education
Windows 10 Pro for Workstations
Additionally, your organization must have one of the following subscriptions:
Windows 10 Enterprise E3 or E5 (included in Microsoft 365 F3, E3, or E5)
Windows 10 Education A3 or A5 (included in Microsoft 365 A3 or A5)
Windows Virtual Desktop Access E3 or E5
Microsoft 365 Business Premium
Getting started
To use the deployment service, you use a management tool built on the platform, script common actions using
PowerShell, or build your own application.
Using Microsoft Endpoint Manager
Microsoft Endpoint Manager integrates with the deployment service to provide Windows 10 update
management capabilities. For more information, see Windows 10 feature updates policy in Intune.
Scripting common actions using PowerShell
The Microsoft Graph SDK includes a PowerShell extension that you can use to script and automate common
update actions. For more information, see Get started with the Microsoft Graph PowerShell SDK.
Building your own application
Microsoft Graph makes deployment service APIs available through. Get started with these learning paths:
Learning Path: Microsoft Graph Fundamentals
Learning Path: Build apps with Microsoft Graph
Once you are familiar with Microsoft Graph development, see Windows updates API overview in Microsoft
Graph for more.
Deployment protections
The deployment service protects deployments through a combination of rollout controls and machine-learning
algorithms that monitor deployments and react to issues during the rollout.
Schedule rollouts with automatic piloting
The deployment service allows any update to be deployed over a period of days or weeks. Once an update has
been scheduled, the deployment service optimizes the deployment based on the scheduling parameters and
unique attributes spanning the devices being updated. The service follows these steps:
1. Determine the number of devices to be updated in each deployment wave, based on scheduling parameters.
2. Select devices for each deployment wave so that earlier waves have a diversity of hardware and software, to
function as pilot device populations.
3. Start deploying to earlier waves to build coverage of device attributes present in the population.
4. Continue deploying at a uniform rate until all waves are complete and all devices are updated.
This built-in piloting capability complements your existing ring structure and provides another support for
reducing and managing risk during an update. Unlike tools such as Desktop Analytics, this capability is intended
to operate within each ring. The deployment service does not provide a workflow for creating rings themselves.
You should continue to use deployment rings as part of the servicing strategy for your organization, but use
gradual rollouts to add scheduling convenience and additional protections within each ring.
Monitoring deployments to detect rollback issues
During a feature update deployment, driver combinations can sometimes result in an unexpected update failure
that makes the device revert to the previously installed operating system version. The deployment service can
monitor devices for such issues and automatically pause deployments when this happens, giving you time to
detect and mitigate issues.
How to enable deployment protections
Deployment scheduling controls are always available, but to take advantage of the unique deployment
protections tailored to your organization, devices must share diagnostic data with Microsoft.
Device prerequisites
NOTE
Deployment protections are currently in preview and available if you're using Update Compliance. If you set these policies
on a a device that isn't enrolled in Update Compliance, there is no effect.
Best practices
Follow these suggestions for the best results with the service.
Device onboarding
Wait until devices finish provisioning before managing with the service. If a device is being provisioned by
Autopilot, it can only be managed by the deployment service after it finishes provisioning (typically one day).
Use the deployment service for feature update management without feature update deferral policy. If you
want to use the deployment service to manage feature updates on a device that previously used a feature
update deferral policy, it's best to set the feature update deferral policy to 0 days to avoid having multiple
conditions governing feature updates. You should only change the feature update deferral policy value to 0
days after you've confirmed that the device was enrolled in the service with no errors.
General
Avoid using different channels to manage the same resources. If you use Microsoft Endpoint Manager along
with Microsoft Graph APIs or PowerShell, aspects of resources (such as devices, deployments, updatable asset
groups) might be overwritten if you use both channels to manage the same resources. Instead, only manage
each resource through the channel that created it.
Next steps
To learn more about the deployment service, try the following:
Windows 10 feature updates policy in Intune
Windows updates API overview in Microsoft Graph
Troubleshoot the Windows Update for Business
deployment service
4/27/2021 • 2 minutes to read • Edit Online
This troubleshooting guide addresses the most common issues that IT administrators face when using the
Windows Update for Business deployment service. For a general troubleshooting guide for Windows Update,
see Windows Update troubleshooting.
Deploying feature or quality updates for many organizations is only part of the equation for managing their
device ecosystem. The ability to enforce update compliance is the next important part. Windows Update for
Business provides controls to manage deadlines for when devices should migrate to newer versions.
The compliance options have changed for devices on Windows 10, version 1709 and above:
For Windows 10, version 1709 and above
Prior to Windows 10, version 1709
(Windows 10, version 1709 and later) Specify deadlines for This policy includes a deadline and a configurable grace
automatic updates and restarts period with the option to opt out of automatic restarts until
the deadline is reached. This is the recommended policy for
Windows 10, version 1709 and later.
Suggested configurations
Q UA L IT Y UP DAT E F EAT URE UP DAT E GRA C E P ERIO D IN
P O L IC Y LO C AT IO N DEA DL IN E IN DAY S DEA DL IN E IN DAY S DAY S
When Specify deadlines for automatic updates and restar ts is set (Windows 10, version 1709 and later):
For feature updates, the deadline and grace period start their countdown from the time of a pending restart
after the installation is complete. As soon as installation is complete and the device reaches pending restart, the
device will try to update outside of active hours. Once the effective deadline is reached, the device will try to
restart during active hours. (The effective deadline is whichever is the later of the restart pending date plus the
specified deadline or the restart pending date plus the grace period.)
For quality updates, the deadline countdown starts from the time the update is offered (not downloaded or
installed). The grace period countdown starts from the time of the pending restart. The device will try to
download and install the update at a time based on your other download and installation policies (the default is
to automatically download and install in in the background). When the pending restart time is reached, the
device will notify the user and try to update outside of active hours. Once the effective deadline is reached, the
device will try to restart during active hours.
NOTE
Deadlines are enforced from pending restart state (for example, when the device has completed the installation and
download from Windows Update).
Policy overview
P O L IC Y DESC RIP T IO N
Specify deadline before auto-restart for update installation Governs the update experience once the device has entered
pending restart state. It specifies a deadline, in days, to
enforce compliance (such as imminent installation).
Configure Auto-restart warning notification schedule for Configures the reminder notification and the warning
updates notification for a scheduled installation. The user can dismiss
a reminder, but not the warning.
Suggested configuration
Specify deadline GPO: Computer State: Enabled State: Enabled State: Enabled
before auto-restart Configuration > Specify the Specify the Specify the
for update Administrative number of days number of days number of days
installation Templates > before pending before pending before pending
Windows restar t will restar t will restar t will
Components > automatically be automatically be automatically be
Windows Update > executed outside executed outside executed outside
Specify deadline of active hours: 2 of active hours: 3 of active hours: 4
before auto-restart
for update
installation
P O L IC Y LO C AT IO N SUGGEST ED C O N F IGURAT IO N
P O L IC Y DESC RIP T IO N
Specify engaged restart transition and notification schedule Governs how the user will be impacted by the pending
for updates restart. Transition days, first starts out in Auto-Restart where
the device will find an idle moment to restart the device.
After 2 days engaged restart will commence and the user
will be able to choose a time
Configure Auto-restart required notification for updates Governs the notifications during the Auto-Restart period.
During Active hours, the user will be notified that the device
is trying to restart. They will have the option to confirm or
dismiss the notification
Suggested configuration
Specify engaged GPO: Computer State: Enabled State: Enabled State: Enabled
restart transition and Configuration > Transition (Days): 2 Transition (Days): 2 Transition (Days): 2
notification schedule Administrative Snooze (Days): 2 Snooze (Days): 2 Snooze (Days): 2
for updates Templates > Deadline (Days): 3 Deadline (Days): 4 Deadline (Days): 5
Windows
Components >
Windows Update >
Specify Engaged
restart transition and
notification schedule
for updates
P O L IC Y LO C AT IO N SUGGEST ED C O N F IGURAT IO N
Applies to
Windows 10
You can integrate Windows Update for Business deployments with existing management tools such as Windows
Server Update Services (WSUS) and Microsoft Endpoint Configuration Manager.
Configuration example #2: Excluding drivers from Windows Quality Updates using Windows Update for
Business
Configuration:
Device is configured to defer Windows Quality Updates and to exclude drivers from Windows Update Quality
Updates (ExcludeWUDriversInQualityUpdate = enabled)
Device is also configured to be managed by WSUS
Admin has opted to put Windows Update drivers on WSUS
NOTE
Because the admin enabled Update/AllowMUUpdateSer vice , placing the content on WSUS was not needed for the
particular device, as the device will always receive Microsoft Update content from Microsoft when configured in this
manner.
For more information, see Integration with Windows Update for Business in Windows 10.
Related topics
Update Windows 10 in the enterprise
Overview of Windows as a service
Prepare servicing strategy for Windows 10 updates
Build deployment rings for Windows 10 updates
Assign devices to servicing channels for Windows 10 updates
Optimize update delivery for Windows 10 updates
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Deploy updates using Windows Update for Business
Configure Windows Update for Business
Walkthrough: use Group Policy to configure Windows Update for Business
Walkthrough: use Intune to configure Windows Update for Business
Deploy Windows 10 updates using Windows Server Update Services
Deploy Windows 10 updates using Microsoft Endpoint Configuration Manager
Manage device restarts after updates
Walkthrough: Use Group Policy to configure
Windows Update for Business
3/26/2021 • 12 minutes to read • Edit Online
Applies to
Windows 10
Overview
You can use Group Policy through the Group Policy Management Console (GPMC) to control how Windows
Update for Business works. You should consider and devise a deployment strategy for updates before you make
changes to the Windows Update for Business settings. See Prepare servicing strategy for Windows 10 updates
for more information.
An IT administrator can set policies for Windows Update for Business by using Group Policy, or they can be set
locally (per device). All of the relevant policies are under the path Computer configuration >
Administrative Templates > Windows Components > Windows Update .
To manage updates with Windows Update for Business as described in this article, you should prepare with
these steps, if you haven't already:
Create Active Directory security groups that align with the deployment rings you use to phase deployment of
updates. See Build deployment rings for Windows 10 updates to learn more about deployment rings in
Windows 10.
Allow access to the Windows Update service.
Download and install ADMX templates appropriate to your Windows 10 version. For more information, see
How to create and manage the Central Store for Group Policy Administrative Templates in Windows and
Step-By-Step: Managing Windows 10 with Administrative templates.
When the quality update is released, it is offered to devices in the pilot ring the next time they scan for updates.
Fi ve days l at er
The devices in the fast ring are offered the quality update the next time they scan for updates.
Te n d a y s l a t e r
Ten days after the quality update is released, it is offered to the devices in the slow ring the next time they scan
for updates.
If no problems occur, all of the devices that scan for updates will be offered the quality update within ten days of
its release, in three waves.
W h at i f a pr o bl em o c c u r s w i t h t h e u pdat e?
In this example, some problem is discovered during the deployment of the update to the "pilot" ring.
At this point, the IT administrator can set a policy to pause the update. In this example, the admin selects the
Pause quality updates check box.
Now all devices are paused from updating for 35 days. When the pause is removed, they will be offered the next
quality update, which ideally will not have the same issue. If there is still an issue, the IT admin can pause
updates again.
I want to stay on a specific version
If you need a device to stay on a version beyond the point when deferrals on the next version would elapse or if
you need to skip a version (for example, update fall release to fall release) use the Select the target Feature
Update version setting instead of using the Specify when Preview Builds and Feature Updates are
received setting for feature update deferrals. When you use this policy, specify the version that you want your
device(s) to use. If you don't update this before the device reaches end of service, the device will automatically
be updated once it is 60 days past end of service for its edition.
When you set the target version policy, if you specify a feature update version that is older than your current
version or set a value that isn't valid, the device will not receive any feature updates until the policy is updated.
When you specify target version policy, feature update deferrals will not be in effect.
Manage how users experience updates
I want to manage when devices download, install, and restart after updates
We recommend that you allow to update automatically--this is the default behavior. If you don't set an
automatic update policy, the device will attempt to download, install, and restart at the best times for the user by
using built-in intelligence such as intelligent active hours and smart busy check.
For more granular control, you can set the maximum period of active hours the user can set with Computer
Configuration > Administrative Templates > Windows Components > Windows Update > Specify
active hours range for auto restar t .
It's best to refrain from setting the active hours policy because it's enabled by default when automatic updates
are not disabled and provides a better experience when users can set their own active hours. If you do want to
set active hours, use Computer Configuration > Administrative Templates > Windows Components >
Windows Update > Turn off auto-restar t for updates during active hours .
To update outside of the active hours, you don't need to set any additional settings: simply don't disable
automatic restarts. For even more granular control, consider using automatic updates to schedule the install
time, day, or week. To do this, use Computer Configuration > Administrative Templates > Windows
Components > Windows Update > Configure Automatic Updates and select Auto download and
schedule the install . You can customize this setting to accommodate the time that you want the update to be
installed for your devices.
When you set these policies, installation happens automatically at the specified time and the device will restart
15 minutes after installation is complete (unless it's interrupted by the user).
I want to keep devices secure and compliant with update deadlines
We recommend that you use Computer Configuration > Administrative Templates > Windows
Components > Windows Update > Specify deadline for automatic updates and restar ts for feature
and quality updates to ensure that devices stay secure on Windows 10, version 1709 and later. This works by
enabling you to specify the number of days that can elapse after an update is offered to a device before it must
be installed. Also you can set the number of days that can elapse after a pending restart before the user is forced
to restart.
This policies also offers an option to opt out of automatic restarts until a deadline is reached by presenting an
"engaged restart experience" until the deadline has actually expired. At that point the device will automatically
schedule a restart regardless of active hours.
These notifications are what the user sees depending on the settings you choose:
When Specify deadlines for automatic updates and restar ts is set (For Windows 10, version 1709 and
later):
While restar t is pending, before the deadline occurs:
For the first few days, the user receives a toast notification
After this period, the user receives this dialog:
If the user scheduled a restart, or if an auto restart is scheduled, 15 minutes before the scheduled
time the user is receives this notification that the restart is about to occur:
Once the deadline has passed, the user is forced to restart to keep their devices in compliance and
receives this notification:
I want to manage the notifications a user sees
There are additional settings that affect the notifications.
We recommend that you use the default notifications as they aim to provide the best user experience while
adjusting for the compliance policies that you have set. If you do have further needs that are not met by the
default notification settings, you can use Computer Configuration > Administrative Templates >
Windows Components > Windows Update > Display options for update notifications with these
values:
0 (default) – Use the default Windows Update notifications 1 – Turn off all notifications, excluding restart
warnings 2 – Turn off all notifications, including restart warnings
NOTE
Option 2 creates a poor experience for personal devices; it's only recommended for kiosk devices where automatic
restarts have been disabled.
Still more options are available in Computer Configuration > Administrative Templates > Windows
Components > Windows Update > Configure auto-restar t restar t warning notifications schedule
for updates . This setting allows you to specify the period for auto-restart warning reminder notifications (from
2-24 hours; 4 hours is the default) before the update and to specify the period for auto-restart imminent
warning notifications (15-60 minutes is the default). We recommend using the default notifications.
I want to manage the update settings a user can access
Every Windows device provides users with a variety of controls they can use to manage Windows Updates. They
can access these controls by Search to find Windows Updates or by going selecting Updates and Security in
Settings . We provide the ability to disable a variety of these controls that are accessible to users.
Users with access to update pause settings can prevent both feature and quality updates for 7 days. You can
prevent users from pausing updates through the Windows Update settings page by using Computer
Configuration > Administrative Templates > Windows Components > Windows Update > Remove
access to “Pause updates . When you disable this setting, users will see Some settings are managed by
your organization and the update pause settings are greyed out.
If you use Windows Server Update Server (WSUS), you can prevent users from scanning Windows Update. To
do this, use Computer Configuration > Administrative Templates > Windows Components >
Windows Update > Remove access to use all Windows Update features .
Related topics
Update Windows 10 in the enterprise
Overview of Windows as a service
Prepare servicing strategy for Windows 10 updates
Build deployment rings for Windows 10 updates
Assign devices to servicing channels for Windows 10 updates
Optimize update delivery for Windows 10 updates
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Deploy updates using Windows Update for Business
Configure Windows Update for Business
Integrate Windows Update for Business with management solutions
Walkthrough: use Intune to configure Windows Update for Business
Deploy Windows 10 updates using Windows Server Update Services
Deploy Windows 10 updates using Microsoft Endpoint Configuration Manager
Manage device restarts after updates
Deploy Windows 10 updates with Intune
3/26/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
See the Microsoft Intune documentation for details about using Intune to deploy and manage Windows 10
updates.
Set up Delivery Optimization for Windows 10
updates
4/16/2021 • 8 minutes to read • Edit Online
Applies to
Windows 10
NOTE
These scenarios (and the recommended settings for each) are not mutually exclusive. It's possible that your deployment
might involve more than one of these scenarios, in which case you can employ the related settings in any combination as
needed. In all cases, however, "download mode" is the most important one to set.
NOTE
Microsoft Intune includes a profile to make it easier to set Delivery Optimization policies. For details, see Delivery
Optimization settings for Intune.
Quick-reference table:
Sites with > 30 devices Minimum file size to cache 10 MB (or 1 MB) Leverage peers-to-peer
capability in more
downloads
USE C A SE P O L IC Y REC O M M EN DED VA L UE REA SO N
Large number of mobile Allow uploads on battery 60% Increase # of devices that
devices power can upload while limiting
battery drain
Labs with AC-powered Content Expiration 7 (up to 30) days Leverage devices that can
devices upload more for a longer
period
NOTE
For more about using Delivery Optimization with Configuration Manager boundary groups, see Delivery Optmization.
K EY VA L UE
PredefinedCallerApplication Indicates the last caller that initiated a request for the file.
ExpireOn The target expiration date and time for the file.
Disable-DeliveryOptimizationVerboseLogs
If Path is not specified, this cmdlet reads all logs from the DoSvc log directory, which requires administrator
permissions. If Flush is specified, the cmdlet stops DoSvc before reading logs.
Log entries are written to the PowerShell pipeline as objects. To dump logs to a text file, run
Get-DeliveryOptimizationLog | Set-Content <output file> or something similar.
Introduction
Update Compliance enables organizations to:
Monitor security, quality, and feature updates for Windows 10 Professional, Education, and Enterprise
editions.
View a report of device and update issues related to compliance that need attention.
Check bandwidth savings incurred across multiple content types by using Delivery Optimization.
Update Compliance is offered through the Azure portal, and is included as part of Windows 10 licenses listed in
the prerequisites. Azure Log Analytics ingestion and retention charges are not incurred on your Azure
subscription for Update Compliance data.
Update Compliance uses Windows 10 diagnostic data for all of its reporting. It collects system data including
update deployment progress, Windows Update for Business configuration data, and Delivery Optimization
usage data, and then sends this data to a customer-owned Azure Log Analytics workspace to power the
experience.
See the following topics in this guide for detailed information about configuring and using the Update
Compliance solution:
Get started with Update Compliance provides directions on adding Update Compliance to your Azure
subscription and configuring devices to send data to Update Compliance.
Using Update Compliance breaks down every aspect of the Update Compliance experience.
Related topics
Get started with Update Compliance
Use Update Compliance to monitor Windows Updates
Update Compliance Schema Reference
Get started with Update Compliance
6/1/2021 • 5 minutes to read • Edit Online
IMPORTANT
A new policy is required to use Update Compliance: "AllowUpdateComplianceProcessing". If you're already
using Update Compliance and have configured your devices prior to May 10, 2021, you must configure devices with this
additional policy. You can do this by rerunning the Update Compliance Configuration Script if you configure your devices
through Group Policy, or refer to Manually configuring devices for Update Compliance for details on manually configuring
the new policy for both Group Policy and MDM.
This topic introduces the high-level steps required to enroll to the Update Compliance solution and configure
devices to send data to it. The following steps cover the enrollment and device configuration workflow.
1. Ensure you can meet the requirements to use Update Compliance.
2. Add Update Compliance to your Azure subscription.
3. Configure devices to send data to Update Compliance.
After adding the solution to Azure and configuring devices, it can take some time before all devices appear. For
more information, see the enrollment section. Before or as devices appear, you can learn how to Use Update
Compliance to monitor Windows Updates and Delivery Optimization.
Before you begin the process to add Update Compliance to your Azure subscription, first ensure you can meet
the prerequisites:
Compatible Operating Systems and Editions : Update Compliance works only with Windows 10
Professional, Education, and Enterprise editions. Update Compliance supports both the typical Windows 10
Enterprise edition, as well as Windows 10 Enterprise multi-session. Update Compliance only provides data
for the standard Desktop Windows 10 version and is not currently compatible with Windows Server, Surface
Hub, IoT, etc.
Compatible Windows 10 Ser vicing Channels : Update Compliance supports Windows 10 devices on the
Semi-Annual Channel and the Long-term Servicing Channel (LTSC). Update Compliance counts Windows
Insider Preview (WIP) devices, but does not currently provide detailed deployment insights for them.
Diagnostic data requirements : Update Compliance requires devices be configured to send diagnostic
data at Required level (previously Basic). To learn more about what's included in different diagnostic levels,
see Diagnostics, feedback, and privacy in Windows 10.
Data transmission requirements : Devices must be able to contact specific endpoints required to
authenticate and send diagnostic data. These are enumerated in detail at Configuring Devices for Update
Compliance manually.
Showing Device Names in Update Compliance : For Windows 10, version 1803 or later, device names
will not appear in Update Compliance unless you individually opt-in devices by using policy. The steps to
accomplish this is outlined in Configuring Devices for Update Compliance.
C O M PAT IB L E LO G A N A LY T IC S REGIO N S
Australia Central
Australia East
Australia Southeast
Brazil South
Canada Central
Central India
Central US
East Asia
East US
East US 2
Eastus2euap(canary)
France Central
Japan East
Korea Central
North Central US
C O M PAT IB L E LO G A N A LY T IC S REGIO N S
North Europe
South Central US
Southeast Asia
Switzerland North
Switzerland West
UK West
UK south
West Central US
West Europe
West US
West US 2
NOTE
It is not currently supported to programmatically enroll to Update Compliance via the Azure CLI or otherwise. You must
manually add Update Compliance to your Azure subscription.
IMPORTANT
Regenerate your CommercialID only if your original ID can no longer be used or if you want to completely reset your
workspace. Regenerating your CommercialID cannot be undone and will result in you losing data for all devices that have
the current CommercialID until the new CommercialID is deployed to devices.
NOTE
A new policy is required to use Update Compliance: "AllowUpdateComplianceProcessing." If you're already using Update
Compliance and have configured your devices prior to May 10, 2021, you must rerun the script so the new policy can be
configured.
The Update Compliance Configuration Script is the recommended method of configuring devices to send data
to Microsoft for use with Update Compliance. The script configures the registry keys backing policies, ensures
required services are running, and more. This script is a recommended complement to configuring the required
policies documented in Manually configured devices for Update Compliance, as it can provide feedback on
whether there are any configuration issues outside of policies being configured.
NOTE
The configuration script configures registry keys directly. Registry keys can potentially be overwritten by policy settings
like Group Policy or MDM. Reconfiguring devices with the script does not reconfigure previously set policies, both in the
case of Group Policy and MDM. If there are conflicts between your Group Policy or MDM configurations and the required
configurations listed in Manually configuring devices for Update Compliance, device data might not appear in Update
Compliance correctly.
You can download the script from the Microsoft Download Center. Keep reading to learn how to configure the
script and interpret error codes that are output in logs for troubleshooting.
In Pilot mode ( runMode=Pilot ), the script will enter a verbose mode with enhanced diagnostics, and save the
results in the path defined with logpath in RunConfig.bat . Pilot mode is best for a pilot run of the script or
for troubleshooting configuration.
In Deployment mode ( runMode=Deployment ), the script will run quietly.
6 Invalid CommercialID
NOTE
As of May 10, 2021, a new policy is required to use Update Compliance: "Allow Update Compliance Processing." For more
details, see the Mobile Device Management policies and Group policies tables.
There are a number of requirements to consider when manually configuring devices for Update Compliance.
These can potentially change with newer versions of Windows 10. The Update Compliance Configuration Script
will be updated when any configuration requirements change so only a redeployment of the script will be
required.
The requirements are separated into different categories:
1. Ensuring the required policies for Update Compliance are correctly configured.
2. Devices in every network topography must send data to the required endpoints for Update Compliance.
For example, devices in both main and satellite offices, which might have different network configurations
must be able to reach the endpoints.
3. Ensure Required Windows ser vices are running or are scheduled to run. It is recommended all Microsoft
and Windows services are set to their out-of-box defaults to ensure proper functionality.
4. Run a full Census sync on new devices to ensure that all necessary data points are collected.
Required policies
Update Compliance has a number of policies that must be appropriately configured in order for devices to be
processed by Microsoft and visible in Update Compliance. They are enumerated below, separated by whether
the policies will be configured via Mobile Device Management (MDM) or Group Policy. For both tables:
Policy corresponds to the location and name of the policy.
Value Indicates what value the policy must be set to. Update Compliance requires at least Basic (or Required)
diagnostic data, but can function off Enhanced or Full (or Optional).
Function details why the policy is required and what function it serves for Update Compliance. It will also
detail a minimum version the policy is required, if any.
Mobile Device Management policies
Each MDM Policy links to its documentation in the CSP hierarchy, providing its exact location in the hierarchy
and more details.
P O L IC Y DATA T Y P E VA L UE F UN C T IO N
Group policies
All Group policies that need to be configured for Update Compliance are under Computer
Configuration>Administrative Templates>Windows Components\Data Collection and Preview
Builds . All of these policies must be in the Enabled state and set to the defined Value below.
P O L IC Y VA L UE F UN C T IO N
Configure telemetr y opt-in 1 - Disable diagnostic data opt-in (in Windows 10, version 1803 and
setting user interface Settings later) Determines whether users of the
device can adjust diagnostic data to
levels lower than the level defined by
AllowTelemetry. We recommend that
you disable this policy, otherwise the
effective diagnostic data level on
devices might not be sufficient.
Allow device name to be sent in 1 - Enabled Allows device name to be sent for
Windows diagnostic data Windows Diagnostic Data. If this policy
is Not Configured or Disabled, Device
Name will not be sent and will not be
visible in Update Compliance, showing
# instead.
Required endpoints
To enable data sharing between devices, your network, and Microsoft's Diagnostic Data Service, configure your
proxy to allow devices to contact the below endpoints.
EN DP O IN T F UN C T IO N
NOTE
As of May 10, 2021, a new policy is required to use Update Compliance: "Allow Update Compliance Processing." For more
details, see the Mobile Device Management policies and Group policies tables.
This article is specifically targeted at configuring devices enrolled to Microsoft Endpoint Manager for Update
Compliance, within MEM itself. Configuring devices for Update Compliance in MEM breaks down to the
following steps:
1. Create a configuration profile for devices you want to enroll, that contains settings for all the MDM policies
that must be configured.
2. Deploy the configuration script as a Win32 app to those same devices, so additional checks can be
performed to ensure devices are correctly configured.
3. Wait for data to populate. The length of this process depends on the computer being on, connected to the
internet, and correctly configured. Some data types take longer to appear than others. You can learn more
about this in the broad section on enrolling devices to Update Compliance.
In this section you'll learn how to use Update Compliance to monitor your device's Windows updates and
Microsoft Defender Antivirus status. To configure your environment for use with Update Compliance, refer to
Get started with Update Compliance.
Update Compliance:
Provides detailed deployment monitoring for Windows 10 Feature and Quality updates.
Reports when devices need attention due to issues related to update deployment.
Shows bandwidth usage and savings for devices that are configured to use Delivery Optimization.
Provides all of the above data in Log Analytics, which affords additional querying and export capabilities.
When the solution is added, data is not immediately available. Data will begin to be collected after data is sent
up that belongs to the Commercial ID associated with the device. This process assumes that Windows diagnostic
data is enabled and data sharing is enabled as described in Enrolling devices in Update Compliance. After
Microsoft has collected and processed any device data associated with your Commercial ID, the tile will be
replaced with the following summary:
The summary details the total number of devices that Microsoft has received data from with your Commercial
ID. It also provides the number of devices that need attention if any. Finally, it details the last point at which your
Update Compliance workspace was refreshed.
Update Compliance's overview blade summarizes all the data Update Compliance provides. It functions as a hub
from which you can navigate to different sections. The total number of devices detected by Update Compliance
is reported in the title of this blade. What follows is a distribution for all devices as to whether they are up to
date on the following items:
Security updates: A device is up to date on quality updates whenever it has the latest applicable quality
update installed. Quality updates are monthly cumulative updates that are specific to a version of Windows
10.
Feature updates: A device is up to date on feature updates whenever it has the latest applicable feature
update installed. Update Compliance considers Servicing Channel when determining update applicability.
AV Signature: A device is up to date on Antivirus Signature when the latest Windows Defender Signatures
have been downloaded. This distribution only considers devices that are running Microsoft Defender
Antivirus.
The blade also provides the time at which your Update Compliance workspace was refreshed.
The following is a breakdown of the different sections available in Update Compliance:
Need Attention! - This section is the default section when arriving to your Update Compliance workspace. It
provides a summary of the different issues devices are facing relative to Windows 10 updates.
Security Update Status - This section lists the percentage of devices that are on the latest security update
released for the version of Windows 10 it is running. Selecting this section provides blades that summarize
the overall status of security updates across all devices and a summary of their deployment progress
towards the latest two security updates.
Feature Update Status - This section lists the percentage of devices that are on the latest feature update that
is applicable to a given device. Selecting this section provides blades that summarize the overall feature
update status across all devices and a summary of deployment status for different versions of Windows 10
in your environment.
Delivery Optimization Status - This section summarizes bandwidth savings incurred by utilizing Delivery
Optimization in your environment. It provides a breakdown of Delivery Optimization configuration across
devices, and summarizes bandwidth savings and utilization across multiple content types.
This means you should generally expect to see new data device data every 24 hours, except for
WaaSDeploymentStatus and WUDOAggregatedStatus, which may take 36-48 hours.
Related topics
Get started with Update Compliance
Needs attention!
3/26/2021 • 2 minutes to read • Edit Online
The Needs attention! section provides a breakdown of all Windows 10 device and update issues detected by
Update Compliance. The summary tile for this section counts the number of devices that have issues, while the
blades within break down the issues encountered. Finally, a list of queries blade in this section contains queries
that provide values but do not fit within any other main section.
NOTE
The summary tile counts the number of devices that have issues, while the blades within the section break down the
issues encountered. A single device can have more than one issue, so these numbers might not add up.
The different issues are broken down by Device Issues and Update Issues:
Device Issues
Missing multiple security updates: This issue occurs when a device is behind by two or more security
updates. These devices might be more vulnerable and should be investigated and updated.
Out of suppor t OS Version: This issue occurs when a device has fallen out of support due to the version
of Windows 10 it is running. When a device has fallen out of support, it will no longer receive important
security updates, and might be vulnerable. These devices should be updated to a supported version of
Windows 10.
Update Issues
Failed: This issue occurs when an error halts the process of downloading and applying an update on a
device. Some of these errors might be transient, but should be investigated further to be sure.
Cancelled : This issue occurs when a user cancels the update process.
Rollback : This issue occurs when a fatal error occurs during a feature update, and the device is rolled back to
the previous version.
Uninstalled : This issue occurs when a feature update is uninstalled from a device by a user or an
administrator. Note that this might not be a problem if the uninstallation was intentional, but is highlighted
as it might need attention.
Progress stalled: This issue occurs when an update is in progress, but has not completed over a period of 7
days.
Selecting any of the issues will take you to a Log Analytics view with all devices that have the given issue.
NOTE
This blade also has a link to the Setup Diagnostic Tool, a standalone tool you can use to obtain details about why a
Windows 10 feature update was unsuccessful.
List of Queries
The List of Queries blade is in the Needs Attention section of Update Compliance. This blade contains a list
of queries with a description and a link to the query. These queries contain important meta-information that did
not fit within any specific section or were listed to serve as a good starting point for modification into custom
queries.
Security Update Status
3/5/2021 • 2 minutes to read • Edit Online
The Security Update Status section provides information about security updates across all devices. The section
tile within the Overview Blade lists the percentage of devices on the latest security update available. Meanwhile,
the blades within show the percentage of devices on the latest security update for each Windows 10 version and
the deployment progress toward the latest two security updates.
The Overall Security Update Status blade provides a visualization of devices that are and do not have the
latest security updates. Below the visualization are all devices further broken down by operating system version
and a count of devices that are up to date and not up to date. The Not up to date column also provides a count
of update failures.
The Latest Security Update Status and Previous Security Update Status tiles are stacked to form one
blade. The Latest Security Update Status provides a visualization of the different deployment states devices
are in regarding the latest update for each build (or version) of Windows 10, along with the revision of that
update. The Previous Security Update Status blade provides the same information without the
accompanying visualization.
The rows of each tile in this section are interactive; selecting them will navigate you to the query that is
representative of that row and section.
Feature Update Status
3/5/2021 • 2 minutes to read • Edit Online
The Feature Update Status section provides information about the status of feature updates across all devices.
This section tile in the Overview Blade gives a percentage of devices that are on the latest applicable feature
update; Servicing Channel is considered in determining applicability. Within this section are two blades; one
providing a holistic view of feature updates, the other containing three Deployment Status tiles, each charged
with tracking the deployment for a different Servicing Channel.
Safeguard holds
Microsoft uses diagnostic data to determine whether devices that use Windows Update are ready for a feature
update in order to ensure a smooth experience. When Microsoft determines a device is not ready to update due
to a known issue, a safeguard hold is generated to delay the device's upgrade and protect the end-user
experience. Holds are released over time as diagnostic data is analyzed and fixes are addressed. Details are
provided on some, but not all safeguard holds on the Windows 10 release information page for any given
release.
Update Compliance reporting will display the Safeguard IDs for known issues affecting a device in the
DeploymentErrorCode column. Safeguard IDs for publicly discussed known issues are also included in the
Windows Release Health dashboard, where you can easily find information related to publicly available
safeguards.
Opt out of safeguard hold
You can opt out of safeguard protections by using the Disable safeguards for Feature Updates Group
Policy. This policy is available to Windows Update for Business devices running Windows 10, version 1809 or
later that have installed the October 2020 security update.
Delivery Optimization in Update Compliance
3/5/2021 • 2 minutes to read • Edit Online
The Update Compliance solution provides you with information about your Delivery Optimization configuration,
including the observed bandwidth savings across all devices that used peer-to-peer distribution over the past 28
days.
IMPORTANT
Update Compliance is a Windows service hosted in Azure that uses Windows diagnostic data. You should be aware that
Update Compliance doesn't meet US Government community compliance (GCC) requirements. For a list of GCC offerings
for Microsoft products and services, see the Microsoft Trust Center. Update Compliance is available in the Azure
Commercial cloud, but not available for GCC High or United States Department of Defense customers.
FAQ
Can Update Compliance be used without a direct client connection to the Microsoft Data Management
Service?
No, the entire service is powered by Windows diagnostic data, which requires that devices have this direct
connectivity.
Can I choose the data center location?
Yes for Azure Log Analytics, but no for the Microsoft Data Management Service (which is hosted in the US).
Related topics
See related topics for additional background information on privacy and treatment of diagnostic data:
Windows 10 and the GDPR for IT Decision Makers
Configure Windows diagnostic data in your organization
Diagnostic Data Viewer Overview
Licensing Terms and Documentation
Confidence in the trusted cloud
Trust Center
Update Compliance Schema
3/26/2021 • 2 minutes to read • Edit Online
When the visualizations provided in the default experience don't fulfill your reporting needs, or if you need to
troubleshoot issues with devices, it's valuable to understand the schema for Update Compliance and have a
high-level understanding of the capabilities of Azure Monitor log queries to power additional dashboards,
integration with external data analysis tools, automated alerting, and more.
The table below summarizes the different tables that are part of the Update Compliance solution. To learn how
to navigate Azure Monitor Logs to find this data, see Get started with log queries in Azure Monitor.
NOTE
Data is collected daily. The TimeGenerated field shows the time data was collected. It's added by Log Analytics when data
is collected. Device data from the past 28 days is collected, even if no new data has been generated since the last time.
LastScan is a clearer indicator of data freshness (that is, the last time the values were updated), while TimeGenerated
indicates the freshness of data within Log Analytics.
WaaSUpdateStatus records contain device-centric data and acts as the device record for Update Compliance.
Each record provided in daily snapshots maps to a single device in a single tenant. This table has data such as
the current device's installed version of Windows, whether it is on the latest available updates, and whether the
device needs attention.
WaaSInsiderStatus records contain device-centric data and acts as the device record for devices on Windows
Insider Program builds in Update Compliance. Each record provided in daily snapshots maps to a single device
in a single tenant. This table has data such as the current device's installed version of Windows, whether it is on
the latest available updates, and whether the device needs attention. Insider devices have fewer fields than
WaaSUpdateStatus.
WaaSDeploymentStatus records track a specific update's installation progress on a specific device. Multiple
WaaSDeploymentStatus records can exist simultaneously for a given device, as each record is specific to a given
update and its type. For example, a device can have both a WaaSDeploymentStatus tracking a Windows Feature
Update, and one tracking a Windows Quality Update, at the same time.
NotConfigured : Pause is
not configured.
NOTE
Currently all location-based fields are not working properly. This is a known issue.
WUDOStatus records provide information, for a single device, on their bandwidth utilization for a specific
content type in the event they use Delivery Optimization, and other information to create more detailed reports
and splice on certain common characteristics.
These fields are briefly described in this article, to learn more about Delivery Optimization in general, check out
the Delivery Optimization Reference.
WUDOAggregatedStatus records provide information, across all devices, on their bandwidth utilization for a
specific content type in the event they use Delivery Optimization, over the past 28 days.
These fields are briefly described in this article, to learn more about Delivery Optimization in general, check out
the Delivery Optimization Reference.
Applies to
Windows 10
IMPORTANT
This article contains technical instructions for IT administrators. If you are not an IT administrator, try some of the quick
fixes described in this article then contact Microsoft Support starting with the Virtual Agent. To talk to a person about
your issue, click Get star ted to interact with the Virtual Agent, then enter "Talk to a person" two times. The Virtual Agent
can also help you to resolve many Windows upgrade issues. Also see: Get help with Windows 10 upgrade and installation
errors and Submit Windows 10 upgrade errors using Feedback Hub.
This article contains a brief introduction to Windows 10 installation processes, and provides resolution
procedures that IT administrators can use to resolve issues with Windows 10 upgrade.
The article was originally one page, but has been divided into sub-topics of different technical levels. Basic level
provides common procedures that can resolve several types of upgrade errors. Advanced level requires some
experience with detailed troubleshooting methods.
The following four levels are assigned:
Level 100: Basic
Level 200: Moderate
Level 300: Moderate advanced
Level 400: Advanced
In this guide
See the following topics in this article:
Quick fixes: \Level 100\ Steps you can take to eliminate many Windows upgrade errors.
SetupDiag: \Level 300\ SetupDiag is a new tool to help you isolate the root cause of an upgrade failure.
Troubleshooting upgrade errors: \Level 300\ General advice and techniques for troubleshooting Windows 10
upgrade errors, and an explanation of phases used during the upgrade process.
Windows Error Reporting: \Level 300\ How to use Event Viewer to review details about a Windows 10
upgrade.
Upgrade error codes: \Level 400\ The components of an error code are explained.
Result codes: Information about result codes.
Extend codes: Information about extend codes.
Log files: \Level 400\ A list and description of log files useful for troubleshooting.
Log entry structure: The format of a log entry is described.
Analyze log files: General procedures for log file analysis, and an example.
Resolution procedures: \Level 200\ Causes and mitigation procedures associated with specific error codes.
0xC1900101: Information about the 0xC1900101 result code.
0x800xxxxx: Information about result codes that start with 0x800.
Other result codes: Additional causes and mitigation procedures are provided for some result codes.
Other error codes: Additional causes and mitigation procedures are provided for some error codes.
Submit Windows 10 upgrade errors: \Level 100\ Submit upgrade errors to Microsoft for analysis.
Related topics
Windows 10 FAQ for IT professionals
Windows 10 Enterprise system requirements
Windows 10 Specifications
Windows 10 IT pro forums
Fix Windows Update errors by using the DISM or System Update Readiness tool
Quick fixes
5/5/2021 • 13 minutes to read • Edit Online
Applies to
Windows 10
NOTE
This is a 100 level topic (basic).
See Resolve Windows 10 upgrade errors for a full list of topics in this article.
The following list of fixes can resolve many Windows upgrade problems. You should try these steps before
contacting Microsoft support, or attempting a more advanced analysis of a Windows upgrade failure. Also
review information at Windows 10 help.
The Microsoft Virtual Agent provided by Microsoft Support can help you to analyze and correct some Windows
upgrade errors. To talk to a person about your issue , start the Virtual Agent (click Get star ted ) and enter
"Talk to a person" two times.
TIP
You might also wish to try a new tool available from Microsoft that helps to diagnose many Windows upgrade errors. For
more information and to download this tool, see SetupDiag. The topic is more advanced (300 level) because several
advanced options are available for using the tool. However, you can now just download and then double-click the tool to
run it. By default when you click Save, the tool is saved in your Downloads folder. Double-click the tool in the folder and
wait until it finishes running (it might take a few minutes), then double-click the SetupDiagResults.log file and open it
using Notepad to see the results of the analysis.
List of fixes
1. Remove nonessential external hardware, such as docks and USB devices. More information.
2. Check the system drive for errors and attempt repairs. More information.
3. Run the Windows Update troubleshooter. More information.
4. Attempt to restore and repair system files. More information.
5. Check for unsigned drivers and update or repair them. More information.
6. Update Windows so that all available recommended updates are installed, and ensure the computer is
rebooted if this is necessary to complete installation of an update. More information.
7. Temporarily uninstall non-Microsoft antivirus software. More information.
8. Uninstall all nonessential software. More information.
9. Update firmware and drivers. More information
10. Ensure that "Download and install updates (recommended)" is accepted at the start of the upgrade process.
More information.
11. Verify at least 16 GB of free space is available to upgrade a 32-bit OS, or 20 GB for a 64-bit OS. More
information.
C:\WINDOWS\system32>chkdsk /F
The type of the file system is NTFS.
Cannot lock current drive.
This volume will be checked the next time the system restarts.
8. Restart the computer. The computer will pause before loading Windows and perform a repair of your
hard drive.
Windows Update Troubleshooter
The Windows Update troubleshooter tool will automatically analyze and fix problems with Windows Update,
such as a corrupted download. It will also tell you if there is a pending reboot that is preventing Windows from
updating.
For Windows 7 and 8.1, the tool is here.
For Windows 10, the tool is here.
To run the tool, click the appropriate link above. Your web browser will prompt you to save or open the file.
Select open and the tool will automatically start. The tool will walk you through analyzing and fixing some
common problems.
You can also download the Windows Update Troubleshooter by starting the Microsoft Virtual Agent, typing
update Windows , selecting the version of Windows you are running, and then answering Yes when asked "Do
you need help troubleshooting Windows Update?"
If any errors are displayed in the Windows Update Troubleshooter, use the Microsoft Virtual Agent to ask about
these errors. The Virtual Agent will perform a search and provide a list of helpful links.
Repair system files
This fix is also described in detail at answers.microsoft.com.
To check and repair system files:
1. Click Star t .
2. Type command .
3. Right-click Command Prompt and then left-click Run as administrator .
4. If you are prompted by UAC, click Yes .
5. Type sfc /scannow and press ENTER. See the following example:
C:\>sfc /scannow
6. If you are running Windows 8.1 or later, type DISM.exe /Online /Cleanup-image /Restorehealth and
press ENTER (the DISM command options are not available for Windows 7). See the following example:
7. After the scanning process is complete, if you see Your files have been scanned and verified as
digitally signed then you have no unsigned drivers. Otherwise, you will see The following files have
not been digitally signed and a list will be provided with name, location, and version of all unsigned
drivers.
8. To view and save a log file, click Advanced , and then click View Log . Save the log file if desired.
9. Locate drivers in the log file that are unsigned, write down the location and file names. Also write down
the catalog that is associated to the driver if it is provided. If the name of a catalog file is not provided you
might need to analyze another device that has the same driver with sigverif and sigcheck (described
below).
10. The next step is to check that the driver reported as unsigned by sigverif.exe has a problem. In some
cases, sigverif.exe might not be successful at locating the catalog file used to sign a driver, even though
the catalog file exists. To perform a detailed driver check, download sigcheck.zip and extract the tool to a
directory on your computer, for example: C:\sigcheck .
Sigcheck is a tool that you can download and use to review digital signature details of a file. To use
sigcheck:
11. In the command window, use the cd command to switch to the directory where you extracted sigcheck,
for example cd c:\sigcheck .
12. Using the list of unsigned drivers and their associated paths that you obtained from the File Signature
Verification tool, run sigcheck to obtain details about the driver, including the catalog file used for signing.
Type sigcheck64 -i <driver path> and press ENTER (or sigcheck -i for a 32 bit OS). See the following
example:
C:\Sigcheck>sigcheck64.exe -i c:\windows\system32\drivers\afd.sys
c:\windows\system32\drivers\afd.sys:
Verified: Signed
Signing date: 6:18 PM 11/29/2017
Signing date: 6:18 PM 11/29/2017
Catalog: C:\Windows\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-
00C04FC295EE}\Package_163_for_KB4054518~31bf3856ad364e35~x86~~6.1.1.2.cat
Signers:
Microsoft Windows
Cert Status: This certificate or one of the certificates in the certificate chain is not time
valid.
Valid Usage: NT5 Crypto, Code Signing
Cert Issuer: Microsoft Windows Verification PCA
Serial Number: 33 00 00 00 4B 76 63 2D 24 A2 39 9A 8B 00 01 00 00 00 4B
Thumbprint: B8037C46D0DB7A8CEE502407469B0EE3234D3365
Algorithm: sha1RSA
Valid from: 11:46 AM 3/1/2017
Valid to: 11:46 AM 5/9/2018
(output truncated)
In the example above, the afd.sys driver is properly signed by the catalog file
Package_163_for_KB4054518~31bf3856ad364e35~x86~~6.1.1.2.cat.
13. Optionally, you can generate a list of drivers using driverquery.exe, which is included with Windows. To
save a list of signed and unsigned drivers with driverquery, type driverquer y /si > c:\drivers.txt and
press ENTER. See the following example:
C:\>Driverquery /si
For more information about using driverquery, see Two Minute Drill: DriverQuery.exe and driverquery.
Update Windows
You should ensure that all important updates are installed before attempting to upgrade. This includes updates
to hardware drivers on your computer.
The Microsoft Virtual Agent can walk you through the process of making sure that Windows is updated.
Start the Virtual Agent and then type "update windows."
Answer questions that the agent asks, and follow instructions to ensure that Windows is up to date. You can also
run the Windows Update Troubleshooter described above.
Click Star t , click power options, and then restart the computer.
Uninstall non-Microsoft antivirus software
Use Windows Defender for protection during the upgrade.
Verify compatibility information, and if desired re-install antivirus applications after the upgrade. If you plan to
re-install the application after upgrading, be sure that you have the installation media and all required activation
information before removing the program.
To remove the application, go to Control Panel\Programs\Programs and Features and click the antivirus
application, then click Uninstall. Choose Yes when you are asked to confirm program removal.
For more information, see Windows 7 - How to properly uninstall programs or Repair or remove programs in
Windows 10.
Uninstall non-essential software
Outdated applications can cause problems with a Windows upgrade. Removing old or non-essential
applications from the computer can therefore help.
If you plan to reinstall the application later, be sure that you have the installation media and all required
activation information before removing it.
To remove programs, use the same steps as are provided above for uninstalling non-Microsoft antivirus
software, but instead of removing the antivirus application repeat the steps for all your non-essential, unused, or
out-of-date software.
Update firmware and drivers
Updating firmware (such as the BIOS) and installing hardware drivers is a somewhat advanced task. Do not
attempt to update BIOS if you aren't familiar with BIOS settings or are not sure how to restore the previous BIOS
version if there are problems. Most BIOS updates are provided as a "flash" update. Your manufacturer might
provide a tool to perform the update, or you might be required to enter the BIOS and update it manually. Be
sure to save your working BIOS settings, since some updates can reset your configuration and make the
computer fail to boot if (for example) a RAID configuration is changed.
Most BIOS and other hardware updates can be obtained from a website maintained by your computer
manufacturer. For example, Microsoft Surface device drivers can be obtained at: Download the latest firmware
and drivers for Surface devices.
To obtain the proper firmware drivers, search for the most updated driver version provided by your computer
manufacturer. Install these updates and reboot the computer after installation. Request assistance from the
manufacturer if you have any questions.
Ensure that "Download and install updates" is selected
When you begin a Windows Update, the setup process will ask you to Get impor tant updates . Answer Yes if
the computer you are updating is connected to the Internet. See the following example:
In the previous example, there is 703 GB of available free space on the system drive (C:).
To free up additional space on the system drive, begin by running Disk Cleanup. You can access Disk Cleanup by
right-clicking the hard drive icon and then clicking Properties. See the following example:
For instructions to run Disk Cleanup and other suggestions to free up hard drive space, see Tips to free up drive
space on your PC.
When you run Disk Cleanup and enable the option to Clean up system files, you can remove previous Windows
installations which can free a large amount of space. You should only do this if you do not plan to restore the old
OS version.
Open an elevated command prompt
TIP
It is no longer necessary to open an elevated command prompt to run the SetupDiag tool. However, this is still the
optimal way to run the tool.
To launch an elevated command prompt, press the Windows key on your keyboard, type cmd , press
Ctrl+Shift+Enter, and then click Yes to confirm the elevation prompt. Screenshots and other steps to open an
elevated command prompt are here.
Note: When you open an elevated command prompt, you will usually start in the C:\WINDOWS\system32
directory. To run a program that you recently downloaded, you must change to the directory where the program
is located. Alternatively, you can move or copy the program to a location on the computer that is automatically
searched. These directories are listed in the PATH variable.
If this is too complicated for you, then use File Explorer to create a new folder under C: with a short name such
as "new" then copy or move the programs you want to run (like SetupDiag) to this folder using File Explorer.
When you open an elevated command prompt, change to this directory by typing "cd c:\new" and now you can
run the programs in that folder.
If you downloaded the SetupDiag.exe program to your computer, then copied it to the folder C:\new, and you
opened an elevated command prompt then typed cd c:\new to change to this directory, you can just type
setupdiag and press ENTER to run the program. This program will analyze the files on your computer to see why
a Windows Upgrade failed and if the reason was a common one, it will report this reason. It will not fix the
problem for you but knowing why the upgrade failed enables you to take steps to fix the problem.
Related topics
Windows 10 FAQ for IT professionals
Windows 10 Enterprise system requirements
Windows 10 Specifications
Windows 10 IT pro forums
Fix Windows Update errors by using the DISM or System Update Readiness tool
SetupDiag
7/28/2021 • 24 minutes to read • Edit Online
Applies to
Windows 10
NOTE
This is a 300 level topic (moderate advanced).
See Resolve Windows 10 upgrade errors for a full list of topics in this article.
About SetupDiag
Current downloadable version of SetupDiag: 1.6.2107.27002
Always be sure to run the most recent version of SetupDiag, so that can access new functionality and fixes to
known issues.
SetupDiag is a standalone diagnostic tool that can be used to obtain details about why a Windows 10 upgrade
was unsuccessful.
SetupDiag works by examining Windows Setup log files. It attempts to parse these log files to determine the
root cause of a failure to update or upgrade the computer to Windows 10. SetupDiag can be run on the
computer that failed to update, or you can export logs from the computer to another location and run
SetupDiag in offline mode.
If the upgrade process proceeds normally, the Sources directory including setupdiag.exe is moved under
%SystemDrive%\Windows.Old for cleanup. If the Windows.old directory is deleted later, setupdiag.exe
will also be removed.
Using SetupDiag
To quickly use SetupDiag on your current computer:
1. Verify that your system meets the requirements described below. If needed, install the .NET framework 4.6.
2. Download SetupDiag.
3. If your web browser asks what to do with the file, choose Save . By default, the file will be saved to your
Downloads folder. You can also save it to a different location if desired by using Save As .
4. When SetupDiag has finished downloading, open the folder where you downloaded the file. By default, this
folder is the Downloads folder, which is displayed in File Explorer under Quick access in the left navigation
pane.
5. Double-click the SetupDiag file to run it. Click Yes if you are asked to approve running the program.
Double-clicking the file to run it will automatically close the command window when SetupDiag has
completed its analysis. If you wish to keep this window open instead, and review the messages that
you see, run the program by typing SetupDiag at the command prompt instead of double-clicking it.
You will need to change directories to the location of SetupDiag to run it this way.
6. A command window will open while SetupDiag diagnoses your computer. Wait for this process to finish.
7. When SetupDiag finishes, two files will be created in the same folder where you double-clicked SetupDiag.
One is a configuration file, the other is a log file.
8. Use Notepad to open the log file: SetupDiagResults.log .
9. Review the information that is displayed. If a rule was matched, this information can tell you why the
computer failed to upgrade, and potentially how to fix the problem. See the Text log sample below.
For instructions on how to run the tool in offline mode and with more advanced options, see the Parameters and
Examples sections below.
The Release notes section at the bottom of this topic has information about recent updates to this tool.
Requirements
1. The destination OS must be Windows 10.
2. .NET Framework 4.6 must be installed. If you are not sure what version of .NET is currently installed, see
How to: Determine Which .NET Framework Versions Are Installed. You can also use the following
command-line query to display the installed v4 versions:
Parameters
PA RA M ET ER DESC RIP T IO N
/Output:<path to results file> This optional parameter enables you to specify the
output file for results. This file is where you will find
what SetupDiag was able to determine. Only text
format output is supported. UNC paths will work,
provided the context under which SetupDiag runs
has access to the UNC path. If the path has a space
in it, you must enclose the entire path in double
quotes (see the example section below).
Default: If not specified, SetupDiag will create the file
SetupDiagResults.log in the same directory where
SetupDiag.exe is run.
|
Note: The /Mode parameter is deprecated in version 1.4.0.0 of SetupDiag.
In previous versions, this command was used with the LogsPath parameter to specify that SetupDiag should
run in an offline manner to analyze a set of log files that were captured from a different computer. In version
1.4.0.0, when you specify /LogsPath then SetupDiag will automatically run in offline mode, therefore the
/Mode parameter is not needed.
Examples:
In the following example, SetupDiag is run with default parameters (online mode, results file is
SetupDiagResults.log in the same folder where SetupDiag is run).
SetupDiag.exe
In the following example, SetupDiag is run in online mode (this mode is the default). It will know where to look
for logs on the current (failing) system, so there is no need to gather logs ahead of time. A custom location for
results is specified.
SetupDiag.exe /Output:C:\SetupDiag\Results.log
The following example uses the /Output parameter to save results to a path name that contains a space:
The following example specifies that SetupDiag is to run in offline mode, and to process the log files found in
D:\Temp\Logs\LogSet1 .
The following example sets recovery scenario in offline mode. In the example, SetupDiag will search for
reset/recovery logs in the specified LogsPath location and output the results to the directory specified by the
/Output parameter.
SetupDiag.exe /Output:C:\SetupDiag\RecoveryResults.log /LogsPath:D:\Temp\Cabs\PBR_Log /Scenario:Recovery
The following example sets recovery scenario in online mode. In the example, SetupDiag will search for
reset/recovery logs on the current system and output results in XML format.
Log files
Windows Setup Log Files and Event Logs has information about where logs are created during Windows Setup.
For offline processing, you should run SetupDiag against the contents of the entire folder. For example,
depending on when the upgrade failed, copy one of the following folders to your offline location:
\$Windows.~bt\sources\panther
\$Windows.~bt\Sources\Rollback
\Windows\Panther
\Windows\Panther\NewOS
If you copy the parent folder and all subfolders, SetupDiag will automatically search for log files in all
subdirectories.
Known issues
1. Some rules can take a long time to process if the log files involved are large.
Sample output
The following command is an example where SetupDiag is run in offline mode.
D:\SetupDiag>SetupDiag.exe /output:c:\setupdiag\result.xml /logspath:D:\Tests\Logs\f55be736-beed-4b9b-aedf-
c133536c946e /format:xml
SetupDiag v1.6.0.0
Copyright (c) Microsoft Corporation. All rights reserved.
...
Rules
When searching log files, SetupDiag uses a set of rules to match known issues. These rules are contained in the
rules.xml file which is extracted when SetupDiag is run. The rules.xml file might be updated as new versions of
SetupDiag are made available. See the release notes section for more information.
Each rule name and its associated unique rule identifier are listed with a description of the known upgrade-
blocking issue. In the rule descriptions, the term "down-level" refers to the first phase of the upgrade process,
which runs under the starting OS.
1. CompatScanOnly - FFDAFD37-DB75-498A-A893-472D49A1311D
This rule indicates that setup.exe was called with a specific command line parameter that indicated
setup was to do a compat scan only, not an upgrade.
2. BitLockerHardblock - C30152E2-938E-44B8-915B-D1181BA635AE
This is an upgrade block when the target OS does not support BitLocker, yet the host OS has BitLocker
enabled.
3. VHDHardblock - D9ED1B82-4ED8-4DFD-8EC0-BE69048978CC
This block happens when the host OS is booted to a VHD image. Upgrade is not supported when the
host OS is booted from a VHD image.
4. PortableWorkspaceHardblock - 5B0D3AB4-212A-4CE4-BDB9-37CA404BB280
This indicates that the host OS is booted from a Windows To-Go device (USB key). Upgrade is not
supported in the Windows To-Go environment.
5. AuditModeHardblock - A03BD71B-487B-4ACA-83A0-735B0F3F1A90
This block indicates that the host OS is currently booted into Audit Mode, a special mode for
This block indicates that the host OS is currently booted into Audit Mode, a special mode for
modifying the Windows state. Upgrade is not supported from this state.
6. SafeModeHardblock - 404D9523-B7A8-4203-90AF-5FBB05B6579B
This block indicates that the host OS is booted to Safe Mode, where upgrade is not supported.
7. InsufficientSystemPartitionDiskSpaceHardblock - 3789FBF8-E177-437D-B1E3-D38B4C4269D1
This block is encountered when setup determines the system partition (where the boot loader files are
stored) does not have enough space to be serviced with the newer boot files required during the
upgrade process.
8. CompatBlockedApplicationAutoUninstall – BEBA5BC6-6150-413E-8ACE-5E1EC8D34DD5
This rule indicates there is an application that needs to be uninstalled before setup can continue.
9. CompatBlockedApplicationDismissable - EA52620B-E6A0-4BBC-882E-0686605736D9
When running setup in /quiet mode, there are dismissible application messages that turn into blocks
unless the command line also specifies “/compat ignorewarning”. This rule indicates setup was
executed in /quiet mode but there is an application dismissible block message that has prevented
setup from continuing.
10. CompatBlockedApplicationManualUninstall - 9E912E5F-25A5-4FC0-BEC1-CA0EA5432FF4
This rule indicates that an application without an Add/Remove Programs entry, is present on the
system and blocking setup from continuing. This typically requires manual removal of the files
associated with this application to continue.
11. HardblockDeviceOrDriver - ED3AEFA1-F3E2-4F33-8A21-184ADF215B1B
This error indicates a device driver that is loaded on the host OS is not compatible with the newer OS
version and needs to be removed prior to the upgrade.
12. HardblockMismatchedLanguage - 60BA8449-CF23-4D92-A108-D6FCEFB95B45
This rule indicates the host OS and the target OS language editions do not match.
13. HardblockFlightSigning - 598F2802-3E7F-4697-BD18-7A6371C8B2F8
This rule indicates the target OS is a pre-release, Windows Insider build, and the target machine has
Secure Boot enabled. This will block the pre-release signed build from booting if installed on the
machine.
14. DiskSpaceBlockInDownLevel - 6080AFAC-892E-4903-94EA-7A17E69E549E
This failure indicates the system ran out of disk space during the down-level operations of upgrade.
15. DiskSpaceFailure - 981DCBA5-B8D0-4BA7-A8AB-4030F7A10191
This failure indicates the system drive ran out of available disk space at some point after the first
reboot into the upgrade.
16. DeviceInstallHang - 37BB1C3A-4D79-40E8-A556-FDA126D40BC6
This failure rule indicates the system hung or bug checked during the device installation phase of
upgrade.
17. DebugSetupMemoryDump - C7C63D8A-C5F6-4255-8031-74597773C3C6
This offline only rule indicates a bug check occurred during setup. If the debugger tools are available
on the system, SetupDiag will debug the memory dump and provide details.
18. DebugSetupCrash - CEEBA202-6F04-4BC3-84B8-7B99AED924B1
This offline only rule indicates that setup itself encountered a failure that resulted in a process
memory dump. If the debugger tools are installed on the system, SetupDiag will debug the memory
dump and give further details.
19. DebugMemoryDump - 505ED489-329A-43F5-B467-FCAAF6A1264C
This offline only rule is for any memory.dmp file that resulted during the setup/upgrade operation. If
the debugger tools are installed on the system, SetupDiag will debug the memory dump and give
further details.
20. BootFailureDetected - 4FB446C2-D4EC-40B4-97E2-67EB19D1CFB7
This rule indicates a boot failure occurred during a specific phase of the update. The rule will indicate
the failure code and phase for diagnostic purposes.
21. FindDebugInfoFromRollbackLog - 9600EB68-1120-4A87-9FE9-3A4A70ACFC37
This rule will determine and give details when a bug check occurs during the setup/upgrade process
that resulted in a memory dump, but without the requirement of the debugger package being on the
executing machine.
22. AdvancedInstallerFailed - 77D36C96-32BE-42A2-BB9C-AAFFE64FCADC
Finds fatal advanced installer operations that cause setup failures.
23. FindMigApplyUnitFailure - A4232E11-4043-4A37-9BF4-5901C46FD781
Detects a migration unit failure that caused the update to fail. This rule will output the name of the
migration plug-in as well as the error code it produced for diagnostic purposes.
24. FindMigGatherUnitFailure - D04C064B-CD77-4E64-96D6-D26F30B4EE29
Detects a migration gather unit failure that caused the update to fail. This rule will output the name of
the gather unit/plug-in as well as the error code it produced for diagnostic purposes.
25. CriticalSafeOSDUFailure - 73566DF2-CA26-4073-B34C-C9BC70DBF043
This rule indicates a failure occurred while updating the SafeOS image with a critical dynamic update.
It will indicate the phase and error code that occurred while attempting to update the SafeOS image
for diagnostic purposes.
26. UserProfileCreationFailureDuringOnlineApply - 678117CE-F6A9-40C5-BC9F-A22575C78B14
Indicates there was a critical failure while creating or modifying a User Profile during the online apply
phase of the update. It will indicate the operation and error code associated with the failure for
diagnostic purposes.
27. WimMountFailure - BE6DF2F1-19A6-48C6-AEF8-D3B0CE3D4549
This rule indicates the update failed to mount a wim file. It will show the name of the wim file as well
as the error message and error code associated with the failure for diagnostic purposes.
28. FindSuccessfulUpgrade - 8A0824C8-A56D-4C55-95A0-22751AB62F3E
Determines if the given setup was a success or not based off the logs.
29. FindSetupHostReportedFailure - 6253C04F-2E4E-4F7A-B88E-95A69702F7EC
Gives information about failures surfaced early in the upgrade process by setuphost.exe
30. FindDownlevelFailure - 716334B7-F46A-4BAA-94F2-3E31BC9EFA55
Gives failure information surfaced by SetupPlatform, later in the down-level phase.
31. FindAbruptDownlevelFailure - 55882B1A-DA3E-408A-9076-23B22A0472BD
Gives last operation failure information when the system fails in the down-level, but the log just ends
abruptly.
32. FindSetupPlatformFailedOperationInfo - 307A0133-F06B-4B75-AEA8-116C3B53C2D1
Gives last phase and error information when SetupPlatform indicates a critical failure. This rule will
indicate the operation and error associated with the failure for diagnostic purposes.
33. FindRollbackFailure - 3A43C9B5-05B3-4F7C-A955-88F991BB5A48
Gives last operation, failure phase and error information when a rollback occurs.
34. AdvancedInstallerGenericFailure – 4019550D-4CAA-45B0-A222-349C48E86F71
A rule to match AdvancedInstaller read/write failures in a generic sense. Will output the executable
being called as well as the error code and exit code reported.
35. OptionalComponentFailedToGetOCsFromPackage – D012E2A2-99D8-4A8C-BBB2-088B92083D78 (NOTE:
This rule replaces the OptionalComponentInstallFailure rule present in v1.10.
This matches a specific Optional Component failure when attempting to enumerate components in a
package. Will output the package name and error code.
36. OptionalComponentOpenPackageFailed – 22952520-EC89-4FBD-94E0-B67DF88347F6
Matches a specific Optional Component failure when attempting to open an OC package. Will output
the package name and error code.
37. OptionalComponentInitCBSSessionFailed – 63340812-9252-45F3-A0F2-B2A4CA5E9317
Matches a specific failure where the advanced installer service or components aren’t operating or
started on the system. Will output the error code.
38. UserProfileCreationFailureDuringFinalize – C6677BA6-2E53-4A88-B528-336D15ED1A64
Matches a specific User Profile creation error during the finalize phase of setup. Will output the failure
code.
39. WimApplyExtractFailure – 746879E9-C9C5-488C-8D4B-0C811FF3A9A8
Matches a wim apply failure during wim extraction phases of setup. Will output the extension, path
and error code.
40. UpdateAgentExpanderFailure – 66E496B3-7D19-47FA-B19B-4040B9FD17E2
Matches DPX expander failures in the down-level phase of update from WU. Will output the package
name, function, expression and error code.
41. FindFatalPluginFailure – E48E3F1C-26F6-4AFB-859B-BF637DA49636
Matches any plug-in failure that setupplatform decides is fatal to setup. Will output the plugin name,
operation and error code.
42. AdvancedInstallerFailed - 77D36C96-32BE-42A2-BB9C-AAFFE64FCADC
Indicates critical failure in the AdvancedInstaller while running an installer package, includes the .exe
being called, the phase, mode, component and error codes.
43. MigrationAbortedDueToPluginFailure - D07A24F6-5B25-474E-B516-A730085940C9
Indicates a critical failure in a migration plugin that causes setup to abort the migration. Will provide
the setup operation, plug-in name, plug-in action and error code.
44. DISMAddPackageFailed - 6196FF5B-E69E-4117-9EC6-9C1EAB20A3B9
Indicates a critical failure during a DISM add package operation. Will specify the Package Name, DISM
error and add package error code.
45. PlugInComplianceBlock - D912150B-1302-4860-91B5-527907D08960
Detects all compat blocks from Server compliance plug-ins. Outputs the block information and
remediation.
46. AdvancedInstallerGenericFailure - 4019550D-4CAA-45B0-A222-349C48E86F71
Triggers on advanced installer failures in a generic sense, outputting the application called, phase,
mode, component and error code.
47. FindMigGatherApplyFailure - A9964E6C-A2A8-45FF-B6B5-25E0BD71428E
Shows errors when the migration Engine fails out on a gather or apply operation. Indicates the
Migration Object (file or registry path), the Migration
48. OptionalComponentFailedToGetOCsFromPackage - D012E2A2-99D8-4A8C-BBB2-088B92083D78
Indicates the optional component (OC) migration operation failed to enumerate optional components
from an OC Package. Outputs the package name and error code.
49. OptionalComponentOpenPackageFailed - 22952520-EC89-4FBD-94E0-B67DF88347F6
Indicates the optional component migration operation failed to open an optional component Package.
Outputs the package name and error code.
50. OptionalComponentInitCBSSessionFailed - 63340812-9252-45F3-A0F2-B2A4CA5E9317
Indicates corruption in the servicing stack on the down-level system. Outputs the error code
encountered while trying to initialize the servicing component on the existing OS.
51. DISMproviderFailure - D76EF86F-B3F8-433F-9EBF-B4411F8141F4
Triggers when a DISM provider (plug-in) fails in a critical operation. Outputs the file (plug-in name),
function called + error code, and error message from the provider.
52. SysPrepLaunchModuleFailure - 7905655C-F295-45F7-8873-81D6F9149BFD
Indicates a sysPrep plug-in has failed in a critical operation. Indicates the plug-in name, operation
name and error code.
53. UserProvidedDriverInjectionFailure - 2247C48A-7EE3-4037-AFAB-95B92DE1D980
A driver provided to setup (via command line input) has failed in some way. Outputs the driver install
function and error code.
54. PlugInComplianceBlock - D912150B-1302-4860-91B5-527907D08960
These are for server upgrades only, will output the compliance block and remediation required.
55. PreReleaseWimMountDriverFound - 31EC76CC-27EC-4ADC-9869-66AABEDB56F0
Captures failures due to having an unrecognized wimmount.sys driver registered on the system.
56. WinSetupBootFilterFailure - C073BFC8-5810-4E19-B53B-4280B79E096C
Detects failures in the kernel mode file operations.
57. WimMountDriverIssue - 565B60DD-5403-4797-AE3E-BC5CB972FBAE
Detects failures in WimMount.sys registration on the system.
58. DISMImageSessionFailure - 61B7886B-10CD-4C98-A299-B987CB24A11C
Captures failure information when DISM fails to start an image session successfully.
59. FindEarlyDownlevelError - A4CE4FC9-5E10-4BB1-8ECE-3B29EB9D7C52
Detects failures in down-level phase before setup platform is invoked.
60. FindSPFatalError - A4028172-1B09-48F8-AD3B-86CDD7D55852
Captures failure information when setup platform encounters a fatal error.
61. UserProfileSuffixMismatch - B4BBCCCE-F99D-43EB-9090-078213397FD8
Detects when a file or other object causes the migration or creation of a user profile to fail during the
update.
Release notes
05/06/2021 - SetupDiag v1.6.1.0 is released with 61 rules, as a standalone tool available in the Download
Center.
This version of SetupDiag is included with Windows 10, version 21H1.
A new rule is added: UserProfileSuffixMismatch.
All outputs to the command line are now invariant culture for purposes of time/date format
Fixed an issue with registry output in which the "no match found" result caused a corrupted REG_SZ value.
08/08/2019 - SetupDiag v1.6.0.42 is released with 60 rules, as a standalone tool available from the Download
Center.
Log detection performance is improved. What used to take up to a minute should take around 10 seconds or
less.
Added Setup Operation and Setup Phase information to both the results log and the registry information.
This is the last Operation and Phase that Setup was in when the failure occurred.
Added detailed Setup Operation and Setup Phase information (and timing) to output log when /verbose is
specified.
Note, if the issue found is a compat block, no Setup Operation or Phase info exists yet and therefore
won’t be available.
Added more info to the Registry output.
Detailed ‘FailureData’ info where available. Example: “AppName = MyBlockedApplication” or
“DiskSpace = 6603” (in MB)
“Key = Value” data specific to the failure found.
Added ‘UpgradeStartTime’, ‘UpgradeEndTime’ and ‘UpgradeElapsedTime’
Added ‘SetupDiagVersion’, ‘DateTime’ (to indicate when SetupDiag was executed on the system),
‘TargetOSVersion’, ‘HostOSVersion’ and more…
06/19/2019 - SetupDiag v1.5.0.0 is released with 60 rules, as a standalone tool available from the Download
Center.
All date and time outputs are updated to localized format per user request.
Added setup Operation and Phase information to /verbose log.
Added last Setup Operation and last Setup Phase information to most rules where it makes sense (see new
output below).
Performance improvement in searching setupact.logs to determine correct log to parse.
Added SetupDiag version number to text report (xml and json always had it).
Added "no match" reports for xml and json per user request.
Formatted Json output for easy readability.
Performance improvements when searching for setup logs; this should be much faster now.
Added 7 new rules: PlugInComplianceBlock, PreReleaseWimMountDriverFound, WinSetupBootFilterFailure,
WimMountDriverIssue, DISMImageSessionFailure, FindEarlyDownlevelError, and FindSPFatalError. See the
Rules section above for more information.
Diagnostic information is now output to the registry at
HKLM\SYSTEM\Setup\MoSetup\Volatile\SetupDiag
The /AddReg command was added to toggle registry output. This setting is off by default for offline
mode, and on by default for online mode. The command has no effect for online mode and enables
registry output for offline mode.
This registry key is deleted as soon as SetupDiag is run a second time, and replaced with current data,
so it’s always up to date.
This registry key also gets deleted when a new update instance is invoked.
For an example, see Sample registry key.
05/17/2019 - SetupDiag v1.4.1.0 is released with 53 rules, as a standalone tool available from the Download
Center.
This release dds the ability to find and diagnose reset and recovery failures (Push-Button Reset).
12/18/2018 - SetupDiag v1.4.0.0 is released with 53 rules, as a standalone tool available from the Download
Center.
This release includes major improvements in rule processing performance: ~3x faster rule processing
performance!
The FindDownlevelFailure rule is up to 10x faster.
New rules have been added to analyze failures upgrading to Windows 10 version 1809.
A new help link is available for resolving servicing stack failures on the down-level OS when the rule match
indicates this type of failure.
Removed the need to specify /Mode parameter. Now if you specify /LogsPath, it automatically assumes
offline mode.
Some functional and output improvements were made for several rules.
07/16/2018 - SetupDiag v1.3.1 is released with 44 rules, as a standalone tool available from the Download
Center.
This release fixes a problem that can occur when running SetupDiag in online mode on a computer that
produces a setupmem.dmp file, but does not have debugger binaries installed.
07/10/2018 - SetupDiag v1.30 is released with 44 rules, as a standalone tool available from the Download
Center.
Bug fix for an over-matched plug-in rule. The rule will now correctly match only critical (setup failure) plug-in
issues.
New feature: Ability to output logs in JSON and XML format.
Use "/Format:xml" or "/Format:json" command line parameters to specify the new output format. See
sample logs at the bottom of this topic.
If the “/Format:xml” or “/Format:json” parameter is omitted, the log output format will default to text.
New Feature: Where possible, specific instructions are now provided in rule output to repair the identified
error. For example, instructions are provided to remediate known blocking issues such as uninstalling an
incompatible app or freeing up space on the system drive.
3 new rules added: AdvancedInstallerFailed, MigrationAbortedDueToPluginFailure, DISMAddPackageFailed.
05/30/2018 - SetupDiag v1.20 is released with 41 rules, as a standalone tool available from the Download
Center.
Fixed a bug in device install failure detection in online mode.
Changed SetupDiag to work without an instance of setupact.log. Previously, SetupDiag required at least one
setupact.log to operate. This change enables the tool to analyze update failures that occur prior to calling
SetupHost.
Telemetry is refactored to only send the rule name and GUID (or “NoRuleMatched” if no rule is matched) and
the Setup360 ReportId. This change assures data privacy during rule processing.
05/02/2018 - SetupDiag v1.10 is released with 34 rules, as a standalone tool available from the Download
Center.
A performance enhancement has been added to result in faster rule processing.
Rules output now includes links to support articles, if applicable.
SetupDiag now provides the path and name of files that it is processing.
You can now run SetupDiag by simply clicking on it and then examining the output log file.
An output log file is now always created, whether or not a rule was matched.
03/30/2018 - SetupDiag v1.00 is released with 26 rules, as a standalone tool available from the Download
Center.
Sample logs
Text log sample
Matching Profile found: OptionalComponentOpenPackageFailed - 22952520-EC89-4FBD-94E0-B67DF88347F6
System Information:
Machine Name = Offline
Manufacturer = MSI
Model = MS-7998
HostOSArchitecture = x64
FirmwareType = PCAT
BiosReleaseDate = 20160727000000.000000+000
BiosVendor = BIOS Date: 07/27/16 10:01:46 Ver: V1.70
BiosVersion = 1.70
HostOSVersion = 10.0.15063
HostOSBuildString = 15063.0.amd64fre.rs2_release.170317-1834
TargetOSBuildString = 10.0.16299.15 (rs3_release.170928-1534)
HostOSLanguageId = 2057
HostOSEdition = Core
RegisteredAV = Windows Defender,
FilterDrivers = WdFilter,wcifs,WIMMount,luafv,Wof,FileInfo,
UpgradeStartTime = 3/21/2018 9:47:16 PM
UpgradeEndTime = 3/21/2018 10:02:40 PM
UpgradeElapsedTime = 00:15:24
ReportId = dd4db176-4e3f-4451-aef6-22cf46de8bde
Error: SetupDiag reports Optional Component installation failed to open OC Package. Package Name:
Foundation, Error: 0x8007001F
Recommend you check the "Windows Modules Installer" service (Trusted Installer) is started on the system and
set to automatic start, reboot and try the update again. Optionally, you can check the status of optional
components on the system (search for Windows Features), uninstall any unneeded optional components, reboot
and try the update again.
Error: SetupDiag reports down-level failure, Operation: Finalize, Error: 0x8007001F - 0x50015
Refer to https://docs.microsoft.com/windows/deployment/upgrade/upgrade-error-codes for error information.
],
"SetupPhaseInfo":null,
"SetupOperationInfo":null
}
Applies to
Windows 10
NOTE
This is a 300 level topic (moderately advanced).
See Resolve Windows 10 upgrade errors for a full list of topics in this article.
If a Windows 10 upgrade is not successful, it can be very helpful to understand when an error occurred in the
upgrade process.
Briefly, the upgrade process consists of four phases that are controlled by Windows Setup: Downlevel , SafeOS ,
First boot , and Second boot . The computer will reboot once between each phase. Note: Progress is tracked in
the registry during the upgrade process using the following key:
HKLM\System\Setup\mosetup\volatile\SetupProgress . This key is volatile and only present during the
upgrade process; it contains a binary value in the range 0-100.
These phases are explained in greater detail below. First, let's summarize the actions performed during each
phase because this affects the type of errors that can be encountered.
1. Downlevel phase : Because this phase runs on the source OS, upgrade errors are not typically seen. If
you do encounter an error, ensure the source OS is stable. Also ensure the Windows setup source and the
destination drive are accessible.
2. SafeOS phase : Errors most commonly occur during this phase due to hardware issues, firmware issues,
or non-microsoft disk encryption software.
Since the computer is booted into Windows PE during the SafeOS phase, a useful troubleshooting
technique is to boot into Windows PE using installation media. You can use the media creation tool to
create bootable media, or you can use tools such as the Windows ADK, and then boot your device from
this media to test for hardware and firmware compatibility issues.
TIP
If you attempt to use the media creation tool with a USB drive and this fails with error 0x80004005 - 0xa001a,
this is because the USB drive is using GPT partition style. The tool requires that you use MBR partition style. You
can use the DISKPART command to convert the USB drive from GPT to MBR. For more information, see Change a
GUID Partition Table Disk into a Master Boot Record Disk.
Do not proceed with the Windows 10 installation after booting from this media . This method
can only be used to perform a clean install which will not migrate any of your apps and settings, and you
will be required re-enter your Windows 10 license information.
If the computer does not successfully boot into Windows PE using the media that you created, this is
likely due to a hardware or firmware issue. Check with your hardware manufacturer and apply any
recommended BIOS and firmware updates. If you are still unable to boot to installation media after
applying updates, disconnect or replace legacy hardware.
If the computer successfully boots into Windows PE, but you are not able to browse the system drive on
the computer, it is possible that non-Microsoft disk encryption software is blocking your ability to
perform a Windows 10 upgrade. Update or temporarily remove the disk encryption.
3. First boot phase : Boot failures in this phase are relatively rare, and almost exclusively caused by device
drivers. Disconnect all peripheral devices except for the mouse, keyboard, and display. Obtain and install
updated device drivers, then retry the upgrade.
4. Second boot phase : In this phase, the system is running under the target OS with new drivers. Boot
failures are most commonly due to anti-virus software or filter drivers. Disconnect all peripheral devices
except for the mouse, keyboard, and display. Obtain and install updated device drivers, temporarily
uninstall anti-virus software, then retry the upgrade.
If the general troubleshooting techniques described above or the quick fixes detailed below do not resolve your
issue, you can attempt to analyze log files and interpret upgrade error codes. You can also Submit Windows 10
upgrade errors using Feedback Hub so that Microsoft can diagnose your issue.
2. Safe OS phase : A recovery partition is configured, Windows files are expanded, and updates are
installed. An OS rollback is prepared if needed. Example error codes: 0x2000C, 0x20017.
3. First boot phase : Initial settings are applied. Example error codes: 0x30018, 0x3000D.
4. Second boot phase : Final settings are applied. This is also called the OOBE boot phase . Example error
codes: 0x4000D, 0x40017.
At the end of the second boot phase, the Welcome to Windows 10 screen is displayed, preferences are
configured, and the Windows 10 sign-in prompt is displayed.
5. Uninstall phase : This phase occurs if upgrade is unsuccessful (image not shown). Example error codes:
0x50000, 0x50015.
Figure 1 : Phases of a successful Windows 10 upgrade (uninstall is not shown):
DU = Driver/device updates.
OOBE = Out of box experience.
WIM = Windows image (Microsoft)
Related topics
Windows 10 FAQ for IT professionals
Windows 10 Enterprise system requirements
Windows 10 Specifications
Windows 10 IT pro forums
Fix Windows Update errors by using the DISM or System Update Readiness tool
Windows Error Reporting
5/5/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
NOTE
This is a 300 level topic (moderately advanced).
See Resolve Windows 10 upgrade errors for a full list of topics in this article.
When Windows Setup fails, the result and extend code are recorded as an informational event in the Application
log by Windows Error Reporting as event 1001. The event name is WinSetupDiag02 . You can use Event Viewer
to review this event, or you can use Windows PowerShell.
To use Windows PowerShell, type the following commands from an elevated Windows PowerShell prompt:
IMPORTANT
The following source will be available only if you have updated from a previous version of Windows 10 to a new version. If
you installed the current version and have not updated, the source named WinSetupDiag02 will be unavailable.
PA RA M ET ERS
The event will also contain links to log files that can be used to perform a detailed diagnosis of the error. An
example of this event from a successful upgrade is shown below.
Related topics
Windows 10 FAQ for IT professionals
Windows 10 Enterprise system requirements
Windows 10 Specifications
Windows 10 IT pro forums
Fix Windows Update errors by using the DISM or System Update Readiness tool
Upgrade error codes
5/5/2021 • 4 minutes to read • Edit Online
Applies to
Windows 10
NOTE
This is a 400 level topic (advanced).
See Resolve Windows 10 upgrade errors for a full list of topics in this article.
If the upgrade process is not successful, Windows Setup will return two codes:
1. A result code : The result code corresponds to a specific Win32 or NTSTATUS error.
2. An extend code : The extend code contains information about both the phase in which an error occurred,
and the operation that was being performed when the error occurred.
For example, a result code of 0xC1900101 with an extend code of 0x4000D will be returned as: 0xC1900101
- 0x4000D .
Note: If only a result code is returned, this can be because a tool is being used that was not able to capture the
extend code. For example, if you are using the Windows 10 Upgrade Assistant then only a result code might be
returned.
TIP
If you are unable to locate the result and extend error codes, you can attempt to find these codes using Event Viewer. For
more information, see Windows Error Reporting.
Result codes
A result code of 0xC1900101 is generic and indicates that a rollback occurred. In most cases, the cause is a
driver compatibility issue.
To troubleshoot a failed upgrade that has returned a result code of 0xC1900101, analyze the extend code to
determine the Windows Setup phase, and see the Resolution procedures section later in this article.
The following set of result codes are associated with Windows Setup compatibility warnings:
A list of modern setup (mosetup) errors with descriptions in the range is available in the Resolution procedures
topic in this article.
Other result codes can be matched to the specific type of error encountered. To match a result code to an error:
1. Identify the error code type as either Win32 or NTSTATUS using the first hexadecimal digit:
8 = Win32 error code (ex: 0x8 0070070)
C = NTSTATUS value (ex: 0xC 1900107)
2. Write down the last 4 digits of the error code (ex: 0x80070070 = 0070). These digits are the actual error
code type as defined in the HRESULT or the NTSTATUS structure. Other digits in the code identify things such
as the device type that produced the error.
3. Based on the type of error code determined in the first step (Win32 or NTSTATUS), match the 4 digits derived
from the second step to either a Win32 error code or NTSTATUS value using the following links:
Win32 error code
NTSTATUS value
Examples:
0x80070070
Based on the "8" this is a Win32 error code
The last four digits are 0070, so look up 0x00000070 in the Win32 error code table
The error is: ERROR_DISK_FULL
0xC1900107
Based on the "C" this is an NTSTATUS error code
The last four digits are 0107, so look up 0x00000107 in the NTSTATUS value table
The error is: STATUS_SOME_NOT_MAPPED
Some result codes are self-explanatory, whereas others are more generic and require further analysis. In the
examples shown above, ERROR_DISK_FULL indicates that the hard drive is full and additional room is needed to
complete Windows upgrade. The message STATUS_SOME_NOT_MAPPED is more ambiguous, and means that
an action is pending. In this case, the action pending is often the cleanup operation from a previous installation
attempt, which can be resolved with a system reboot.
Extend codes
IMPORTANT
Extend codes reflect the current Windows 10 upgrade process, and might change in future releases of Windows 10. The
codes discussed in this section apply to Windows 10 version 1607, also known as the Anniversary Update.
Extend codes can be matched to the phase and operation when an error occurred. To match an extend code to
the phase and operation:
1. Use the first digit to identify the phase (ex: 0x4000D = 4).
2. Use the last two digits to identify the operation (ex: 0x4000D = 0D).
3. Match the phase and operation to values in the tables provided below.
The following tables provide the corresponding phase and operation for values of an extend code:
Hex Phase
0 SP_EXECUTION_UNKNOWN
1 SP_EXECUTION_DOWNLEVEL
2 SP_EXECUTION_SAFE_OS
3 SP_EXECUTION_FIRST_BOOT
4 SP_EXECUTION_OOBE_BOOT
5 SP_EXECUTION_UNINSTALL
0 SP_EXECUTION_OP_UNKNO 10 SP_EXECUTION_OP_ADD_D
WN RIVER
1 SP_EXECUTION_OP_COPY_P 11 SP_EXECUTION_OP_ENABLE
AYLOAD _FEATURE
2 SP_EXECUTION_OP_DOWNL 12 SP_EXECUTION_OP_DISABLE
OAD_UPDATES _FEATURE
3 SP_EXECUTION_OP_INSTALL 13 SP_EXECUTION_OP_REGIST
_UPDATES ER_ASYNC_PROCESS
4 SP_EXECUTION_OP_INSTALL 14 SP_EXECUTION_OP_REGIST
_RECOVERY_ENVIRONMEN ER_SYNC_PROCESS
T
15 SP_EXECUTION_OP_CREATE
5 SP_EXECUTION_OP_INSTALL _FILE
_RECOVERY_IMAGE
16 SP_EXECUTION_OP_CREATE
6 SP_EXECUTION_OP_REPLICA _REGISTRY
TE_OC
17 SP_EXECUTION_OP_BOOT
7 SP_EXECUTION_OP_INSTALL
_DRVIERS 18 SP_EXECUTION_OP_SYSPRE
P
8 SP_EXECUTION_OP_PREPAR
E_SAFE_OS 19 SP_EXECUTION_OP_OOBE
9 SP_EXECUTION_OP_PREPAR 1A SP_EXECUTION_OP_BEGIN_F
E_ROLLBACK IRST_BOOT
A SP_EXECUTION_OP_PREPAR 1B SP_EXECUTION_OP_END_FI
E_FIRST_BOOT RST_BOOT
B SP_EXECUTION_OP_PREPAR 1C SP_EXECUTION_OP_BEGIN_
E_OOBE_BOOT OOBE_BOOT
C SP_EXECUTION_OP_APPLY_I 1D SP_EXECUTION_OP_END_O
MAGE OBE_BOOT
D SP_EXECUTION_OP_MIGRAT 1E SP_EXECUTION_OP_PRE_OO
E_DATA BE
E SP_EXECUTION_OP_SET_PR 1F SP_EXECUTION_OP_POST_O
ODUCT_KEY OBE
F SP_EXECUTION_OP_ADD_U 20 SP_EXECUTION_OP_ADD_PR
NATTEND OVISIONING_PACKAGE
For example: An extend code of 0x4000D , represents a problem during phase 4 (0x4 ) with data migration
(000D ).
Related topics
Windows 10 FAQ for IT professionals
Windows 10 Enterprise system requirements
Windows 10 Specifications
Windows 10 IT pro forums
Fix Windows Update errors by using the DISM or System Update Readiness tool
Log files
5/5/2021 • 7 minutes to read • Edit Online
Applies to
Windows 10
NOTE
This is a 400 level topic (advanced).
See Resolve Windows 10 upgrade errors for a full list of topics in this article.
Several log files are created during each phase of the upgrade process. These log files are essential for
troubleshooting upgrade problems. By default, the folders that contain these log files are hidden on the upgrade
target computer. To view the log files, configure Windows Explorer to view hidden items, or use a tool to
automatically gather these logs. The most useful log is setupact.log . The log files are located in a different
folder depending on the Windows Setup phase. Recall that you can determine the phase from the extend code.
NOTE
Also see the Windows Error Reporting section in this document for help locating error codes and log files.
The following table describes some log files and how to use them for troubleshooting purposes:
miglog.xml Post-upgrade (after OOBE): Contains information about Identify post upgrade data
Windows\Panther what was migrated during migration issues.
the installation.
setuperr.log content:
The first line indicates there was an error 0x00000570 with the file
C:\ProgramData\Microsoft\Cr ypto\RSA\S-1-5-18 [CN] (shown below):
The error 0x00000570 is a Win32 error code corresponding to: ERROR_FILE_CORRUPT: The file or directory is
corrupted and unreadable.
Therefore, Windows Setup failed because it was not able to migrate the corrupt file
C:\ProgramData\Microsoft\Cr ypto\RSA\S-1-5-18[CN] . This file is a local system certificate and can be
safely deleted. Searching the setupact.log file for additional details, the phrase "Shell application requested
abort" is found in a location with the same timestamp as the lines in setuperr.log. This confirms our suspicion
that this file is the cause of the upgrade failure:
setupact.log content:
setupapi.dev.log content:
This analysis indicates that the Windows upgrade error can be resolved by deleting the
C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18[CN] file. Note: In this example, the full, unshortened file name
is C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18\be8228fb2d3cb6c6b0ccd9ad51b320b4_a43d512c-69f2-
42de-aef9-7a88fabdaa3f.
Related topics
Windows 10 FAQ for IT professionals
Windows 10 Enterprise system requirements
Windows 10 Specifications
Windows 10 IT pro forums
Fix Windows Update errors by using the DISM or System Update Readiness tool
Resolution procedures
5/5/2021 • 19 minutes to read • Edit Online
Applies to
Windows 10
NOTE
This is a 200 level topic (moderate).
See Resolve Windows 10 upgrade errors for a full list of topics in this article.
This topic provides some common causes and solutions that are associated with specific upgrade error codes. If
a Windows 10 upgrade fails, you can write down the error code that is displayed, or find the error code in the
Windows Event Log or in the Windows Setup log files (ex: setuperr.log ) and review the cause and solutions
provided here. You should also try running the free SetupDiag tool provided by Microsoft, which can
automatically find the reason for an upgrade failure.
0xC1900101
A frequently observed result code is 0xC1900101. This result code can be thrown at any stage of the upgrade
process, with the exception of the downlevel phase. 0xC1900101 is a generic rollback code, and usually indicates
that an incompatible driver is present. The incompatible driver can cause blue screens, system hangs, and
unexpected reboots. Analysis of supplemental log files is often helpful, such as:
The minidump file: $Windows.~bt\Sources\Rollback\setupmem.dmp,
Event logs: $Windows.~bt\Sources\Rollback*.evtx
The device install log: $Windows.~bt\Sources\Rollback\setupapi\setupapi.dev.log
The device install log is particularly helpful if rollback occurs during the sysprep operation (extend code
0x30018).
To resolve a rollback that was caused by driver conflicts, try running setup using a minimal set of drivers and
startup programs by performing a clean boot before initiating the upgrade process. Also check to be sure that
your drivers are properly signed. For more information, see Remove unsigned drivers.
See the following general troubleshooting procedures associated with a result code of 0xC1900101:
C O DE M IT IGAT IO N C A USE
0xC1900101 - 0x2000c Disconnect all peripheral devices that Windows Setup encountered an
are connected to the system, except unspecified error during Wim apply in
for the mouse, keyboard and display. the WinPE phase.
Contact your hardware vendor to This is generally caused by out-of-date
obtain updated device drivers. drivers
Ensure that "Download and install
updates (recommended)" is accepted
at the start of the upgrade process.
0xC1900101 - 0x20017 Ensure that all that drivers are A driver has caused an illegal
updated. operation.
Open the Setuperr.log and Windows was not able to migrate the
Setupact.log files in the driver, resulting in a rollback of the
%windir%\Panther directory, and then operating system.
locate the problem drivers. This is a SafeOS boot failure, typically
For more information, see Windows caused by drivers or non-Microsoft
Vista, Windows 7, Windows Server disk encryption software.
2008 R2, Windows 8.1, and Windows
10 setup log file locations.
Update or uninstall the problem
drivers.
0xC1900101 - 0x30018 Disconnect all peripheral devices that A device driver has stopped
are connected to the system, except responding to setup.exe during the
for the mouse, keyboard and display. upgrade process.
Contact your hardware vendor to
obtain updated device drivers.
Ensure that "Download and install
updates (recommended)" is accepted
at the start of the upgrade process.
0xC1900101 - 0x3000D Disconnect all peripheral devices that Installation failed during the
are connected to the system, except FIRST_BOOT phase while attempting
for the mouse, keyboard and display. the MIGRATE_DATA operation.
Update or uninstall the display driver. This can occur due to a problem with a
display driver.
C O DE M IT IGAT IO N C A USE
0xC1900101 - 0x4000D Check supplemental rollback logs for a A rollback occurred due to a driver
setupmem.dmp file, or event logs for configuration issue.
any unexpected reboots or errors. Installation failed during the second
Review the rollback log and determine boot phase while attempting the
the stop code. MIGRATE_DATA operation.
The rollback log is located in the This can occur because of incompatible
$Windows.~BT\Sources\Rollback drivers.
folder. An example analysis is shown
below. This example is not
representative of all cases:
0xC1900101 - 0x40017 Clean boot into Windows, and then Windows 10 upgrade failed after the
attempt the upgrade to Windows 10. second reboot.
For more information, see How to This is usually caused by a faulty driver.
perform a clean boot in Windows. For example: antivirus filter drivers or
encryption drivers.
Ensure that you select the option to
"Download and install updates
(recommended)." Also be sure to
remove unsigned drivers.
Resolution
Workaround 1
Workaround 2
Non-Microsoft information
disclaimer
The non-Microsoft products that this
article discusses are manufactured by
companies that are independent of
Microsoft. Microsoft makes no
warranty, implied or otherwise, about
the performance or reliability of these
products.
0x800xxxxx
Result codes that start with the digits 0x800 are also important to understand. These error codes indicate
general operating system errors, and are not unique to the Windows upgrade process. Examples include
timeouts, devices not functioning, and a process stopping unexpectedly.
See the following general troubleshooting procedures associated with a result code of 0x800xxxxx:
C O DE M IT IGAT IO N C A USE
80040005 - 0x20007 This error has more than one possible An unspecified error occurred with a
cause. Attempt quick fixes, and if not driver during the SafeOS phase.
successful, analyze log files in order to
determine the problem and solution.
0x80073BC3 - 0x20009 These errors occur during partition The requested system device cannot
0x80070002 - 0x20009 analysis and validation, and can be be found, there is a sharing violation,
0x80073B92 - 0x20009 caused by the presence of multiple or there are multiple devices matching
system partitions. For example, if you the identification criteria.
installed a new system drive but left
the previous system drive connected,
this can cause a conflict. To resolve the
errors, disconnect or temporarily
disable drives that contain the unused
system partition. You can reconnect
the drive after the upgrade has
completed. Alternatively, you can
delete the unused system partition.
800704B8 - 0x3001A Disable or uninstall non-Microsoft An extended error has occurred during
antivirus applications, disconnect all the first boot phase.
unnecessary devices, and perform a
clean boot.
8007042B - 0x4000D Analyze log files in order to determine The installation failed during the
the file, application, or driver that is second boot phase while attempting
not able to be migrated. Disconnect, the MIGRATE_DATA operation.
update, remove, or replace the device This issue can occur due to file system,
or object. application, or driver issues.
C O DE M IT IGAT IO N C A USE
8007001F - 0x3000D Analyze log files in order to determine The installation failed in the
the files or registry entries that are FIRST_BOOT phase with an error
blocking data migration. during MIGRATE_DATA operation.
8007001F - 0x4000D Analyze log files in order to determine General failure, a device attached to
the device that is not functioning the system is not functioning.
properly. Disconnect, update, or
replace the device.
8007042B - 0x4001E This error has more than one possible The installation failed during the
cause. Attempt quick fixes, and if not second boot phase while attempting
successful, analyze log files in order to the PRE_OOBE operation.
determine the problem and solution.
0xC1800118 WSUS has downloaded content that it See Steps to resolve error 0xC1800118
cannot use due to a missing for information.
decryption key.
0xC1900200 Setup.exe has detected that the Ensure the system you are trying to
machine does not meet the minimum upgrade meets the minimum system
system requirements. requirements.
See Windows 10 specifications for
information.
0x80090011 A device driver error occurred during Contact your hardware vendor and get
user data migration. all the device drivers updated. It is
recommended to have an active
internet connection during upgrade
process.
Ensure that "Download and install
updates (recommended)" is accepted
at the start of the upgrade process.
0xC7700112 Failure to complete writing data to the This issue is resolved in the latest
system drive, possibly due to write version of Upgrade Assistant.
access failure on the hard disk. Ensure that "Download and install
updates (recommended)" is accepted
at the start of the upgrade process.
0x80190001 An unexpected error was encountered To resolve this issue, download and run
while attempting to download files the media creation tool. See Download
required for upgrade. windows 10.
0x80246007 The update was not downloaded Attempt other methods of upgrading
successfully. the operating system.
Download and run the media creation
tool. See Download windows 10.
Attempt to upgrade using .ISO or USB.
Note
Windows 10 Enterprise isn’t available
in the media creation tool. For more
information, go to the Volume
Licensing Service Center.
0xC1900201 The system did not pass the minimum Contact the hardware vendor to get
requirements to install the update. the latest updates.
0x80070020 The existing process cannot access the Use the MSCONFIG tool to perform a
file because it is being used by another clean boot on the machine and then
process. try to perform the update again. For
more information, see How to perform
a clean boot in Windows.
0x80070522 The user doesn’t have required Ensure that you have signed in as a
privilege or credentials to upgrade. local administrator or have local
administrator privileges.
0xC1900107 A cleanup operation from a previous Restart the device and run setup again.
installation attempt is still pending and If restarting the device does not
a system reboot is required in order to resolve the issue, then use the Disk
continue the upgrade. Cleanup utility and clean up the
temporary files as well as the System
files. For more information, see Disk
cleanup in Windows 10.
0xC1900209 The user has chosen to cancel because Incompatible software is blocking the
the system does not pass the upgrade process. Uninstall the
compatibility scan to install the update. application and try the upgrade again.
Setup.exe will report this error when it See Windows 10 Pre-Upgrade
can upgrade the machine with user Validation using SETUP.EXE for more
data but cannot migrate installed information.
applications. You can also download the Windows
Assessment and Deployment Kit (ADK)
for Windows 10 and install Application
Compatibility Tools.
0x8007002 This error is specific to upgrades using Analyze the SMSTS.log and verify that
System Center 2012 Configuration the upgrade is failing on "Apply
Manager R2 SP1 CU3 Operating system" Phase: Error
(5.00.8238.1403) 80072efe DownloadFileWithRanges()
failed. 80072efe.
ApplyOperatingSystem (0x0760)
The error 80072efe means that the
connection with the server was
terminated abnormally.
To resolve this issue, try the OS
Deployment test on a client in same
VLAN as the Configuration Manager
server. Check the network
configuration for random client-server
connection issues happening on the
remote VLAN.
0x80240FFF Occurs when update synchronization You can prevent this by installing hotfix
fails. It can occur when you are using 3095113 before you enable update
Windows Server Update Services on its synchronization. However, if you have
own or when it is integrated with already run into this problem, do the
Microsoft Endpoint Configuration following:
Manager. If you enable update 1. Disable the Upgrades
synchronization before you install classification.
hotfix 3095113, WSUS doesn't 2. Install hotfix 3095113.
recognize the Upgrades classification 3. Delete previously synched
and instead treats the upgrade like a updates.
regular update. 4. Enable the Upgrades
classification.
5. Perform a full synch.
For detailed information on how to run
these steps check out How to delete
upgrades in WSUS.
0x8007007E Occurs when update synchronization Use the following steps to repair
fails because you do not have hotfix Windows Server Update Services. You
3095113 installed before you enable must run these steps on each WSUS
update synchronization. Specifically, server that synched metadata before
the CopyToCache operation fails on you installed the hotfix.
clients that have already downloaded 1. Stop the Windows Update
the upgrade because Windows Server service. Sign in as a user with
Update Services has bad metadata administrative privileges, and
related to the upgrade. It can occur then do the following:
when you are using standalone a. Open Administrative
Windows Server Update Services or Tools from the Control
when WSUS is integrated with Panel.
Microsoft Endpoint Configuration b. Double-click Ser vices .
Manager. c. Find the Windows
Update service, right-
click it, and then select
Stop . If prompted,
enter your credentials.
2. Delete all files and folders
under
c:\Windows\SoftwareDistributio
n\DataStore.
3. Restart the Windows Update
service.
0x80070003- 0x20007 This is a failure during SafeOS phase Verify device drivers on the computer,
driver installation. and analyze log files to determine the
problem driver.
0x8007025D - 0x2000C This error occurs if the ISO file's "Re-download the ISO/Media and re-
metadata is corrupt. attempt the upgrade.
Alternatively, re-create installation
media the Media Creation Tool.
0x80070490 - 0x20007 An incompatible device driver is Verify device drivers on the computer,
present. and analyze log files to determine the
problem driver.
0xC1900101 - 0x2000c An unspecified error occurred in the Run checkdisk to repair the file system.
SafeOS phase during WIM apply. This For more information, see the quick
can be caused by an outdated driver fixes section in this guide.
or disk corruption. Update drivers on the computer, and
select "Download and install updates
(recommended)" during the upgrade
process. Disconnect devices other than
the mouse, keyboard and display.
0xC1900200 - 0x20008 The computer doesn’t meet the
minimum requirements to download
or upgrade to Windows 10.
See Windows 10 Specifications and
verify the computer meets
minimum requirements.
Review logs for compatibility
information.
0x80070004 - 0x3000D This is a problem with data migration Analyze log files to determine the
during the first boot phase. There are issue.
multiple possible causes.
0xC1900101 - 0x4001E Installation failed in the This is a generic error that occurs
SECOND_BOOT phase with an error during the OOBE phase of setup. See
during PRE_OOBE operation. the 0xC1900101 section of this guide
and review general troubleshooting
procedures described in that section.
0x80070005 - 0x4000D The installation failed in the Analyze log files to determine the data
SECOND_BOOT phase with an error in point that is reporting access denied.
during MIGRATE_DATA operation. This
error indicates that access was denied
while attempting to migrate data.
0x80070004 - 0x50012 Windows Setup failed to open a file. Analyze log files to determine the data
point that is reporting access
problems.
NOTE
If your device allows it, you can
use an external USB drive for
the upgrade process. Windows
setup will back up the previous
version of Windows to a USB
external drive. The external
drive must be at least 8GB
(16GB is recommended). The
external drive should be
formatted using NTFS. Drives
that are formatted in FAT32 may
run into errors due to FAT32 file
size limitations. USB drives are
preferred over SD cards
because drivers for SD cards
are not migrated if the device
does not support Connected
Standby.
Modern setup errors
Also see the following sequential list of modern setup (mosetup) error codes with a brief description of the
cause.
Related topics
Windows 10 FAQ for IT professionals
Windows 10 Enterprise system requirements
Windows 10 Specifications
Windows 10 IT pro forums
Fix Windows Update errors by using the DISM or System Update Readiness tool
Win 7 to Win 10 upgrade error (0x800707E7 - 0x3000D))
Win 10 upgrade error: User profile suffix mismatch, 0x800707E7 - 0x3000D
Submit Windows 10 upgrade errors using Feedback
Hub
3/26/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
NOTE
This is a 100 level topic (basic).
See Resolve Windows 10 upgrade errors for a full list of topics in this article.
In this topic
This topic describes how to submit problems with a Windows 10 upgrade to Microsoft using the Windows 10
Feedback Hub.
Submit feedback
To submit feedback about a failed Windows 10 upgrade, click the following link: Feedback Hub
The Feedback Hub will open.
Under Tell us about it , and then under Summarize your issue , type Upgrade failing .
Under Give us more detail , provide additional information about the failed upgrade, such as:
When did the failure occur?
Were there any reboots?
How many times did the system reboot?
How did the upgrade fail?
Were any error codes visible?
Did the computer fail to a blue screen?
Did the computer automatically roll back or did it hang, requiring you to power cycle it before it
rolled back?
Additional details
What type of security software is installed?
Is the computer up to date with latest drivers and firmware?
Are there any external devices connected?
If you used the link above, the category and subcategory will be automatically selected. If it is not selected,
choose Install and Update and Windows Installation .
You can attach a screenshot or file if desired. This is optional, but can be extremely helpful when diagnosing your
upgrade issue. The location of these files is described here: Windows Setup log files and event logs.
Click Submit to send your feedback.
See the following example:
After you click Submit, that's all you need to do. Microsoft will receive your feedback and begin analyzing the
issue. You can check on your feedback periodically to see what solutions have been provided.
If you run into problems when using Windows Update, start with the following steps:
1. Run the built-in Windows Update troubleshooter to fix common issues. Navigate to Settings > Update
& Security > Troubleshoot > Windows Update .
2. Install the most recent Servicing Stack Update (SSU) that matches your version of Windows from
theMicrosoft Update Catalog. See Servicing stack updates for more details on servicing stack updates.
3. Make sure that you install the latest Windows updates, cumulative updates, and rollup updates. To verify
the update status, refer to the appropriate update history for your system:
Windows 10, version 2004 and Windows Server, version 2004
Windows 10, version 1909 and Windows Server, version 1909
Windows 10, version 1903 and Windows Server, version 1903
Windows 10, version 1809 and Windows Server 2019
Windows 10, version 1803
Windows 10, version 1709
Windows 10, version 1703
Windows 10 and Windows Server 2016
Windows 8.1 and Windows Server 2012 R2
Windows Server 2012
Windows 7 SP1 and Windows Server 2008 R2 SP1
Advanced users can also refer to the log generated by Windows Update for further investigation.
You might encounter the following scenarios when using Windows Update.
Feature updates are not being offered while other updates are
Devices running Windows 10, version 1709 through Windows 10, version 1803 that are configured to update
from Windows Update (including Windows Update for Business) are able to install servicing and definition
updates but are never offered feature updates.
Checking the WindowsUpdate.log reveals the following error:
YYYY/MM/DD HH:mm:ss:SSS PID TID Agent * START * Finding updates CallerId = Update;taskhostw Id
= 25
YYYY/MM/DD HH:mm:ss:SSS PID TID Agent Online = Yes; Interactive = No; AllowCachedResults = No;
Ignore download priority = No
YYYY/MM/DD HH:mm:ss:SSS PID TID Agent ServiceID = {855E8A7C-ECB4-4CA3-B045-1DFA50104289} Third
party service
YYYY/MM/DD HH:mm:ss:SSS PID TID Agent Search Scope = {Current User}
YYYY/MM/DD HH:mm:ss:SSS PID TID Agent Caller SID for Applicability: S-1-12-1-2933642503-
1247987907-1399130510-4207851353
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc Got 855E8A7C-ECB4-4CA3-B045-1DFA50104289 redir
Client/Server URL: https://fe3.delivery.mp.microsoft.com/ClientWebService/client.asmx""
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc Token Requested with 0 category IDs.
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc GetUserTickets: No user tickets found. Returning
WU_E_NO_USERTOKEN.
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc *FAILED* [80070426] Method failed
[AuthTicketHelper::GetDeviceTickets:570]
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc *FAILED* [80070426] Method failed
[AuthTicketHelper::GetDeviceTickets:570]
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc *FAILED* [80070426] GetDeviceTickets
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc *FAILED* [80070426] Method failed
[AuthTicketHelper::AddTickets:1092]
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc *FAILED* [80070426] Method failed
[CUpdateEndpointProvider::GenerateSecurityTokenWithAuthTickets:1587]
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc *FAILED* [80070426] GetAgentTokenFromServer
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc *FAILED* [80070426] GetAgentToken
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc *FAILED* [80070426] EP:Call to GetEndpointToken
YYYY/MM/DD HH:mm:ss:SSS PID TID Misc *FAILED* [80070426] Failed to obtain service 855E8A7C-
ECB4-4CA3-B045-1DFA50104289 plugin Client/Server auth token of type 0x00000001
YYYY/MM/DD HH:mm:ss:SSS PID TID ProtocolTalker *FAILED* [80070426] Method failed
[CAgentProtocolTalkerContext::DetermineServiceEndpoint:377]
YYYY/MM/DD HH:mm:ss:SSS PID TID ProtocolTalker *FAILED* [80070426] Initialization failed for Protocol
Talker Context
YYYY/MM/DD HH:mm:ss:SSS PID TID Agent Exit code = 0x80070426
YYYY/MM/DD HH:mm:ss:SSS PID TID Agent * END * Finding updates CallerId = Update;taskhostw Id =
25
Microsoft Account Sign In Assistant (MSA or wlidsvc) is the service in question. The DCAT Flighting service
(ServiceId: 855E8A7C-ECB4-4CA3-B045-1DFA50104289) relies on MSA to get the global device ID for the
device. Without the MSA service running, the global device ID won't be generated and sent by the client and the
search for feature updates never completes successfully.
To resolve this issue, reset the MSA service to the default StartType of "manual."
NOTE
You can also import the proxy settings from Internet Explorer by using the following command: netsh winhttp import
proxy source=ie
If downloads through a proxy server fail with a 0x80d05001 DO_E_HTTP_BLOCKSIZE_MISMATCH error, or if you
notice high CPU usage while updates are downloading, check the proxy configuration to permit HTTP RANGE
requests to run.
You might choose to apply a rule to permit HTTP RANGE requests for the following URLs:
*.download.windowsupdate.com
*.dl.delivery.mp.microsoft.com *.delivery.mp.microsoft.com
If you can't allow RANGE requests, you'll be downloading more content than needed in updates (as delta
patching will not work).
Update is superseded As updates for a component are Check that the package that you are
released, the updated component will installing contains newer versions of
supersede an older component that is the binaries. Or, check that the
already on the system. When this package is superseded by another new
occurs, the previous update is marked package.
as superseded. If the update that
you're trying to install already has a
newer version of the payload on your
system, you might receive this error
message.
Update is already installed If the update that you're trying to Verify that the package that you are
install was previously installed, for trying to install was not previously
example, by another update that installed.
carried the same payload, you may
encounter this error message.
C A USE EXP L A N AT IO N RESO L UT IO N
Wrong update for architecture Updates are published by CPU Verify that the package that you're
architecture. If the update that you're trying to install matches the Windows
trying to install does not match the version that you are using. The
architecture for your CPU, you may Windows version information can be
encounter this error message. found in the "Applies To" section of the
article for each update. For example,
Windows Server 2012-only updates
cannot be installed on Windows Server
2012 R2-based computers.
Also, verify that the package that you
are installing matches the processor
architecture of the Windows version
that you are using. For example, an
x86-based update cannot be installed
on x64-based installations of Windows.
Missing prerequisite update Some updates require a prerequisite Check the related articles about the
update before they can be applied to a package in the Microsoft Knowledge
system. If you are missing a Base (KB) to make sure that you have
prerequisite update, you may the prerequisite updates installed. For
encounter this error message. For example, if you encounter the error
example, KB 2919355 must be message on Windows 8.1 or Windows
installed on Windows 8.1 and Server 2012 R2, you may have to
Windows Server 2012 R2 computers install the April 2014 update 2919355
before many of the updates that were as a prerequisite and one or more pre-
released after April 2014 can be requisite servicing updates (KB
installed. 2919442 and KB 3173424).
To determine if these prerequisite
updates are installed, run the following
PowerShell command:
get-hotfix KB3173424,KB2919355,
KB2919442
.
If the updates are installed, the
command will return the installed date
in the InstalledOn section of the
output.
DownloadManager Error 0x800706d9 occurred while downloading update; notifying dependent calls.
Or
Or
Go to Services.msc and ensure that Windows Firewall Service is enabled. Stopping the service associated with
Windows Firewall with Advanced Security is not supported by Microsoft. For more information, see I need to
disable Windows Firewall.
P ROTO C O L EN DP O IN T URL
HTTP emdl.ws.microsoft.com
HTTP *.dl.delivery.mp.microsoft.com
HTTP *.windowsupdate.com
HTTPS *.delivery.mp.microsoft.com
NOTE
Be sure not to use HTTPS for those endpoints that specify HTTP, and vice versa. The connection will fail.
The specific endpoints can vary between Windows 10 versions. See, for example, Windows 10 2004 Enterprise
connection endpoints. Similar articles for other Windows 10 versions are available in the table of contents
nearby.
O UT P UT M EA N IN G
- Name: Microsoft Update - The update source is Microsoft Update, which means that
-OffersWindowsUpdates: True updates for other Microsoft products besides the operating
system could also be delivered.
- Indicates that the client is configured to receive updates for
all Microsoft Products (Office, etc.)
- Name: Windows Store (DCat Prod) -The update source is Insider Updates for Store Apps.
- OffersWindowsUpdates: False - Indicates that the client will not receive or is not configured
to receive these updates.
- Name: Windows Server Update Service - The source is a Windows Server Updates Services server.
- OffersWindowsUpdates: True - The client is configured to receive updates from WSUS.
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
"UseWUServer"=dword:00000001
2018-08-06 09:33:31:085 480 1118 Agent ** START ** Agent: Finding updates [CallerId = OperationalInsight
Id = 49]
2018-08-06 09:33:31:085 480 1118 Agent *********
2018-08-06 09:33:31:085 480 1118 Agent * Include potentially superseded updates
2018-08-06 09:33:31:085 480 1118 Agent * Online = No; Ignore download priority = No
2018-08-06 09:33:31:085 480 1118 Agent * Criteria = "IsHidden = 0 AND DeploymentAction=*"
2018-08-06 09:33:31:085 480 1118 Agent * ServiceID = {00000000-0000-0000-0000-000000000000} Third party
service
2018-08-06 09:33:31:085 480 1118 Agent * Search Scope = {Machine}
2018-08-06 09:33:32:554 480 1118 Agent * Found 83 updates and 83 categories in search; evaluated appl.
rules of 517 out of 1473 deployed entities
2018-08-06 09:33:32:554 480 1118 Agent *********
2018-08-06 09:33:32:554 480 1118 Agent ** END ** Agent: Finding updates [CallerId = OperationalInsight
Id = 49]
In the above log snippet, we see that the Criteria = "IsHidden = 0 AND DeploymentAction=*" . "*" means there is
nothing specified from the server. So, the scan happens but there is no direction to download or install to the
agent. So it just scans the update and provides the results.
As shown in the following logs, automatic update runs the scan and finds no update approved for it. So it
reports there are no updates to install or download. This is due to an incorrect configuration. The WSUS side
should approve the updates for Windows Update so that it fetches the updates and installs them at the specified
time according to the policy. Since this scenario doesn't include Configuration Manager, there's no way to install
unapproved updates. You're expecting the operational insight agent to do the scan and automatically trigger the
download and installation but that won’t happen with this configuration.
2018-08-06 10:58:45:992 480 5d8 Agent ** START ** Agent: Finding updates [CallerId = AutomaticUpdates Id
= 57]
2018-08-06 10:58:45:992 480 5d8 Agent *********
2018-08-06 10:58:45:992 480 5d8 Agent * Online = Yes; Ignore download priority = No
2018-08-06 10:58:45:992 480 5d8 Agent * Criteria = "IsInstalled=0 and DeploymentAction='Installation' or
IsPresent=1 and DeploymentAction='Uninstallation' or IsInstalled=1 and DeploymentAction='Installation' and
RebootRequired=1 or IsInstalled=0 and DeploymentAction='Uninstallation' and RebootRequired=1"
Safeguard holds prevent a device with a known compatibility issue from being offered a new Windows 10
feature update by using Windows Update. We use safeguard holds to protect the device and user from a failed
or poor update experience. We renew the offering once a fix is issued and is verified on an affected device. For
more information about safeguard holds, see Safeguard holds.
Opting out of a safeguard hold can put devices at risk from known performance issues.
We recommend opting out only in an IT environment and for validation purposes. You can also validate an
upcoming Windows 10 feature update version without the safeguards being applied by using the Release
Preview channel of the Windows Insider Program for Business.
Disabling safeguards does not guarantee your device will be able to successfully update. The update might still
fail and will likely result in a bad experience since you are bypassing the protection against known issues.
NOTE
After a device installs a new Windows 10 version, the Disable safeguards for Feature Updates Group Policy will
revert to “not configured” even if it was previously enabled. We do this to ensure the admin is consciously disabling
Microsoft’s default protection from known issues for each new feature update.
How does Windows Update work?
3/5/2021 • 5 minutes to read • Edit Online
Scanning updates
The Windows Update Orchestrator on your PC checks the Microsoft Update server or your WSUS endpoint for
new updates at random intervals. The randomization ensures that the Windows Update server isn't overloaded
with requests all at the same time. The Update Orchestrator searches only for updates that have been added
since the last time updates were searched, allowing it to find updates quickly and efficiently.
When checking for updates, the Windows Update Orchestrator evaluates whether the update is appropriate for
your device. It uses guidelines defined by the publisher of the update, for example, Microsoft Office including
enterprise group policies.
Make sure you're familiar with the following terminology related to Windows Update scan:
T ERM DEF IN IT IO N
Update We use this term to mean several different things, but in this
context it's the actual updated code or change.
Bundle update An update that contains 1-N child updates; doesn't contain
payload itself.
Delta scan Scan with updates from previous scan already cached in
datastore.
Online scan Scan that uses the network and to check an update server.
Offline scan Scan that doesn't use the network and instead checks the
local datastore. Only useful if online scan has been
performed before.
CatScan Category scan where caller can specify a categor yId to get
updates published under that categor yId .
Software sync Part of the scan that only checks for software updates (both
the apps and the operating system).
Driver sync Part of the scan that checks driver updates only. This sync is
optional and runs after the software sync.
IMPORTANT
ServiceId here identifies a client abstraction, not any specific service in the cloud. No assumption should be made
of which server a serviceId is pointing to. It's totally controlled by responses from the Service Locator Service.
Store 855E8A7C-ECB4-4CA3-B045-1DFA50104289
OS Flighting 8B24B027-1DEE-BABB-9A95-3517DFB9C552
On sites that only use WSUS or Configuration Manager, the Service Locator Service might be blocked at
the firewall. In this case the request will fail, and though the service can’t scan against Windows Update
or Microsoft Update, it can still scan against WSUS or Configuration Manager, since it’s locally configured.
Downloading updates
Once the Windows Update Orchestrator determines which updates apply to your computer, it will begin
downloading the updates, if you have selected the option to automatically download updates. It does operation
in the background without interrupting your normal use of the device.
To ensure that your other downloads aren't affected or slowed down because updates are downloading,
Windows Update uses Delivery Optimization, which downloads updates and reduces bandwidth consumption.
For more information, see Configure Delivery Optimization for Windows 10 updates.
Installing updates
When an update is applicable, the "Arbiter" and metadata are downloaded. Depending on your Windows Update
settings, when downloading is complete, the Arbiter will gather details from the device, and compare that with
the downloaded metadata to create an "action list".
The action list describes all the files needed from Windows Update, and what the installation agent (such as CBS
or Setup) should do with them. The action list is provided to the installation agent along with the payload to
begin the installation.
Committing Updates
When the option to automatically install updates is configured, the Windows Update Orchestrator, in most cases,
automatically restarts the device for you after installing the updates. It has to restart the device because it might
be insecure, or not fully updated, until it restarts. You can use Group Policy settings, mobile device management
(MDM), or the registry (not recommended) to configure when devices will restart after a Windows 10 update is
installed.
For more information, see Manage device restarts after updates.
Windows Update common errors and mitigation
4/14/2021 • 3 minutes to read • Edit Online
The following table provides information about common errors you might run into with Windows Update, as
well as steps to help you mitigate them.
0x8024402F WU_E_PT_ECP_SUCCEEDED External cab file processing One of the reasons we see
_WITH_ERRORS completed with some errors this issue is due to the
design of a software called
Lightspeed Rocket for Web
filtering.
Add the IP addresses of
devices you want to get
updates to the exceptions
list of Lightspeed
0x80070BC9 ERROR_FAIL_REBOOT_REQ The requested operation Ensure that you don't have
UIRED failed. A system reboot is any policies that control the
required to roll back start behavior for the
changes made. Windows Module Installer.
This service should be
managed by the operating
system.
ERRO R C O DE M ESSA GE DESC RIP T IO N M IT IGAT IO N
0x80072EE2 WININET_E_TIMEOUT The operation timed out This error message can be
caused if the computer isn't
connected to the Internet.
To fix this issue, follow these
steps: make sure these
URLs are not blocked:
http://.update.microsoft.co
m
https://.update.microsoft.co
m
http://download.windowsup
date.com
0x80072EFD TIME_OUT_ERRORS The operation timed out Make sure there are no
0x80072EFE firewall rules or proxy to
0x80D02002 block Microsoft download
URLs.
Take a network monitor
trace to understand better.
<Refer to Firewall
Troubleshooting scenario>
0x8024A10A USO_E_SERVICE_SHUTTING Indicates that the Windows This can occur after a very
_DOWN Update Service is shutting long period of time of
down. inactivity, the system failing
to respond leading to the
service being idle and
causing the service to shut
down. Ensure that the
system remains active and
the connections remain
established to complete the
upgrade.
0x80244007 WU_E_PT_SOAPCLIENT_SO SOAP client failed because This issue occurs because
APFAULT there was a SOAP fault for Windows cannot renew the
reasons of cookies for Windows
WU_E_PT_SOAP_* error Update.
codes.
Review KB2883975 for
instructions to resolve the
issue.
This section lists the error codes for Microsoft Windows Update.
Inventory errors
ERRO R C O DE M ESSA GE DESC RIP T IO N
Reporter errors
ERRO R C O DE M ESSA GE DESC RIP T IO N
0x80240008 WU_E_ITEMNOTFOUND The key for the item queried could not
be found.
This troubleshooting guide addresses the most common issues that IT administrators face when using the
Windows Update for Business deployment service. For a general troubleshooting guide for Windows Update,
see Windows Update troubleshooting.
Scanning updates
The Windows Update Orchestrator on your PC checks the Microsoft Update server or your WSUS endpoint for
new updates at random intervals. The randomization ensures that the Windows Update server isn't overloaded
with requests all at the same time. The Update Orchestrator searches only for updates that have been added
since the last time updates were searched, allowing it to find updates quickly and efficiently.
When checking for updates, the Windows Update Orchestrator evaluates whether the update is appropriate for
your device. It uses guidelines defined by the publisher of the update, for example, Microsoft Office including
enterprise group policies.
Make sure you're familiar with the following terminology related to Windows Update scan:
T ERM DEF IN IT IO N
Update We use this term to mean several different things, but in this
context it's the actual updated code or change.
Bundle update An update that contains 1-N child updates; doesn't contain
payload itself.
Delta scan Scan with updates from previous scan already cached in
datastore.
Online scan Scan that uses the network and to check an update server.
Offline scan Scan that doesn't use the network and instead checks the
local datastore. Only useful if online scan has been
performed before.
CatScan Category scan where caller can specify a categor yId to get
updates published under that categor yId .
Software sync Part of the scan that only checks for software updates (both
the apps and the operating system).
Driver sync Part of the scan that checks driver updates only. This sync is
optional and runs after the software sync.
IMPORTANT
ServiceId here identifies a client abstraction, not any specific service in the cloud. No assumption should be made
of which server a serviceId is pointing to. It's totally controlled by responses from the Service Locator Service.
Store 855E8A7C-ECB4-4CA3-B045-1DFA50104289
OS Flighting 8B24B027-1DEE-BABB-9A95-3517DFB9C552
On sites that only use WSUS or Configuration Manager, the Service Locator Service might be blocked at
the firewall. In this case the request will fail, and though the service can’t scan against Windows Update
or Microsoft Update, it can still scan against WSUS or Configuration Manager, since it’s locally configured.
Downloading updates
Once the Windows Update Orchestrator determines which updates apply to your computer, it will begin
downloading the updates, if you have selected the option to automatically download updates. It does operation
in the background without interrupting your normal use of the device.
To ensure that your other downloads aren't affected or slowed down because updates are downloading,
Windows Update uses Delivery Optimization, which downloads updates and reduces bandwidth consumption.
For more information, see Configure Delivery Optimization for Windows 10 updates.
Installing updates
When an update is applicable, the "Arbiter" and metadata are downloaded. Depending on your Windows Update
settings, when downloading is complete, the Arbiter will gather details from the device, and compare that with
the downloaded metadata to create an "action list".
The action list describes all the files needed from Windows Update, and what the installation agent (such as CBS
or Setup) should do with them. The action list is provided to the installation agent along with the payload to
begin the installation.
Committing Updates
When the option to automatically install updates is configured, the Windows Update Orchestrator, in most cases,
automatically restarts the device for you after installing the updates. It has to restart the device because it might
be insecure, or not fully updated, until it restarts. You can use Group Policy settings, mobile device management
(MDM), or the registry (not recommended) to configure when devices will restart after a Windows 10 update is
installed.
For more information, see Manage device restarts after updates.
Windows 10 upgrade paths
5/24/2021 • 3 minutes to read • Edit Online
Applies to
Windows 10
Windows 10 Mobile
Upgrade paths
This topic provides a summary of available upgrade paths to Windows 10. You can upgrade to Windows 10
from Windows 7 or a later operating system. This includes upgrading from one release of Windows 10 to later
release of Windows 10. Migrating from one edition of Windows 10 to a different edition of the same release is
also supported.
If you are also migrating to a different edition of Windows, see Windows 10 edition upgrade. Methods and
supported paths are described on this page to change the edition of Windows. These methods require that you
input a license or product key for the new Windows edition prior to starting the upgrade process. Edition
downgrade is also supported for some paths, but please note that applications and settings are not maintained
when the Windows edition is downgraded.
Windows 10 version upgrade : You can directly upgrade any semi-annual channel version of Windows 10
to a newer, supported semi-annual channel version of Windows 10, even if it involves skipping versions.
Work with your account representative if your current version of Windows is out of support. See the
Windows lifecycle fact sheet for availability and service information.
Windows 10 LTSC/LTSB : Due to naming changes, product versions that display Windows 10 LTSB will be
replaced with Windows 10 LTSC in subsequent feature updates. The term LTSC is used here to refer to all
long term servicing versions.
In-place upgrade from Windows 7, Windows 8.1, or Windows 10 semi-annual channel to Windows 10 LTSC
is not supported. Note : Windows 10 LTSC 2015 did not block this upgrade path. This was corrected in the
Windows 10 LTSC 2016 release, which will now only allow data-only and clean install options. You can
upgrade from Windows 10 LTSC to Windows 10 semi-annual channel, provided that you upgrade to the
same or a newer build version. For example, Windows 10 Enterprise 2016 LTSB can be upgraded to
Windows 10 Enterprise version 1607 or later. Upgrade is supported using the in-place upgrade process
(using Windows setup). You will need to use the Product Key switch if you want to keep your apps. If you
don't use the switch the option 'Keep personal files and apps' will be grayed out. The command line would
be setup.exe /pkey xxxxx-xxxxx-xxxxx-xxxxx-xxxxx , using your relevant Windows 10 SAC product key.
For example, if using a KMS, the command line would be setup.exe /pkey NPPR9-FWDCX-D2C8J-
H872K-2YT43 .
Windows N/KN : Windows "N" and "KN" SKUs (editions without media-related functionality) follow the
same upgrade paths shown below. If the pre-upgrade and post-upgrade editions are not the same type (e.g.
Windows 8.1 Pro N to Windows 10 Pro), personal data will be kept but applications and settings will be
removed during the upgrade process.
Windows 8.0 : You cannot upgrade directly from Windows 8.0 to Windows 10. To upgrade from Windows
8.0, you must first install the Windows 8.1 update.
W IN DO W S W IN DO W S W IN DO W S W IN DO W S W IN DO W S W IN DO W S W IN DO W S
10 H O M E 10 P RO 10 P RO 10 10 10 M O B IL E 10 M O B IL E
EDUC AT IO EDUC AT IO EN T ERP RIS EN T ERP RIS
N N E E
W IN DO W S Starter ✔ ✔ ✔ ✔
7
Home ✔ ✔ ✔ ✔
Basic
Home ✔ ✔ ✔ ✔
Premium
Professio D ✔ ✔ ✔ ✔
nal
Ultimate D ✔ ✔ ✔ ✔
Enterprise ✔ ✔
W IN DO W S (Core) ✔ ✔ ✔ ✔
8. 1
Connecte ✔ ✔ ✔ ✔
d
Pro D ✔ ✔ ✔ ✔
Pro D ✔ ✔ ✔ ✔
Student
Pro WMC D ✔ ✔ ✔ ✔
Enterprise ✔ ✔
Embedde ✔
d
Industry
Windows
RT
Windows ✔
Phone
8.1
W IN DO W S Home ✔ ✔ ✔
10
Pro D ✔ ✔ ✔
Education D
Enterprise ✔
Mobile ✔
Related Topics
Windows 10 deployment scenarios
Windows upgrade and migration considerations
Windows 10 edition upgrade
Deploy Windows 10 with Microsoft 365
3/26/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
This topic provides a brief overview of Microsoft 365 and describes how to use a free 90-day trial account to
review some of the benefits of Microsoft 365.
Microsoft 365 is a new offering from Microsoft that combines Windows 10 with Office 365, and Enterprise
Mobility and Security (EMS). See the M365 Enterprise poster for an overview.
For Windows 10 deployment, Microsoft 365 includes a fantastic deployment advisor that can walk you through
the entire process of deploying Windows 10. The wizard supports multiple Windows 10 deployment methods,
including:
Windows Autopilot
In-place upgrade
Deploying Windows 10 upgrade with Intune
Deploying Windows 10 upgrade with Microsoft Endpoint Configuration Manager
Deploying a computer refresh with Microsoft Endpoint Configuration Manager
NOTE
If you have not run a setup guide before, you will see the Prepare your environment guide first. This is to make sure
you have basics covered like domain verification and a method for adding users. At the end of the "Prepare your
environment" guide, there will be a Ready to continue button that sends you to the original guide that was selected.
With the release of Windows 10, we moved the update model to the Unified Update Platform. Unified Update
Platform (UUP) is a single publishing, hosting, scan and download model for all types of OS updates, desktop
and mobile for all Windows-based operating systems, for everything from monthly quality updates to new
feature updates.
Use the following information to get started with Windows Update:
Understand the UUP architecture
Understand how Windows Update works
Find Windows Update log files
Learn how to troubleshoot Windows Update
Review common Windows Update errors and check out the error code reference
Review other resources to help you use Windows Update
Review Windows IT Pro Blog section of Microsoft Blogs.
Update UI – The user interface to initiate Windows Update check and history. Available under Settings
--> Update & Security --> Windows Update .
Update Session Orchestrator (USO) - A Windows OS component that orchestrates the sequence of
downloading and installing various update types from Windows Update.
Update types-
OS Feature updates
OS Security updates
Device drivers
Defender definition updates
NOTE
Other types of updates, like Office desktop updates, are installed if the user opts into Microsoft Update.
Store apps aren't installed by USO, today they are separate.
WU Client/ UpdateAgent - The component running on your PC. It's essentially a DLL that is
downloaded to the device when an update is applicable. It surfaces the APIs needed to perform an
update, including those needed to generate a list of payloads to download, as well as starts stage and
commit operations. It provides a unified interface that abstracts away the underlying update technologies
from the caller.
WU Arbiter handle - Code that is included in the UpdateAgent binary. The arbiter gathers information
about the device, and uses the CompDB(s) to output an action list. It is responsible for determining the
final "composition state" of your device, and which payloads (like ESDs or packages) are needed to get
your device up to date.
Deployment Arbiter - A deployment manager that calls different installers. For example, CBS.
Additional components include the following-
CompDB – A generic term to refer to the XML describing information about target build composition,
available diff packages, and conditional rules.
Action List – The payload and additional information needed to perform an update. The action list is
consumed by the UpdateAgent, as well as other installers to determine what payload to download. It's also
consumed by the "Install Agent" to determine what actions need to be taken, such as installing or removing
packages.
Servicing stack updates
4/26/2021 • 3 minutes to read • Edit Online
Applies to
Windows 10, Windows 8.1, Windows 8, Windows 7
NOTE
You can find a list of servicing stack updates at Latest servicing stack updates.
Installation notes
Servicing stack updates contain the full servicing stack; as a result, typically administrators only need to
install the latest servicing stack update for the operating system.
Installing servicing stack update does not require restarting the device, so installation should not be
disruptive.
Servicing stack update releases are specific to the operating system version (build number), much like quality
updates.
Servicing stack updates can be delivered with Windows Update, or you can perform a search to install the
latest available at Servicing stack update for Windows 10.
Once a servicing stack update is installed, it cannot be removed or uninstalled from the machine.
Applies to
Windows 10
You can use Group Policy settings or mobile device management (MDM) to configure the behavior of Windows
Update (WU) on your Windows 10 devices. You can configure the update detection frequency, select when
updates are received, specify the update service location and more.
IMPORTANT
Additional information about settings to manage device restarts and restart notifications for updates is available on
Manage device restar ts after updates .
Additional settings that configure when Feature and Quality updates are received are detailed on Configure Windows
Update for Business .
NOTE
If the "Configure Automatic Updates" policy is disabled, then this policy has no effect.
If the "Alternate Download Server" is not set, it will use the intranet update service by default to download updates.
The option to "Download files with no Url..." is only used if the "Alternate Download Server" is set.
NOTE
The "Specify intranet Microsoft update service location" setting must be enabled for this policy to have effect.
If the "Configure Automatic Updates" policy is disabled, this policy has no effect.
NOTE
This policy applies only when the device is configured to connect to an intranet update service using the "Specify intranet
Microsoft update service location" policy.
NOTE
Updates from a service other than an intranet Microsoft update service must always be signed by Microsoft and are not
affected by this policy setting.
Installing updates
To add more flexibility to the update process, settings are available to control update installation.
Configure Automatic Updates offers 4 different options for automatic update installation, while Do not include
drivers with Windows Updates makes sure drivers are not installed with the rest of the received updates.
Do not include drivers with Windows Updates
Allows admins to exclude Windows Update (WU) drivers during updates.
To configure this setting in Group Policy, use Computer Configuration\Administrative
Templates\Windows Components\Windows update\Do not include drivers with Windows Updates .
Enable this policy to not include drivers with Windows quality updates. If you disable or do not configure this
policy, Windows Update will include updates that have a Driver classification.
Configure Automatic Updates
Enables the IT admin to manage automatic update behavior to scan, download, and install updates.
Configuring Automatic Updates by using Group Policy
Under Computer Configuration\Administrative Templates\Windows Components\Windows
update\Configure Automatic Updates , you must select one of the four options:
2 - Notify for download and auto install - When Windows finds updates that apply to this device, users will
be notified that updates are ready to be downloaded. After going to Settings > Update & security >
Windows Update , users can download and install any available updates.
3 - Auto download and notify for Install - Windows finds updates that apply to the device and downloads
them in the background (the user is not notified or interrupted during this process). When the downloads are
complete, users will be notified that they are ready to install. After going to Settings > Update & security >
Windows Update , users can install them.
4 - Auto download and schedule the install - Specify the schedule using the options in the Group Policy
Setting. For more information about this setting, see Schedule update installation.
5 - Allow local admin to choose setting - With this option, local administrators will be allowed to use the
settings app to select a configuration option of their choice. Local administrators will not be allowed to disable
the configuration for Automatic Updates.
If this setting is set to Disabled, any updates that are available on Windows Update must be downloaded and
installed manually. To do this, users must go to Settings > Update & security > Windows Update .
If this setting is set to Not Configured, an administrator can still configure Automatic Updates through the
settings app, under Settings > Update & security > Windows Update > Advanced options .
Configuring Automatic Updates by editing the registry
NOTE
Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method.
These problems might require you to reinstall the operating system. Microsoft cannot guarantee that these problems can
be resolved. Modify the registry at your own risk.
In an environment that does not have Active Directory deployed, you can edit registry settings to configure
group policies for Automatic Update.
To do this, follow these steps:
1. Select Star t , search for "regedit", and then open Registry Editor.
2. Open the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
NOTE
This setting only affects client behavior after the clients have updated to the SUS SP1 client version or later
versions.
NoAutoRebootWithLoggedOnUsers (REG_DWORD):
0 (false) or 1 (true). If set to 1 , Automatic Updates does not automatically restart a computer while
users are logged on.
NOTE
This setting affects client behavior after the clients have updated to the SUS SP1 client version or later
versions.
To use Automatic Updates with a server that is running Software Update Services, see the Deploying Microsoft
Windows Server Update Services 2.0 guidance.
When you configure Automatic Updates directly by using the policy registry keys, the policy overrides the
preferences that are set by the local administrative user to configure the client. If an administrator removes the
registry keys at a later date, the preferences that were set by the local administrative user are used again.
To determine the WSUS server that the client computers and servers connect to for updates, add the following
registry values to the registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\
WUServer (REG_SZ)
This value sets the WSUS server by HTTP name (for example, http://IntranetSUS).
WUStatusServer (REG_SZ)
This value sets the SUS statistics server by HTTP name (for example, http://IntranetSUS).
Related topics
Update Windows 10 in the enterprise
Overview of Windows as a service
Configure Delivery Optimization for Windows 10 updates
Configure BranchCache for Windows 10 updates
Configure Windows Update for Business
Manage device restarts after updates
Delivery Optimization reference
4/22/2021 • 17 minutes to read • Edit Online
Applies to
Windows 10
Looking for more Group Policy settings? See the master spreadsheet available at the Download Center.
There are a great many details you can set in Delivery Optimization to customize it to do just what you need it
to. This topic summarizes them for your reference. If you just need an overview of Delivery Optimization, see
Delivery Optimization for Windows 10 updates. If you need information about setting up Delivery Optimization,
including tips for the best settings in different scenarios, see Set up Delivery Optimization for Windows 10
updates.
NOTE
It is possible to configure preferred cache devices. For more information, see Group ID.
All cached files have to be above a set minimum size. This size is automatically set by the Delivery Optimization
cloud services, but when local storage is sufficient and the network isn't strained or congested, administrators
might choose to change it to obtain increased performance. You can set the minimum size of files to cache by
adjusting Minimum Peer Caching Content File Size.
Additional options available that control the impact Delivery Optimization has on your network include the
following:
Maximum Download Bandwidth and Percentage of Maximum Download Bandwidth control the download
bandwidth used by Delivery Optimization.
Max Upload Bandwidth controls the Delivery Optimization upload bandwidth usage.
Monthly Upload Data Cap controls the amount of data a client can upload to peers each month.
Minimum Background QoS lets administrators guarantee a minimum download speed for Windows updates.
This setting adjusts the amount of data downloaded directly from Windows Update or WSUS servers, rather
than other peers in the network.
Maximum Foreground Download Bandwidth specifies the maximum foreground download bandwidth
that Delivery Optimization uses, across all concurrent download activities, as a percentage of available
download bandwidth.
Maximum Background Download Bandwidth specifies the maximum background download bandwidth
that Delivery Optimization uses, across all concurrent download activities, as a percentage of available
download bandwidth.
Set Business Hours to Limit Background Download Bandwidth specifies the maximum background download
bandwidth that Delivery Optimization uses during and outside business hours across all concurrent
download activities as a percentage of available download bandwidth.
Set Business Hours to Limit Foreground Download Bandwidth specifies the maximum foreground download
bandwidth that Delivery Optimization uses during and outside business hours across all concurrent
download activities as a percentage of available download bandwidth.
Select a method to restrict Peer Selection restricts peer selection by the options you select.
Select the source of Group IDs restricts peer selection to a specific source.
Delay background download from http (in secs) allows you to delay the use of an HTTP source in a
background download that is allowed to use P2P.
Delay foreground download from http (in secs) allows you to delay the use of an HTTP source in a
foreground (interactive) download that is allowed to use P2P.
Administrators can further customize scenarios where Delivery Optimization will be used with the following
settings:
Minimum RAM (inclusive) allowed to use Peer Caching sets the minimum RAM required for peer caching to
be enabled.
Minimum disk size allowed to use Peer Caching sets the minimum disk size required for peer caching to be
enabled.
Enable Peer Caching while the device connects via VPN allows clients connected through VPN to use peer
caching.
Allow uploads while the device is on battery while under set Battery level controls the minimum battery level
required for uploads to occur. You must enable this policy to allow upload while on battery.
Download mode
Download mode dictates which download sources clients are allowed to use when downloading Windows
updates in addition to Windows Update servers. The following table shows the available download mode
options and what they do. Additional technical details for these policies are available in Policy CSP - Delivery
Optimization.
DO W N LO A D M O DE O P T IO N F UN C T IO N A L IT Y W H EN SET
HTTP Only (0) This setting disables peer-to-peer caching but still allows
Delivery Optimization to download content over HTTP from
the download's original source. This mode uses additional
metadata provided by the Delivery Optimization cloud
services for a peerless reliable and efficient download
experience.
Group (2) When group mode is set, the group is automatically selected
based on the device's Active Directory Domain Services (AD
DS) site (Windows 10, version 1607) or the domain the
device is authenticated to (Windows 10, version 1511). In
group mode, peering occurs across internal subnets,
between devices that belong to the same group, including
devices in remote offices. You can use GroupID option to
create your own custom group independently of domains
and AD DS sites. Starting with Windows 10, version 1803,
you can use the GroupIDSource parameter to take
advantage of other method to create groups dynamically.
Group download mode is the recommended option for most
organizations looking to achieve the best bandwidth
optimization with Delivery Optimization.
Simple (99) Simple mode disables the use of Delivery Optimization cloud
services completely (for offline environments). Delivery
Optimization switches to this mode automatically when the
Delivery Optimization cloud services are unavailable,
unreachable or when the content file size is less than 10 MB.
In this mode, Delivery Optimization provides a reliable
download experience, with no peer-to-peer caching.
Bypass (100) Bypass Delivery Optimization and use BITS, instead. You
should only select this mode if you use WSUS and prefer to
use BranchCache. You do not need to set this option if you
are using Configuration Manager. If you want to disable
peer-to-peer functionality, it's best to set DownloadMode
to 0 or 99 .
NOTE
Group mode is a best-effort optimization and should not be relied on for an authentication of identity of devices
participating in the group.
Group ID
By default, peer sharing on clients using the group download mode is limited to the same domain in Windows
10, version 1511, and the same domain and Active Directory Domain Services site in Windows 10, version
1607. By using the Group ID setting, you can optionally create a custom group that contains devices that should
participate in Delivery Optimization but do not fall within those domain or Active Directory Domain Services
site boundaries, including devices in another domain. Using Group ID, you can further restrict the default group
(for example, you could create a subgroup representing an office building), or extend the group beyond the
domain, allowing devices in multiple domains in your organization to be peers. This setting requires the custom
group to be specified as a GUID on each device that participates in the custom group.
NOTE
To generate a GUID using Powershell, use [guid]::NewGuid()
This configuration is optional and not required for most implementations of Delivery Optimization.
NOTE
If the Modify Cache Drive policy is set, the disk size check will apply to the new working directory specified by this policy.
IMPORTANT
By default, devices will not upload while on batter y . To enable uploads while on battery, you need to enable this
policy and set the battery value under which uploads pause.
NOTE
If you format the DHCP Option ID incorrectly, the client will fall back to the Cache Server Hostname policy value if that
value has been set.
S mode is an evolution of the S SKU introduced with Windows 10 April 2018 Update. It's a configuration that's
available on all Windows Editions when enabled at the time of manufacturing. The edition of Windows can be
upgrade at any time as shown below. However, the switch from S mode is a onetime switch and can only be
undone by a wipe and reload of the OS.
Related links
Consumer applications for S mode
S mode devices
Windows Defender Application Control deployment guide
Microsoft Defender for Endpoint
Switch to Windows 10 Pro or Enterprise from S
mode
8/19/2021 • 4 minutes to read • Edit Online
We recommend staying in S mode. However, in some limited scenarios, you might need to switch to Windows
10 Pro, Home, or Enterprise (not in S mode). You can switch devices running Windows 10, version 1709 or later.
A number of other transformations are possible depending on which version and edition of Windows 10 you
are starting with. Depending on the details, you might switch between S mode and the ordinary version or
convert between different editions while staying in or out of S mode. The following quick reference table
summarizes all of the switches or conversions that are supported by various means:
T H EN Y O U C A N
SW ITC H O R
IF A DEVIC E IS C O N VERT IT TO T H IS
RUN N IN G T H IS EDIT IO N O F
VERSIO N O F A N D T H IS EDIT IO N W IN DO W S 10 B Y
W IN DO W S 10 O F W IN DO W S 10 T H ESE M ET H O DS:
Windows 10, Pro in S mode Pro EDU Pro Not by this method
version 1709
Home Not by any method Not by any method Not by any method
Windows 10, Pro in S mode Pro EDU in S mode Pro Not by this method
version 1803
Home Not by any method Not by any method Not by any method
Home Not by any method Not by any method Not by any method
Use the following information to switch to Windows 10 Pro through the Microsoft Store.
IMPORTANT
While it’s free to switch to Windows 10 Pro, it’s not reversible. The only way to rollback this kind of switch is through a
bare-metal recovery (BMR) reset. This restores a Windows device to the factory state, even if the user needs to replace
the hard drive or completely wipe the drive clean. If a device is switched out of S mode via the Microsoft Store, it will
remain out of S mode even after the device is reset.
Applies to
Windows 10
MBR2GPT.EXE converts a disk from the Master Boot Record (MBR) to the GUID Partition Table (GPT) partition
style without modifying or deleting data on the disk. The tool is designed to be run from a Windows
Preinstallation Environment (Windows PE) command prompt, but can also be run from the full Windows 10
operating system (OS) by using the /allowFullOS option.
See the following video for a detailed description and demonstration of MBR2GPT.
https://www.youtube-nocookie.com/embed/hfJep4hmg9o
You can use MBR2GPT to:
Convert any attached MBR-formatted system disk to the GPT partition format. You cannot use the tool to
convert non-system disks from MBR to GPT.
Convert an MBR disk with BitLocker-encrypted volumes as long as protection has been suspended. To
resume BitLocker after conversion, you will need to delete the existing protectors and recreate them.
Convert operating system disks that have earlier versions of Windows 10 installed, such as versions 1507,
1511, and 1607. However, you must run the tool while booted into Windows 10 version 1703 or later, and
perform an offline conversion.
Convert an operating system disk from MBR to GPT using Configuration Manager or MDT provided that
your task sequence uses Windows PE version 1703 or later.
Offline conversion of system disks with earlier versions of Windows installed, such as Windows 7, 8, or 8.1 are
not officially supported. The recommended method to convert these disks is to upgrade the operating system to
Windows 10 first, then perform the MBR to GPT conversion.
IMPORTANT
After the disk has been converted to GPT partition style, the firmware must be reconfigured to boot in UEFI mode.
Make sure that your device supports UEFI before attempting to convert the disk.
Disk Prerequisites
Before any change to the disk is made, MBR2GPT validates the layout and geometry of the selected disk to
ensure that:
The disk is currently using MBR
There is enough space not occupied by partitions to store the primary and secondary GPTs:
16KB + 2 sectors at the front of the disk
16KB + 1 sector at the end of the disk
There are at most 3 primary partitions in the MBR partition table
One of the partitions is set as active and is the system partition
The disk does not have any extended/logical partition
The BCD store on the system partition contains a default OS entry pointing to an OS partition
The volume IDs can be retrieved for each volume which has a drive letter assigned
All partitions on the disk are of MBR types recognized by Windows or has a mapping specified using the
/map command-line option
If any of these checks fails, the conversion will not proceed and an error will be returned.
Syntax
MBR2GPT /validate|convert [/disk:<diskNumber>] [/logs:<logDirectory>] [/map:<source>=<destination>] [/allowFullOS]
Options
O P T IO N DESC RIP T IO N
Examples
Validation example
In the following example, disk 0 is validated for conversion. Errors and warnings are logged to the default
location, %windir% .
Conversion example
In the following example:
1. Using DiskPart, the current disk partition layout is displayed prior to conversion - three partitions are present
on the MBR disk (disk 0): a system reserved partition, a Windows partition, and a recovery partition. A DVD-
ROM is also present as volume 0.
2. The OS volume is selected, partitions are listed, and partition details are displayed for the OS partition. The
MBR partition type is 07 corresponding to the installable file system (IFS) type.
3. The MBR2GPT tool is used to convert disk 0.
4. The DiskPart tool displays that disk 0 is now using the GPT format.
5. The new disk layout is displayed - four partitions are present on the GPT disk: three are identical to the
previous partitions and one is the new EFI system partition (volume 3).
6. The OS volume is selected again, and detail displays that it has been converted to the GPT partition type of
ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 corresponding to the PARTITION_BASIC_DATA_GUID
type.
As noted in the output from the MBR2GPT tool, you must make changes to the computer firmware so that
the new EFI system partition will boot properly.
X:\>DiskPart
Partition 2
Type : 07
Hidden: No
Hidden: No
Active: No
Offset in Bytes: 524288000
DISKPART> exit
Leaving DiskPart...
X:\>DiskPart
Partition 2
Type : ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Hidden : No
Required: No
Attrib : 0000000000000000
Offset in Bytes: 524288000
Specifications
Disk conversion workflow
The following steps illustrate high-level phases of the MBR-to-GPT conversion process:
1. Disk validation is performed.
2. The disk is repartitioned to create an EFI system partition (ESP) if one does not already exist.
3. UEFI boot files are installed to the ESP.
4. GPT metadata and layout information is applied.
5. The boot configuration data (BCD) store is updated.
6. Drive letter assignments are restored.
Creating an EFI system partition
For Windows to remain bootable after the conversion, an EFI system partition (ESP) must be in place. MBR2GPT
creates the ESP using the following rules:
1. The existing MBR system partition is reused if it meets these requirements:
a. It is not also the OS or Windows Recovery Environment partition.
b. It is at least 100MB (or 260MB for 4K sector size disks) in size.
c. It is less than or equal to 1GB in size. This is a safety precaution to ensure it is not a data partition.
d. The conversion is not being performed from the full OS. In this case, the existing MBR system partition is
in use and cannot be repurposed.
2. If the existing MBR system partition cannot be reused, a new ESP is created by shrinking the OS partition.
This new partition has a size of 100MB (or 260MB for 4K sector size disks) and is formatted FAT32.
If the existing MBR system partition is not reused for the ESP, it is no longer used by the boot process after the
conversion. Other partitions are not modified.
IMPORTANT
If the existing MBR system partition is not reused for the ESP, it might be assigned a drive letter. If you do not wish to use
this small partition, you must manually hide the drive letter.
Troubleshooting
The tool will display status information in its output. Both validation and conversion are clear if any errors are
encountered. For example, if one or more partitions do not translate properly, this is displayed and the
conversion not performed. To view more detail about any errors that are encountered, see the associated log
files.
Logs
Four log files are created by the MBR2GPT tool:
diagerr.xml
diagwrn.xml
setupact.log
setuperr.log
These files contain errors and warnings encountered during disk validation and conversion. Information in these
files can be helpful in diagnosing problems with the tool. The setupact.log and setuperr.log files will have the
most detailed information about disk layouts, processes, and other information pertaining to disk validation and
conversion. Note: The setupact*.log files are different than the Windows Setup files that are found in the
%Windir%\Panther directory.
The default location for all these log files in Windows PE is %windir% .
Interactive help
To view a list of options available when using the tool, type mbr2gpt /?
The following text is displayed:
C:\> mbr2gpt /?
Converts a disk from MBR to GPT partitioning without modifying or deleting data on the disk.
Where:
/validate
- Validates that the selected disk can be converted
without performing the actual conversion.
/convert
- Validates that the selected disk can be converted
and performs the actual conversion.
/disk:<diskNumber>
- Specifies the disk number of the disk to be processed.
If not specified, the system disk is processed.
/logs:<logDirectory>
- Specifies the directory for logging. By default logs
are created in the %windir% directory.
/map:<source>=<destination>
- Specifies the GPT partition type to be used for a
given MBR partition type not recognized by Windows.
Multiple /map switches are allowed.
/allowFullOS
- Allows the tool to be used from the full Windows
environment. By default, this tool can only be used
from the Windows Preinstallation Environment.
Return codes
MBR2GPT has the following associated return codes:
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition Style
------ ------------- ------------- ------------ ----------------- ---------- ---------------
0 MTFDDAK256MAM-1K1 13050928F47C Healthy Online 238.47 GB MBR
1 ST1000DM003-1ER162 Z4Y3GD8F Healthy Online 931.51 GB GPT
You can also view the partition type of a disk by opening the Disk Management tool, right-clicking the disk
number, clicking Proper ties , and then clicking the Volumes tab. See the following example:
If Windows PowerShell and Disk Management are not available, such as when you are using Windows PE, you
can determine the partition type at a command prompt with the DiskPart tool. To determine the partition style
from a command line, type diskpar t and then type list disk . See the following example:
X:\>DiskPart
In this example, Disk 0 is formatted with the MBR partition style, and Disk 1 is formatted using GPT.
Known issue
MBR2GPT.exe cannot run in Windows PE
When you start a Windows 10, version 1903-based computer in the Windows Preinstallation Environment
(Windows PE), you encounter the following issues:
Issue 1 When you run the MBR2GPT.exe command, the process exits without converting the drive.
Issue 2 When you manually run the MBR2GPT.exe command in a Command Prompt window, there is no output
from the tool.
Issue 3 When MBR2GPT.exe runs inside an imaging process such as a Microsoft Endpoint Manager task
sequence, an MDT task sequence, or by using a script, you receive the following exit code:
0xC0000135/3221225781.
Cause
This issue occurs because in Windows 10, version 1903 and later versions, MBR2GPT.exe requires access to the
ReAgent.dll file. However, this dll file and its associated libraries are currently not included in the Windows PE
boot image for Windows 10, version 1903 and later.
Workaround
To fix this issue, mount the Windows PE image (WIM), copy the missing file from the Windows 10, version 1903
Assessment and Development Kit (ADK) source, and then commit the changes to the WIM. To do this, follow
these steps:
1. Mount the Windows PE WIM to a path (for example, C:\WinPE_Mount). For more information about how
to mount WIM files, see Mount an image.
2. Copy the ReAgent files and the ReAgent localization files from the Window 10, version 1903 ADK source
folder to the mounted WIM.
For example, if the ADK is installed to the default location of C:\Program Files (x86)\Windows Kits\10 and
the Windows PE image is mounted to C:\WinPE_Mount, run the following commands from an elevated
Command Prompt window:
NOTE
You can access the ReAgent files if you have installed the User State Migration Tool (USMT) as a feature while
installing Windows Assessment and Deployment Kit.
Command 1:
copy "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows
Setup\amd64\Sources\ReAgent*.*" "C:\WinPE_Mount\Windows\System32"
NOTE
If you aren't using an English version of Windows, replace "En-Us" in the path with the appropriate string that
represents the system language.
3. After you copy all the files, commit the changes and unmount the Windows PE WIM. MBR2GPT.exe now
functions as expected in Windows PE. For information about how to unmount WIM files while
committing changes, see Unmounting an image.
Related topics
Windows 10 Enterprise system requirements
Windows 10 Specifications
Windows 10 IT pro forums
Configure a PXE server to load Windows PE
7/28/2021 • 5 minutes to read • Edit Online
Applies to
Windows 10
This walkthrough describes how to configure a PXE server to load Windows PE by booting a client computer
from the network. Using the Windows PE tools and a Windows 10 image file, you can install Windows 10 from
the network.
Prerequisites
A deployment computer: A computer with the Windows Assessment and Deployment Kit (Windows ADK)
and the Windows PE add-on with ADK installed.
A DHCP server: A DHCP server or DHCP proxy configured to respond to PXE client requests is required.
A PXE server: A server running the TFTP service that can host Windows PE boot files that the client will
download.
A file server: A server hosting a network file share.
All four of the roles specified above can be hosted on the same computer or each can be on a separate
computer.
For example, the following command copies amd64 architecture files to the C:\winpe_amd64
directory:
The script creates the destination directory structure and copies all the necessary files for that
architecture. In the previous example, the following directories are created:
C:\winpe_amd64
C:\winpe_amd64\fwfiles
C:\winpe_amd64\media
C:\winpe_amd64\mount
4. Mount the base Windows PE image (winpe.wim) to the \mount directory using the DISM tool. Mounting
an image file unpacks the file contents into a folder so that you can make changes directly or by using
tools such as DISM. See the following example.
Verify that "The operation completed successfully" is displayed. Note: To view currently mounted images,
type dism /get-MountedWiminfo .
5. Map a network share to the root TFTP directory on the PXE/TFTP server and create a \Boot folder. Consult
your TFTP server documentation to determine the root TFTP server directory, then enable sharing for this
directory, and verify it can be accessed on the network. In the following example, the PXE server name is
PXE-1 and the TFTP root directory is shared using a network path of \\PXE-1\TFTPRoot :
6. Copy the PXE boot files from the mounted directory to the \boot folder. For example:
Copy this GUID for use in the next set of commands. In each command shown, replace "GUID1" with your
GUID.
3. Create a new boot application entry for the Windows PE image:
4. Configure BOOTMGR settings (remember to replace GUID1 in the third command with your GUID):
Your PXE/TFTP server is now configured. You can view the BCD settings that have been configured using the
command bcdedit /store <BCD file location> /enum all. See the following example. Note: Your GUID will be
different than the one shown below.
C:\>bcdedit /store C:\BCD /enum all
Windows Boot Manager
--------------------
identifier {bootmgr}
description boot manager
displayorder {a4f89c62-2142-11e6-80b6-00155da04110}
timeout 30
TIP
If you start the PXE boot process, but receive the error that "The boot configuration data for your PC is missing or
contains errors" then verify that \boot directory is installed under the correct TFTP server root directory. In the example
used here the name of this directory is TFTPRoot, but your TFTP server might be different.
The following assumes that you have configured DHCP option 67 (Bootfile Name) to "boot\PXEboot.n12"
which enables direct boot to PXE with no user interaction. For more information about DHCP options for
network boot, see Managing Network Boot Programs.
1. A client is directed by DHCP options 066 and 067 to download boot\PXEboot.n12 from the TFTP server.
2. PXEboot.n12 immediately begins a network boot.
3. The client downloads boot\bootmgr.exe and the boot\BCD file from the TFTP server. Note: The BCD store
must reside in the \boot directory on the TFTP server and must be named BCD.
4. Bootmgr.exe reads the BCD operating system entries and downloads boot\boot.sdi and the Windows PE
image (boot\boot.wim). Optional files that can also be downloaded include true type fonts
(boot\Fonts\wgl4_boot.ttf) and the hibernation state file (\hiberfil.sys) if these files are present.
5. Bootmgr.exe starts Windows PE by calling winload.exe within the Windows PE image.
6. Windows PE loads, a command prompt opens and wpeinit.exe is run to initialize Windows PE.
7. The Windows PE client provides access to tools like imagex, diskpart, and bcdboot using the Windows PE
command prompt. Using these tools together with a Windows 10 image file, the destination computer can
be formatted properly to load a full Windows 10 operating system.
See Also
Concepts
Windows PE Walkthroughs
Windows ADK for Windows 10 scenarios for IT Pros
3/26/2021 • 2 minutes to read • Edit Online
The Windows Assessment and Deployment Kit (Windows ADK) contains tools that can be used by IT Pros to
deploy Windows. For an overview of what's new in the Windows ADK for Windows 10, see What's new in kits
and tools.
In previous releases of Windows, the Windows ADK docs were published on both TechNet and the MSDN
Hardware Dev Center. Starting with the Windows 10 release, Windows ADK documentation is available on the
MSDN Hardware Dev Center. For the Windows 10 ADK reference content, see Desktop manufacturing.
Here are some key scenarios that will help you find the content on the MSDN Hardware Dev Center.
Create a Windows image using command-line tools
DISM is used to mount and service Windows images.
Here are some things you can do with DISM:
Mount an offline image
Add drivers to an offline image
Enable or disable Windows features
Add or remove packages
Add language packs
Add Universal Windows apps
Upgrade the Windows edition
Sysprep prepares a Windows installation for imaging and allows you to capture a customized installation.
Here are some things you can do with Sysprep:
Generalize a Windows installation
Customize the default user profile
Use answer files
Windows PE (WinPE) is a small operating system used to boot a computer that does not have an operating
system. You can boot to Windows PE and then install a new operating system, recover data, or repair an existing
operating system.
Here are ways you can create a WinPE image:
Create a bootable USB drive
Create a Boot CD, DVD, ISO, or VHD
Windows Recovery Environment (Windows RE) is a recovery environment that can repair common operating
system problems.
Here are some things you can do with Windows RE:
Customize Windows RE
Push-button reset
Windows System Image Manager (Windows SIM) helps you create answer files that change Windows settings
and run scripts during installation.
Here are some things you can do with Windows SIM:
Create answer file
Add a driver path to an answer file
Add a package to an answer file
Add a custom command to an answer file
For a list of settings you can change, see Unattended Windows Setup Reference on the MSDN Hardware Dev
Center.
Create a Windows image using Windows ICD
Introduced in Windows 10, Windows Imaging and Configuration Designer (ICD) streamlines the customizing
and provisioning of a Windows 10 for desktop editions (Home, Pro, Enterprise, and Education), Windows 10
Mobile, or Windows 10 IoT Core (IoT Core) image.
Here are some things you can do with Windows ICD:
Build and apply a provisioning package
Export a provisioning package
Build and deploy an image for Windows 10 for desktop editions
IT Pro Windows deployment tools
There are also a few tools included in the Windows ADK that are specific to IT Pros and this documentation is
available on TechNet:
Volume Activation Management Tool (VAMT) Technical Reference
User State Migration Tool (USMT) Technical Reference
Deploy Windows To Go in your organization
3/26/2021 • 37 minutes to read • Edit Online
Applies to
Windows 10
This topic helps you to deploy Windows To Go in your organization. Before you begin deployment, make sure
that you have reviewed the topics Windows To Go: feature overview and Prepare your organization for
Windows To Go to ensure that you have the correct hardware and are prepared to complete the deployment.
You can then use the steps in this topic to start your Windows To Go deployment.
IMPORTANT
Windows To Go is removed in Windows 10, version 2004 and later operating systems. The feature does not support
feature updates and therefore does not enable you to stay current. It also requires a specific type of USB that is no longer
supported by many OEMs.
Deployment tips
The following is a list of items that you should be aware of before you start the deployment process:
Only use recommended USB drives for Windows To Go. Use of other drives is not supported. Check the
list at Windows To Go: feature overview for the latest USB drives certified for use as Windows To Go
drives.
After you provision a new workspace, always eject a Windows To Go drive using the Safely Remove
Hardware and Eject Media control that can be found in the notification area or in Windows Explorer.
Removing the drive from the USB port without ejecting it first can cause the drive to become corrupted.
When running a Windows To Go workspace, always shutdown the workspace before unplugging the
drive.
System Center 2012 Configuration Manager SP1 and later includes support for user self-provisioning of
Windows To Go drives. You can download Configuration Manager for evaluation from the Microsoft
TechNet Evaluation Center. For more information on this deployment option, see How to Provision
Windows To Go in Configuration Manager.
If you are planning on using a USB drive duplicator to duplicate Windows To Go drives, do not configure
offline domain join or BitLocker on the drive.
WARNING
If you plan to use the generic Windows To Go drive as the master drive in a USB duplicator, the drive should not be
booted. If the drive has been booted inadvertently it should be reprovisioned prior to duplication.
WARNING
The preferred method to create a single Windows To Go drive is to use the Windows To Go Creator Wizard included in
Windows 10 Enterprise and Windows 10 Education.
NOTE
For more information about .wim files, see Windows System Image Manager (Windows SIM) Technical Reference.
For more information about using sysprep, see Sysprep Overview.
4. Using Cortana, search for Windows To Go and then press Enter . If the User Account Control dialog
box appears, confirm that the action it displays is what you want, and then click Yes . The Windows To
Go Creator Wizard opens.
5. On the Choose the drive you want to use page select the drive that represents the USB drive you
inserted previously, then click Next.
6. On the Choose a Windows image page, click Add Search Location and then navigate to the .wim file
location and click select folder. The wizard will display the installable images present in the folder; select
the Windows 10 Enterprise or Windows 10 Education image you wish to use and then click Next .
7. (Optional) On the Set a BitLocker password (optional) page, you can select Use BitLocker with my
Windows To Go Workspace to encrypt your Windows To Go drive. If you do not wish to encrypt the
drive at this time, click Skip . If you decide you want to add BitLocker protection later, see Enable BitLocker
protection for your Windows To Go drive for instructions. r
WARNING
If you plan to use a USB-Duplicator to create multiple Windows To Go drives, do not enable BitLocker. Drives
protected with BitLocker should not be duplicated.
>[!IMPORTANT]
>The BitLocker recovery password will be saved in the documents library of the computer used to create
the workspace automatically. If your organization is using Active Directory Domain Services (AD DS) to store
recovery passwords it will also be saved in AD DS under the computer account of the computer used to create
the workspace. This password will be used only if you need to recover access to the drive because the
BitLocker password specified in the previous step is not available, such as if a password is lost or
forgotten. For more information about BitLocker and AD DS, see [Active Directory Domain Services
considerations](/previous-versions/windows/it-pro/windows-8.1-and-8/jj592683(v=ws.11)).
8. Verify that the USB drive inserted is the one you want to provision for Windows To Go and then click
Create to start the Windows To Go workspace creation process.
WARNING
The USB drive identified will be reformatted as part of the Windows To Go provisioning process and any data on
the drive will be erased.
9. Wait for the creation process to complete, which can take 20 to 30 minutes. A completion page will be
displayed that tells you when your Windows To Go workspace is ready to use. From the completion page
you can configure the Windows To Go startup options to configure the current computer as a Windows
To Go host computer.
Your Windows To Go workspace is now ready to be started. You can now prepare a host computer using the
Windows To Go startup options and boot your Windows To Go drive.
Windows PowerShell equivalent commands
The following Windows PowerShell cmdlet or cmdlets perform the same function as the preceding procedure.
Enter each cmdlet on a single line, even though they may appear word-wrapped across several lines here
because of formatting constraints. This procedure can only be used on PCs that are running Windows 10. Before
starting, ensure that only the USB drive that you want to provision as a Windows To Go drive is connected to the
PC.
1. Using Cortana, search for powershell , right-click Windows PowerShell , and then select Run as
administrator .
2. In the Windows PowerShell session type the following commands to partition a master boot record
(MBR) disk for use with a FAT32 system partition and an NTFS-formatted operating system partition. This
disk layout can support computers that use either UEFI or BIOS firmware:
# The following command will set $Disk to all USB drives with >20 GB of storage
$Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }
#Clear the disk. This will delete any data on the disk. (and will fail if the disk is not yet
initialized. If that happens, simply continue with 'New-Partition…) Validate that this is the correct
disk that you want to completely erase.
#
# To skip the confirmation prompt, append –confirm:$False
Clear-Disk –InputObject $Disk[0] -RemoveData
# This command creates the Windows volume using the maximum space available on the drive. The Windows
To Go drive should not be used for other file storage.
$OSPartition = New-Partition –InputObject $Disk[0] -UseMaximumSize
Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS `
-Partition $OSPartition
# This command assigns drive letters to the new drive, the drive letters chosen should not already be
in use.
Set-Partition -InputObject $SystemPartition -NewDriveLetter "S"
Set-Partition -InputObject $OSPartition -NewDriveLetter "W"
# This command sets the NODEFAULTDRIVELETTER flag on the partition which prevents drive letters being
assigned to either partition when inserted into a different computer.
Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE
3. Next you need to apply the operating system image that you want to use with Windows To Go to the
operating system partition you just created on the disk (this may take 30 minutes or longer, depending
on the size of the image and the speed of your USB connection). The following command shows how this
can be accomplished using the Deployment Image Servicing and Management command-line tool
(DISM):
TIP
The index number must be set correctly to a valid Enterprise image in the .WIM file.
4. Now use the bcdboot command line tool to move the necessary boot components to the system
partition on the disk. This helps ensure that the boot components, operating system versions, and
architectures match. The /f ALL parameter indicates that boot components for UEFI and BIOS should be
placed on the system partition of the disk. The following example illustrates this step:
```
W:\Windows\System32\bcdboot W:\Windows /f ALL /s S:
```
5. Apply SAN policy—OFFLINE_INTERNAL - "4" to prevent the operating system from automatically
bringing online any internally connected disk. This is done by creating and saving a san_policy.xml file
on the disk. The following example illustrates this step:
6. Place the san_policy.xml file created in the previous step into the root directory of the Windows
partition on the Windows To Go drive (W: from the previous examples) and run the following command:
7. Create an answer file (unattend.xml) that disables the use of Windows Recovery Environment with
Windows To Go. You can use the following code sample to create a new answer file or you can paste it
into an existing answer file:
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="oobeSystem">
<component name="Microsoft-Windows-WinRE-RecoveryAgent"
processorArchitecture="x86"
publicKeyToken="31bf3856ad364e35" language="neutral"
versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UninstallWindowsRE>true</UninstallWindowsRE>
</component>
<component name="Microsoft-Windows-WinRE-RecoveryAgent"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35" language="neutral"
versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UninstallWindowsRE>true</UninstallWindowsRE>
</component>
</settings>
</unattend>
After the answer file has been saved, copy unattend.xml into the sysprep folder on the Windows To Go
drive (for example, W:\Windows\System32\sysprep)
IMPORTANT
Setup unattend files are processed based on their location. Setup will place a temporary unattend file into the
%systemroot%\panther folder which is the first location that setup will check for installation information. You
should make sure that folder does not contain a previous version of an unattend.xml file to ensure that the one
you just created is used.
If you do not wish to boot your Windows To Go device on this computer and want to remove it to boot it
on another PC, be sure to use the Safely Remove Hardware and Eject Media option to safely
disconnect the drive before physically removing it from the PC.
Your Windows To Go workspace is now ready to be started. You can now prepare a host computer using the
Windows To Go startup options to test your workspace configuration, configure the workspace for offline
domain join, or enable BitLocker protection for your Windows To Go drive.
To prepare a host computer
Computers running Windows 8 and later can be configured as host computers that use Windows To Go
automatically whenever a Windows To Go workspace is available at startup. When the Windows To Go startup
options are enabled on a host computer, Windows will divert startup to the Windows To Go drive whenever it is
attached to the computer. This makes it easy to switch from using the host computer to using the Windows To
Go workspace.
TIP
If you will be using a PC running Windows 7 as your host computer, see Tips for configuring your BIOS settings to work
with Windows To Go for information to help you prepare the host computer.
If you want to use the Windows To Go workspace, simply shut down the computer, plug in the Windows To Go
drive, and turn on the computer. To use the host computer, shut down the Windows To Go workspace, unplug the
Windows To Go drive, and turn on the computer.
To set the Windows To Go Startup options for host computers running Windows 10:
1. Using Cortana, search for Windows To Go star tup options and then press Enter .
2. In the Windows To Go Star tup Options dialog box, select Yes , and then click Save Changes to
configure the computer to boot from USB
For host computers running Windows 8 or Windows 8.1:
1. Press Windows logo key+W , search for Windows To Go star tup options , and then press Enter .
2. In the Windows To Go Star tup Options dialog box, select Yes , and then click Save Changes to
configure the computer to boot from USB.
You can configure your organization's computers to automatically start from the USB drive by enabling the
following Group Policy setting:
\\Computer Configuration\Administrative Templates\Windows Components\Por table Operating
System\Windows To Go Default Star tup Options
After this policy setting is enabled, automatic starting of a Windows To Go workspace will be attempted when a
USB drive is connected to the computer when it is started. Users will not be able to use the Windows To Go
Startup Options to change this behavior. If you disable this policy setting, booting to Windows To Go when a
USB drive is connected will not occur unless a user configures the option manually in the firmware. If you do not
configure this policy setting, users who are members of the Administrators group can enable or disable booting
from a USB drive using the Windows To Go Startup Options.
Your host computer is now ready to boot directly into Windows To Go workspace when it is inserted prior to
starting the computer. Optionally you can perform Configure Windows To Go workspace for offline domain join
and Enable BitLocker protection for your Windows To Go drive.
Booting your Windows To Go workspace
After you have configured your host PC to boot from USB, you can use the following procedure to boot your
Windows To Go workspace:
To boot your workspace
1. Make sure that the host PC is not in a sleep state. If the computer is in a sleep state, either shut it down or
hibernate it.
2. Insert the Windows To Go USB drive directly into a USB 3.0 or USB 2.0 port on the PC. Do not use a USB
hub or extender.
3. Turn on the PC. If your Windows To Go drive is protected with BitLocker you will be asked to type the
password, otherwise the workspace will boot directly into the Windows To Go workspace.
NOTE
The /cer ttemplate parameter supports the use of certificate templates for distributing certificates for
DirectAccess, if your organization is not using certificate templates you can omit this parameter. Additionally, if are
using djoin.exe with Windows Server 2008-based Domain Controllers, append the /downlevel switch during
provisioning. For more information see the Offline Domain Join Step-by-Step guide.
$Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }
#Clear the disk. This will delete any data on the disk. (and will fail if the disk is not yet
initialized. If that happens, simply continue with 'New-Partition…) Validate that this is the correct
disk that you want to completely erase.
#
# To skip the confirmation prompt, append –confirm:$False
Clear-Disk –InputObject $Disk[0] -RemoveData
# This command creates the Windows volume using the maximum space available on the drive. The Windows
To Go drive should not be used for other file storage.
$OSPartition = New-Partition –InputObject $Disk[0] -UseMaximumSize
Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS `
-Partition $OSPartition
# This command assigns drive letters to the new drive, the drive letters chosen should not already be
in use.
Set-Partition -InputObject $SystemPartition -NewDriveLetter "S"
Set-Partition -InputObject $OSPartition -NewDriveLetter "W"
# This command toggles the NODEFAULTDRIVELETTER flag on the partition which prevents drive letters
being assigned to either partition when inserted into a different computer.
Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE
5. Next you need to apply the operating system image that you want to use with Windows To Go to the
operating system partition you just created on the disk (this may take 30 minutes or longer, depending
on the size of the image and the speed of your USB connection). The following command shows how this
can be accomplished using the Deployment Image Servicing and Management command-line tool
(DISM):
>[!TIP]
>The index number must be set correctly to a valid Enterprise image in the .WIM file.
```
#The WIM file must contain a sysprep generalized image.
dism /apply-image /imagefile:n:\imagefolder\deploymentimages\mywtgimage.wim /index:1 /applydir:W:\
```
7. Next, we will need to edit the unattend.xml file to configure the first run (OOBE) settings. In this example
we are hiding the Microsoft Software License Terms (EULA) page, configuring automatic updates to install
important and recommended updates automatically, and identifying this workspace as part of a private
office network. You can use other OOBE settings that you have configured for your organization if
desired. For more information about the OOBE settings, see OOBE:
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="oobeSystem">
<component name="Microsoft-Windows-WinRE-RecoveryAgent"
processorArchitecture="x86"
publicKeyToken="31bf3856ad364e35" language="neutral"
versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UninstallWindowsRE>true</UninstallWindowsRE>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<ProtectYourPC>1</ProtectYourPC>
<NetworkLocation>Work</NetworkLocation>
</OOBE>
</component>
<component name="Microsoft-Windows-WinRE-RecoveryAgent"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35" language="neutral"
versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UninstallWindowsRE>true</UninstallWindowsRE>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<ProtectYourPC>1</ProtectYourPC>
<NetworkLocation>Work</NetworkLocation>
</OOBE>
</component>
</settings>
</unattend>
NOTE
Depending on your DirectAccess configuration you might be asked to insert your smart card to log on to the
domain.
You should now be able to access your organization's network resources and work from your Windows To Go
workspace as you would normally work from your standard desktop computer on premises.
Enable BitLocker protection for your Windows To Go drive
Enabling BitLocker on your Windows To Go drive will help ensure that your data is protected from unauthorized
use and that if your Windows To Go drive is lost or stolen it will not be easy for an unauthorized person to
obtain confidential data or use the workspace to gain access to protected resources in your organization. When
BitLocker is enabled, each time you boot your Windows To Go drive, you will be asked to provide the BitLocker
password to unlock the drive. The following procedure provides the steps for enabling BitLocker on your
Windows To Go drive:
Prerequisites for enabling BitLocker scenario
A Windows To Go drive that can be successfully provisioned.
A computer running Windows 8 configured as a Windows To Go host computer
Review the following Group Policy settings for BitLocker Drive Encryption and modify the configuration
as necessary:
\Windows Components\BitLocker Drive Encr yption\Operating System Drives\Require
additional authentication at star tup . This policy allows the use of a password key protector with an
operating system drive; this policy must be enabled to configure BitLocker from within the Windows To
Go workspace. This policy setting allows you to configure whether BitLocker requires additional
authentication each time the computer starts and whether you are using BitLocker with or without a
Trusted Platform Module (TPM). You must enable this setting and select the Allow BitLocker without a
compatible TPM check box and then enable the Configure use of passwords for operating
system drives setting.
\Windows Components\BitLocker Drive Encr yption\Operating System Drives\Configure use
of passwords for operating system drives . This policy setting enables passwords to be used to
unlock BitLocker-protected operating system drives and provides the means to configure complexity and
length requirements on passwords for Windows To Go workspaces. For the complexity requirement
setting to be effective the Group Policy setting Password must meet complexity requirements
located in Computer Configuration\Windows Settings\Security Settings\Account
Policies\Password Policy\ must be also enabled.
\Windows Components\BitLocker Drive Encr yption\Operating System Drives\Enable use of
BitLocker authentication requiring preboot keyboard input on slates . This policy setting allows
users to enable authentication options that require user input from the preboot environment even if the
platform indicates a lack of preboot input capability. If this setting is not enabled, passwords cannot be
used to unlock BitLocker-protected operating system drives.
You can choose to enable BitLocker protection on Windows To Go drives before distributing them to users as
part of your provisioning process or you can allow your end-users to apply BitLocker protection to them after
they have taken possession of the drive. A step-by-step procedure is provided for both scenarios.
Enabling BitLocker during provisioning ensures that your operating system image is always protected by
BitLocker. When enabling BitLocker during the provisioning process you can significantly reduce the time
required for encrypting the drive by enabling BitLocker after configuring the disk and just prior to applying the
image. If you use this method, you will need to give users their BitLocker password when you give then their
Windows To Go workspace. Also, you should instruct your users to boot their workspace and change their
BitLocker password as soon as possible (this can be done with standard user privileges).
Enabling BitLocker after distribution requires that your users turn on BitLocker. This means that your Windows
To Go workspaces are unprotected until the user enables BitLocker. Administrative rights on the Windows To Go
workspace are required to enable BitLocker. For more information about BitLocker see the BitLocker Overview.
BitLocker recovery keys
BitLocker recovery keys are the keys that can be used to unlock a BitLocker protected drive if the standard
unlock method fails. It is recommended that your BitLocker recovery keys be backed up to Active Directory
Domain Services (AD DS). If you do not want to use AD DS to store recovery keys you can save recovery keys to
a file or print them. How BitLocker recovery keys are managed differs depending on when BitLocker is enabled.
If BitLocker protection is enabled during provisioning, the BitLocker recovery keys will be stored under
the computer account of the computer used for provisioning the drives. If backing up recovery keys to
AD DS is not used, the recovery keys will need to be printed or saved to a file for each drive. The IT
administrator must track which keys were assigned to which Windows To Go drive.
Warning
If BitLocker is enabled after distribution, the recovery key will be backed up to AD DS under the computer
account of the workspace. If backing up recovery keys to AD DS is not used, they can be printed or saved
to a file by the user. If the IT administrator wants a central record of recovery keys, a process by which the
user provides the key to the IT department must be put in place.
To enable BitLocker during provisioning
1. Start the host computer that is running Windows 8.
2. Insert your Windows To Go drive.
3. Launch an elevated Windows PowerShell prompt by right-clicking the Windows PowerShell shortcut in
the taskbar, and then clicking Run as Administrator .
4. Provision the Windows To Go drive using the following cmdlets:
NOTE
If you used the manual method for creating a workspace you should have already provisioned the Windows To Go
drive. If so, you can continue on to the next step.
# The following command will set $Disk to all USB drives with >20 GB of storage
$Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot
}
#Clear the disk. This will delete any data on the disk. (and will fail if the disk is not yet
initialized. If that happens, simply continue with 'New-Partition…) Validate that this is the correct
disk that you want to completely erase.
#
# To skip the confirmation prompt, append –confirm:$False
Clear-Disk –InputObject $Disk[0] -RemoveData
# This command creates the Windows volume using the maximum space available on the drive. The Windows
To Go drive should not be used for other file storage.
$OSPartition = New-Partition –InputObject $Disk[0] -UseMaximumSize
Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS `
-Partition $OSPartition
# This command assigns drive letters to the new drive, the drive letters chosen should not already be
in use.
Set-Partition -InputObject $SystemPartition -NewDriveLetter "S"
Set-Partition -InputObject $OSPartition -NewDriveLetter "W"
# This command toggles the NODEFAULTDRIVELETTER flag on the partition which prevents drive letters
being assigned to either partition when inserted into a different computer.
Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE
Next you need to apply the operating system image that you want to use with Windows To Go to the
operating system partition you just created on the disk (this may take 30 minutes or longer, depending
on the size of the image and the speed of your USB connection). The following command shows how this
can be accomplished using the Deployment Image Servicing and Management command-line tool
(DISM):
TIP
The index number must be set correctly to a valid Enterprise image in the .WIM file.
5. In the same PowerShell session use the following cmdlet to add a recovery key to the drive:
6. Next, use the following cmdlets to save the recovery key to a file:
#The BitLocker Recovery key is essential if for some reason you forget the BitLocker password
#This recovery key can also be backed up into Active Directory using manage-bde.exe or the
#PowerShell cmdlet Backup-BitLockerKeyProtector.
$RecoveryPassword = $BitlockerRecoveryProtector.KeyProtector.RecoveryPassword
$RecoveryPassword > WTG-Demo_Bitlocker_Recovery_Password.txt
7. Then, use the following cmdlets to add the password as a secure string. If you omit the password the
cmdlet will prompt you for the password before continuing the operation:
WARNING
To have BitLocker only encrypt used space on the disk append the parameter –UsedSpaceOnly to the
Enable-BitLocker cmdlet. As data is added to the drive BitLocker will encrypt additional space. Using this
parameter will speed up the preparation process as a smaller percentage of the disk will require encryption. If you
are in a time critical situation where you cannot wait for encryption to complete you can also safely remove the
Windows To Go drive during the encryption process. The next time the drive is inserted in a computer it will
request the BitLocker password. Once the password is supplied, the encryption process will continue. If you do
this, make sure your users know that BitLocker encryption is still in process and that they will be able to use the
workspace while the encryption completes in the background.
8. Copy the numerical recovery password and save it to a file in a safe location. The recovery password will
be required if the password is lost or forgotten.
WARNING
If the Choose how BitLocker-protected removable data drives can be recovered Group Policy setting
has been configured to back up recovery information to Active Directory Domain Services, the recovery
information for the drive will be stored under the account of the host computer used to apply the recovery key.
If you want to have the recovery information stored under the account of the Windows To Go workspace
you can turn BitLocker from within the Windows To Go workspace using the BitLocker Setup Wizard from
the BitLocker Control Panel item as described in To enable BitLocker after distribution.
9. Safely remove the Windows To Go drive.
The Windows To Go drives are now ready to be distributed to users and are protected by BitLocker. When you
distribute the drives, make sure the users know the following:
Initial BitLocker password that they will need to boot the drives.
Current encryption status.
Instructions to change the BitLocker password after the initial boot.
Instructions for how to retrieve the recovery password if necessary. This may be a help desk process, an
automated password retrieval site, or a person to contact.
NOTE
If you have not configured the Group Policy setting \Windows Components\BitLocker Drive
Encr yption\Operating System Drives\Require additional authentication at star tup to specify Allow
BitLocker without a compatible TPM you will not be able to enable BitLocker from within the Windows To Go
workspace.
Set-ExecutionPolicy RemoteSigned
The RemoteSigned execution policy will prevent unsigned scripts from the internet from running on the
computer, but will allow locally created scripts to run. For more information on execution policies, see Set-
ExecutionPolicy.
TIP
To get online help for any Windows PowerShell cmdlet, whether or not it is installed locally type the following
cmdlet, replacing <cmdlet-name> with the name of the cmdlet you want to see the help for:
Get-Help <cmdlet-name> -Online
This command causes Windows PowerShell to open the online version of the help topic in your default Internet
browser.
<#
.SYNOPSIS
Windows To Go multiple drive provisioning sample script.
.DESCRIPTION
This sample script will provision one or more Windows To Go drives, configure offline domain join (using
random machine names) and provides an option for BitLocker encryption. To provide a seamless first boot
experience, an unattend file is created that will set the first run (OOBE) settings to defaults. To improve
performance of the script, copy your install image to a local location on the computer used for provisioning
the drives.
.EXAMPLE
.\WTG_MultiProvision.ps1 -InstallWIMPath c:\companyImages\amd64_enterprise.wim
provision drives connected to your machine with the provided image.
#>
param (
[parameter(Mandatory=$true)]
[string]
#Path to install wim. If you have the full path to the wim or want to use a local file.
$InstallWIMPath,
[string]
#Domain to which to join the Windows To Go workspaces.
$DomainName
)
<#
In order to set BitLocker Group Policies for our offline WTG image we need to create a Registry.pol file
in the System32\GroupPolicy folder. This file requires binary editing, which is not possible in PowerShell
directly so we have some C# code that we can use to add a type in our PowerShell instance that will write
the data for us.
#>
$Source = @"
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text;
namespace MS.PolicyFileEditor
{
//The PolicyEntry represents the DWORD Registry Key/Value/Data entry that will
//be written into the file.
public class PolicyEntry
{
private List<byte> byteList;
public PolicyEntry(
string Key,
string Value,
uint data)
{
KeyName = Key;
ValueName = Value;
this.byteList = new List<byte>();
byte[] arrBytes = BitConverter.GetBytes(data);
if (BitConverter.IsLittleEndian == false) { Array.Reverse(arrBytes); }
this.byteList.AddRange(arrBytes);
}
~PolicyEntry()
{
this.byteList = null;
}
}
public PolicyFile()
{
this.entries = new Dictionary<string, PolicyEntry>(StringComparer.OrdinalIgnoreCase);
}
byte[] bytes;
fs.Write(semicolon, 0, 2);
bytes = UnicodeEncoding.Unicode.GetBytes(entry.ValueName);
fs.Write(bytes, 0, bytes.Length);
fs.Write(nullChar, 0, 2);
fs.Write(semicolon, 0, 2);
bytes = BitConverter.GetBytes(4);
if (BitConverter.IsLittleEndian == false) { Array.Reverse(bytes); }
fs.Write(bytes, 0, 4);
fs.Write(semicolon, 0, 2);
byte[] data = entry.DataBytes.ToArray();
bytes = BitConverter.GetBytes((uint)data.Length);
if (BitConverter.IsLittleEndian == false) { Array.Reverse(bytes); }
fs.Write(bytes, 0, 4);
fs.Write(semicolon, 0, 2);
fs.Write(data, 0, data.Length);
fs.Write(closeBracket, 0, 2);
}
fs.Close();
}
}
}
}
"@
########################################################################
#
# Helper Functions
#
Function CreateUnattendFile {
param (
[parameter(Mandatory=$true)]
[string]
$Arch
)
if ( Test-Path "WtgUnattend.xml" ) {
del .\WtgUnattend.xml
}
$unattendFile = New-Item "WtgUnattend.xml" -type File
$fileContent = @"
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" publicKeyToken="31bf3856ad364e35" language="neutral"
versionScope="nonSxS" processorArchitecture="$Arch"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance">
<OOBE>
<HideEULAPage>true</HideEULAPage>
<ProtectYourPC>1</ProtectYourPC>
<NetworkLocation>Work</NetworkLocation>
</OOBE>
</component>
<component name="Microsoft-Windows-International-Core" publicKeyToken="31bf3856ad364e35"
language="neutral" versionScope="nonSxS" processorArchitecture="$Arch">
<InputLocale>en-US</InputLocale>
<InputLocale>en-US</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UserLocale>en-US</UserLocale>
</component>
<component name="Microsoft-Windows-WinRE-RecoveryAgent" processorArchitecture="$Arch"
publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance">
<UninstallWindowsRE>true</UninstallWindowsRE>
</component>
</settings>
</unattend>
"@
Function CreateRegistryPolicyFile {
$saveFileLocaiton
}
########################################################################
if ( Test-Path $installWIMPath ){
write-output "Image: $installWIMPath"
}
else{
write-output "Unable to find image: $installWIMPath" "Exiting the script"
exit
}
$starttime = get-date
$Disks = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }
if ($Disks -eq $null)
{
Write-Output "No USB Disks found, exiting the script. Please check that you have a device connected."
exit
exit
}
#We want to make sure that all non-boot connected USB drives are online, writeable and cleaned.
#This command will erase all data from all USB drives larger than 20Gb connected to your machine
#To automate this step you can add: -confirm:$False
Clear-Disk –InputObject $Disks -RemoveData -erroraction SilentlyContinue
# Currently the provisioning script needs drive letters (for dism and bcdboot.exe) and the script is more
# reliable when the main process determines all of the free drives and provides them to the sub-processes.
# Use a drive index starting at 1, since we need 2 free drives to proceed. (system & operating system)
$driveLetters = 68..90 | ForEach-Object { "$([char]$_):" } |
Where-Object {
(new-object System.IO.DriveInfo $_).DriveType -eq 'noRootdirectory'
}
$driveIndex = 1
#For compatibility between UEFI and legacy BIOS we use MBR for the disk.
Initialize-Disk –InputObject $Disk -PartitionStyle MBR
#A short sleep between creating a new partition and formatting helps ensure the partition
#is ready before formatting.
$SystemPartition = New-Partition –InputObject $Disk -Size (350MB) -IsActive
Sleep 1
Format-Volume -Partition $SystemPartition -FileSystem FAT32 -NewFileSystemLabel "UFD-System" -
confirm:$False | Out-Null
#The No default drive letter prevents other computers from displaying contents of the drive when connected
as a Data drive.
Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE
Set-Partition -InputObject $SystemPartition -NewDriveLetter $SystemDriveLetter
Set-Partition -InputObject $OSPartition -NewDriveLetter $OSDriveLetter
#Create the directory for the Machine Registry Policy file, surpressing the output and any error
#and copy the pre-created Registry.pol file to that location.
write-output "Set BitLocker default policies for WindowsToGo"
md ${OSDriveLetter}:\windows\System32\GroupPolicy\Machine | out-null
copy $policyFilePath ${OSDriveLetter}:\windows\System32\GroupPolicy\Machine
#modify the registry of the image to set SanPolicy. This is also where you could set the default
#keyboard type for USB keyboards.
write-output "Modify SAN Policy"
reg load HKLM\PW-System ${OSDriveLetter}:\Windows\System32\config\SYSTEM > info.log
reg add HKLM\PW-System\ControlSet001\Services\Partmgr\Parameters /v SanPolicy /d 4 /t REG_DWORD
/f > info.log
reg unload HKLM\PW-System > info.log
#We're running bcdboot from the newly applied image so we know that the correct boot files for the
architecture and operating system are used.
#This will fail if we try to run an amd64 bcdboot.exe on x86.
cmd /c "$OSDriveLetter`:\Windows\system32\bcdboot $OSDriveLetter`:\Windows /f ALL /s
$SystemDriveLetter`:"
if (!$?){
write-output "BCDBOOT.exe failed, exiting script."
exit
}
<#
If a domain name was provided to the script, we will create a random computer name
and perform an offline domain join for the device. With this command we also suppress the
Add User OOBE screen.
#>
if ($DomainName)
{
#using get-random, we will create a random computer name for the drive.
$suffix = Get-Random
$computername = "wtg-" + $suffix
djoin /provision /domain $DomainName /savefile ${OSDriveLetter}:\tempBLOB.bin /reuse
/machine $computername
djoin /requestodj /loadfile ${OSDriveLetter}:\tempBLOB.bin /windowspath
${OSDriveLetter}:\windows > info.log
del ${OSDriveLetter}:\tempBLOB.bin
try
{
Write-VolumeCache -DriveLetter ${OSDriveLetter}
Write-Output "Disk is now ready to be removed."
}
catch [System.Management.Automation.CommandNotFoundException]
{
write-output "Flush Cache not supported, Be sure to safely remove the WTG device."
}
$finishtime = get-date
$elapsedTime = new-timespan $starttime $finishtime
write-output "Provsioning completed in: $elapsedTime (hh:mm:ss.000)"
write-output "" "Provisioning script complete."
Related topics
Windows To Go: feature overview
Windows 10 forums
Prepare your organization for Windows To Go
Deployment considerations for Windows To Go
Security and data protection considerations for Windows To Go
BitLocker overview
Windows To Go: feature overview
5/5/2021 • 7 minutes to read • Edit Online
Applies to
Windows 10
IMPORTANT
Windows To Go is removed in Windows 10, version 2004 and later operating systems. The feature does not support
feature updates and therefore does not enable you to stay current. It also requires a specific type of USB that is no longer
supported by many OEMs.
Windows To Go is a feature in Windows 10 Enterprise and Windows 10 Education that enables the creation of a
Windows To Go workspace that can be booted from a USB-connected external drive on PCs.
PCs that meet the Windows 7 or later certification requirements can run Windows 10 in a Windows To Go
workspace, regardless of the operating system running on the PC. Windows To Go workspaces can use the same
image enterprises use for their desktops and laptops and can be managed the same way. Windows To Go is not
intended to replace desktops, laptops or supplant other mobility offerings. Rather, it provides support for
efficient use of resources for alternative workplace scenarios. There are some additional considerations that you
should keep in mind before you start to use Windows To Go:
Differences between Windows To Go and a typical installation of Windows
Roaming with Windows To Go
Prepare for Windows To Go
Hardware considerations for Windows To Go
NOTE
Windows To Go is not supported on Windows RT.
IMPORTANT
Make sure you use the versions of the deployment tools provided for the version of Windows you are deploying. There
have been many enhancements made to support Windows To Go. Using versions of the deployment tools released for
earlier versions of Windows to provision a Windows To Go drive is not supported.
As you decide what to include in your Windows To Go image, be sure to consider the following questions:
Are there any drivers that you need to inject into the image?
How will data be stored and synchronized to appropriate locations from the USB device?
Are there any applications that are incompatible with Windows To Go roaming that should not be included in
the image?
What should be the architecture of the image - 32bit/64bit?
What remote connectivity solution should be supported in the image if Windows To Go is used outside the
corporate network?
For more information about designing and planning your Windows To Go deployment, see Prepare your
organization for Windows To Go.
WARNING
Using a USB drive that has not been certified is not supported.
IMPORTANT
You must use the Spyrus Deployment Suite for Windows To Go to provision the Spyrus Secure Portable
Workplace. For more information about the Spyrus Deployment Suite for Windows To Go please refer to
http://www.spyruswtg.com/.
TIP
This device contains an embedded smart card.
IT EM REQ UIREM EN T
Firmware USB boot enabled. (PCs certified for use with Windows 7
or later can be configured to boot directly from USB,
check with the hardware manufacturer if you are unsure
of the ability of your PC to boot from USB)
RAM 2 GB or greater
Checking for architectural compatibility between the host PC and the Windows To Go drive
In addition to the USB boot support in the BIOS, the Windows 10 image on your Windows To Go drive must be
compatible with the processor architecture and the firmware of the host PC as shown in the table below.
C O M PAT IB L E W IN DO W S TO GO IM A GE
H O ST P C F IRM WA RE T Y P E H O ST P C P RO C ESSO R A RC H IT EC T URE A RC H IT EC T URE
Additional resources
Windows 10 forums
Windows To Go Step by Step Wiki
Tips for configuring your BIOS settings to work with Windows To Go
Related topics
Deploy Windows To Go in your organization
Windows To Go: frequently asked questions
Prepare your organization for Windows To Go
Deployment considerations for Windows To Go
Security and data protection considerations for Windows To Go
Best practice recommendations for Windows To Go
Best practice recommendations for Windows To Go
5/5/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
IMPORTANT
Windows To Go is removed in Windows 10, version 2004 and later operating systems. The feature does not support
feature updates and therefore does not enable you to stay current. It also requires a specific type of USB that is no longer
supported by many OEMs.
The following are the best practice recommendations for using Windows To Go:
Always shut down Windows and wait for shutdown to complete before removing the Windows To Go drive.
Do not insert the Windows To Go drive into a running computer.
Do not boot the Windows To Go drive from a USB hub. Always insert the Windows To Go drive directly into a
port on the computer.
If available, use a USB 3.0 port with Windows To Go.
Do not install non-Microsoft core USB drivers on Windows To Go.
Suspend BitLocker on Windows host computers before changing the BIOS settings to boot from USB and
then resume BitLocker protection.
Additionally, we recommend that when you plan your deployment you should also plan a standard operating
procedure for answering questions about which USB drives can be used for Windows To Go and how to enable
booting from USB to assist your IT department or help desk in supporting users and work groups that want to
use Windows To Go. It may be very helpful for your organization to work with your hardware vendors to create
an IT standard for USB drives for use with Windows To Go, so that if groups within your organization want to
purchase drives they can quickly determine which ones they should obtain.
More information
Windows To Go: feature overview
Prepare your organization for Windows To Go
Deployment considerations for Windows To Go
Security and data protection considerations for Windows To Go
Windows To Go: frequently asked questions
Deployment considerations for Windows To Go
5/5/2021 • 14 minutes to read • Edit Online
Applies to
Windows 10
IMPORTANT
Windows To Go is removed in Windows 10, version 2004 and later operating systems. The feature does not support
feature updates and therefore does not enable you to stay current. It also requires a specific type of USB that is no longer
supported by many OEMs.
From the start, Windows To Go was designed to minimize differences between the user experience of working
on a laptop and Windows To Go booted from a USB drive. Given that Windows To Go was designed as an
enterprise solution, extra consideration was given to the deployment workflows that enterprises already have in
place. Additionally, there has been a focus on minimizing the number of differences in deployment between
Windows To Go workspaces and laptop PCs.
NOTE
Windows To Go does not support operating system upgrades. Windows To Go is designed as a feature that is managed
centrally. IT departments that plan to transition from one operating system version to a later version will need to
incorporate re-imaging their existing Windows To Go drives as part of their upgrade deployment process.
The following sections discuss the boot experience, deployment methods, and tools that you can use with
Windows To Go.
Initial boot experiences
Image deployment and drive provisioning considerations
Application installation and domain join
Management of Windows To Go using Group Policy
Supporting booting from USB
Updating firmware
Configure Windows To Go startup options
Change firmware settings
When the Windows To Go workspace is going to be used first on an off-premises computer, such as one at the
employee's home, then the IT professional preparing the Windows To Go drives should configure the drive to be
able to connect to organizational resources and to maintain the security of the workspace. In this situation, the
Windows To Go workspace needs to be configured for offline domain join and BitLocker needs to be enabled
before the workspace has been initialized.
TIP
Applying BitLocker Drive Encryption to the drives before provisioning is a much faster process than encrypting the drives
after data has already been stored on them due to a new feature called used-disk space only encryption. For more
information, see What's New in BitLocker.
DirectAccess can be used to ensure that the user can log in with their domain credentials without needing a local
account. For instructions on setting up a DirectAccess solution, for a small pilot deployment see Deploy a Single
Remote Access Server using the Getting Started Wizard for a larger scale deployment, see Deploy Remote
Access in an Enterprise. If you do not want to use DirectAccess as an alternative user could log on using a local
user account on the Windows To Go workspace and then use a virtual private network for remote access to your
organizational network.
Image deployment and drive provisioning considerations
The Image Deployment process can be accomplished either by a centralized IT process for your organization or
by individual users creating their own Windows To Go workspaces. You must have local Administrator access
and access to a Windows 10 Enterprise or Windows 10 Education image to create a Windows To Go workspace,
or you must be using System Center 2012 Configuration Manager Service Pack 1 or later to distribute Windows
To Go workspaces to users. The image deployment process takes a blank USB drive and a Windows 10
Enterprise image (WIM) and turns it into a Windows To Go drive.
The simplest way to provision a Windows To Go drive is to use the Windows To Go Creator. After a single
Windows To Go workspace has been created, it can be duplicated as many times as necessary using widely
available USB duplicator products as long as the device has not been booted. After the Windows To Go drive is
initialized, it should not be duplicated. Alternatively, Windows To Go Workspace Creator can be run multiple
times to create multiple Windows To Go drives.
TIP
When you create your Windows To Go image use sysprep /generalize, just as you do when you deploy Windows 10 to a
standard PC. In fact, if appropriate, use the same image for both deployments.
Driver considerations
Windows includes most of the drivers that you will need to support a wide variety of host computers. However,
you will occasionally need to download drivers from Windows Update to take advantage of the full functionality
of a device. If you are using Windows To Go on a set of known host computers, you can add any additional
drivers to the image used on Windows To Go to make Windows To Go drives more quickly usable by your
employees. Especially ensure that network drivers are available so that the user can connect to Windows Update
to get additional drivers if necessary.
Wi-Fi network adapter drivers are one of the most important drivers to make sure that you include in your
standard image so that users can easily connect to the internet for any additional updates. IT administrators that
are attempting to build Windows 10 images for use with Windows To Go should consider adding additional Wi-
Fi drivers to their image to ensure that their users have the best chance of still having basic network connectivity
when roaming between systems.
The following list of commonly used Wi-Fi network adapters that are not supported by the default drivers
provided with Windows 10 is provided to help you ascertain whether or not you need to add drivers to your
image.
IT administrators that want to target Windows To Go images for specific systems should test their images to
ensure that the necessary system drivers are in the image, especially for critical functionality like Wi-Fi that is
not supported by class drivers. Some consumer devices require OEM-specific driver packages, which may not
be available on Windows Update. For more information on how to add a driver to a Windows Image, please
refer to the Basic Windows Deployment Step-by-Step Guide.
Application installation and domain join
Unless you are using a customized Windows image that includes unattended installation settings, the initial
Windows To Go workspace will not be domain joined and will not contain applications. This is exactly like a new
installation of Windows on a desktop or laptop computer. When planning your deployment, you should develop
methods to join Windows to Go drives to the domain and install the standard applications that users in your
organization require. These methods probably will be similar to the ones used for setting up desktop and laptop
computers with domain privileges and applications
Management of Windows To Go using Group Policy
In general, management of Windows To Go workspaces is same as that for desktop and laptop computers. There
are Windows To Go specific Group Policy settings that should be considered as part of Windows To Go
deployment. Windows To Go Group Policy settings are located at
\\Computer Configuration\Administrative Templates\Windows Components\Portable Operating System\ in the Local
Group Policy Editor.
The use of the Store on Windows To Go workspaces that are running Windows 8 can also be controlled by
Group Policy. This policy setting is located at
\\Computer Configuration\Administrative Templates\Windows Components\Store\ in the Local Group Policy Editor.
The policy settings have specific implications for Windows To Go that you should be aware of when planning
your deployment:
Settings for workspaces
Allow hibernate (S4) when star ted from a Windows To Go workspace
This policy setting specifies whether the PC can use the hibernation sleep state (S4) when started from a
Windows To Go workspace. By default, hibernation is disabled when using Windows To Go workspace, so
enabling this setting explicitly turns this ability back on. When a computer enters hibernation, the
contents of memory are written to disk. When the disk is resumed, it is important that the hardware
attached to the system, as well as the disk itself, are unchanged. This is inherently incompatible with
roaming between PC hosts. Hibernation should only be used when the Windows To Go workspace is not
being used to roam between host PCs.
IMPORTANT
For the host-PC to resume correctly when hibernation is enabled the Windows To Go workspace must continue to
use the same USB port.
Disallow standby sleep states (S1-S3) when star ting from a Windows To Go workspace
This policy setting specifies whether the PC can use standby sleep states (S1–S3) when started from a
Windows To Go workspace. The Sleep state also presents a unique challenge to Windows To Go users.
When a computer goes to sleep, it appears as if it is shut down. It could be very easy for a user to think
that a Windows To Go workspace in sleep mode was actually shut down and they could remove the
Windows To Go drive and take it home. Removing the Windows To Go drive in this scenario is equivalent
to an unclean shutdown, which may result in the loss of unsaved user data or the corruption on the drive.
Moreover, if the user now boots the drive on another PC and brings it back to the first PC, which still
happens to be in the sleep state, it will lead to an arbitrary crash and eventually corruption of the drive
and result in the workspace becoming unusable. If you enable this policy setting, the Windows To Go
workspace cannot use the standby states to cause the PC to enter sleep mode. If you disable or do not
configure this policy setting, the Windows To Go workspace can place the PC in sleep mode.
Settings for host PCs
Windows To Go Default Star tup Options
This policy setting controls whether the host computer will boot to Windows To Go if a USB device
containing a Windows To Go workspace is connected, and controls whether users can make changes
using the Windows To Go Star tup Options settings dialog. If you enable this policy setting, booting to
Windows To Go when a USB device is connected will be enabled and users will not be able to make
changes using the Windows To Go Star tup Options settings dialog. If you disable this policy setting,
booting to Windows To Go when a USB device is connected will not be enabled unless a user configures
the option manually in the firmware. If you do not configure this policy setting, users who are members
of the local Administrators group can enable or disable booting from USB using the Windows To Go
Star tup Options settings dialog.
IMPORTANT
Enabling this policy setting will cause PCs running Windows to attempt to boot from any USB device that is
inserted into the PC before it is started.
NOTE
Enabling a system to always boot from USB first has implications that you should consider. For example, a USB device that
includes malware could be booted inadvertently to compromise the system, or multiple USB drives could be plugged in to
cause a boot conflict. For this reason, the Windows To Go startup options are disabled by default. In addition,
administrator privileges are required to configure Windows To Go startup options.
If you are going to be using a Windows 7 computer as a host-PC, see the wiki article Tips for configuring your
BIOS settings to work with Windows To Go.
Roaming between different firmware types
Windows supports two types of PC firmware: Unified Extensible Firmware Interface (UEFI), which is the new
standard, and legacy BIOS firmware, which was used in most PCs shipping with Windows 7 or earlier version of
Windows. Each firmware type has completely different Windows boot components that are incompatible with
each other. Beyond the different boot components, Windows supports different partition styles and layout
requirements for each type of firmware as shown in the following diagrams.
This presented a unique challenge for Windows To Go because the firmware type is not easily determined by
end users—a UEFI computer looks just like a legacy BIOS computer and Windows To Go must boot on both
types of firmware.
To enable booting Windows To Go on both types of firmware, a new disk layout is provided for Windows 8 or
later that contains both sets of boot components on a FAT32 system partition and a new command-line option
was added to bcdboot.exe to support this configuration. The /f option is used with the bcdboot /s command to
specify the firmware type of the target system partition by appending either UEFI , BIOS or ALL . When creating
Windows To Go drives manually you must use the ALL parameter to provide the Windows To Go drive the
ability to boot on both types of firmware. For example, on volume H: (your Windows To Go USB drive letter), you
would use the command bcdboot C:\windows /s H: /f ALL . The following diagram illustrates the disk layout
that results from that command:
This is the only supported disk configuration for Windows To Go. With this disk configuration, a single Windows
To Go drive can be booted on computers with UEFI and legacy BIOS firmware.
Configure Windows To Go startup options
Windows To Go Startup Options is a setting available on Windows 10-based PCs that enables the computer to
be booted from a USB without manually changing the firmware settings of the PC. To configure Windows To Go
Startup Options you must have administrative rights on the computer and the Windows To Go Default
Star tup Options Group Policy setting must not be configured.
To configure Windows To Go star tup options
1. On the Start screen, type, type Windows To Go Star tup Options , click Settings and, then press Enter.
TIP
If your computer is part of a domain, the Group Policy setting can be used to enable the startup options instead
of the dialog.
3. Click Save Changes . If the User Account Control dialog box is displayed, confirm that the action it
displays is what you want, and then click Yes .
Change firmware settings
If you choose to not use the Windows To Go startup options or are using a PC running Windows 7 as your host
computer you will need to manually configure the firmware settings. The process used to accomplish this will
depend on the firmware type and manufacturer. If your host computer is protected by BitLocker and running
Windows 7 you should suspend BitLocker before making the change to the firmware settings. After the
firmware settings have been successfully reconfigured, resume BitLocker protection. If you do not suspend
BitLocker first, BitLocker will assume that the computer has been tampered with and will boot into BitLocker
recovery mode.
Related topics
Windows To Go: feature overview
Prepare your organization for Windows To Go
Security and data protection considerations for Windows To Go
Windows To Go: frequently asked questions
Prepare your organization for Windows To Go
5/5/2021 • 9 minutes to read • Edit Online
Applies to
Windows 10
IMPORTANT
Windows To Go is removed in Windows 10, version 2004 and later operating systems. The feature does not support
feature updates and therefore does not enable you to stay current. It also requires a specific type of USB that is no longer
supported by many OEMs.
The following information is provided to help you plan and design a new deployment of a Windows To Go in
your production environment. It provides answers to the "what", "why", and "when" questions an IT professional
might have when planning to deploy Windows To Go.
Usage scenarios
The following scenarios are examples of situations in which Windows To Go workspaces provide a solution for
an IT implementer:
Continuance of operations (COO). In this scenario, selected employees receive a USB drive with a
Windows To Go workspace, which includes all of the applications that the employees use at work. The
employees can keep the device at home, in a briefcase, or wherever they want to store it until needed.
When the users boot their home computer from the USB drive, it will create a corporate desktop
experience so that they can quickly start working. On the very first boot, the employee sees that Windows
is installing devices; after that one time, the Windows To Go drive boots like a normal computer. If they
have enterprise network access, employees can use a virtual private network (VPN) connection or
DirectAccess to access corporate resources. If the enterprise network is available, the Windows To Go
workspace will automatically be updated using your standard client management processes.
Contractors and temporar y workers. In this situation, an enterprise IT pro or manager would
distribute the Windows To Go drive directly to the worker where they can be assisted with any necessary
additional user education needs or address any possible compatibility issues. While the worker is on
assignment, they can boot their computer exclusively from the Windows To Go drive and run all
applications in that environment until the end of the assignment when the device is returned. No
installation of software is required on the worker's personal computer.
Managed free seating. The employee is issued a Windows To Go drive that is then used with the host
computer assigned to that employee for a given session (this could be a vehicle, workspace, or
standalone laptop). When the employee leaves the session, the next time they return they use the same
USB flash drive but use a different host computer.
Work from home. In this situation, the Windows To Go drive can be provisioned for employees using
various methods including Microsoft Endpoint Manager or other deployment tools and then distributed
to employees. The employee is instructed to boot the Windows To Go drive initially at work, which caches
the employee's credentials on the Windows To Go workspace and allows the initial data synchronization
between the enterprise network and the Windows To Go workspace. The user can then bring the
Windows To Go drive home where it can be used with their home computer, with or without enterprise
network connectivity.
Travel lightly. In this situation you have employees who are moving from site to site, but who always
will have access to a compatible host computer on site. Using Windows To Go workspaces allows them to
travel without the need to pack their PC.
NOTE
If the employee wants to work offline for the majority of the time, but still maintain the ability to use the drive on the
enterprise network, they should be informed of how often the Windows To Go workspace needs to be connected to the
enterprise network. Doing so will ensure that the drive retains its access privileges and the workspace's computer object is
not potentially deleted from Active Directory Domain Services (AD DS).
Infrastructure considerations
Because Windows To Go requires no additional software and minimal configuration, the same tools used to
deploy images to other PCs can be used by an enterprise to install Windows To Go on a large group of USB
devices. Moreover, because Windows To Go is compatible with connectivity and synchronization solutions
already in use—such as Remote Desktop, DirectAccess and Folder Redirection—no additional infrastructure or
management is necessary for this deployment. A Windows To Go image can be created on a USB drive that is
identical to the hard drive inside a desktop. However, you may wish to consider making some modifications to
your infrastructure to help make management of Windows To Go drives easier and to be able to identify them
as a distinct device group.
Activation considerations
Windows To Go uses volume activation. You can use either Active Directory-based activation or KMS activation
with Windows To Go. The Windows To Go workspace counts as another installation when assessing compliance
with application licensing agreements.
Microsoft software, such as Microsoft Office, distributed to a Windows To Go workspace must also be activated.
Office deployment is fully supported on Windows To Go. Please note, due to the retail subscription activation
method associated with Microsoft 365 Apps for enterprise, Microsoft 365 Apps for enterprise subscribers are
provided volume licensing activation rights for Office Professional Plus 2013 MSI for local installation on the
Windows To Go drive. This is available to organizations who purchase Microsoft 365 Apps for enterprise or
Office 365 Enterprise SKUs containing Microsoft 365 Apps for enterprise via volume licensing channels. For
more information about activating Microsoft Office, see Volume activation methods in Office 2013.
You should investigate other software manufacturer's licensing requirements to ensure they are compatible with
roaming usage before deploying them to a Windows To Go workspace.
NOTE
Using Multiple Activation Key (MAK) activation is not a supported activation method for Windows To Go as each different
PC-host would require separate activation. MAK activation should not be used for activating Windows, Office, or any
other application on a Windows To Go drive.
See Plan for Volume Activation for more information about these activation methods and how they can be used
in your organization.
Remote connectivity
If you want Windows To Go to be able to connect back to organizational resources when it is being used off-
premises a remote connectivity solution must be enabled. Windows Server 2012 DirectAccess can be used as
can a virtual private network (VPN) solution. For more information about configuring a remote access solution,
see the Remote Access (DirectAccess, Routing and Remote Access) Overview.
Related topics
Windows To Go: feature overview
Deployment considerations for Windows To Go
Security and data protection considerations for Windows To Go
Windows To Go: frequently asked questions
Security and data protection considerations for
Windows To Go
5/5/2021 • 4 minutes to read • Edit Online
Applies to
Windows 10
IMPORTANT
Windows To Go is removed in Windows 10, version 2004 and later operating systems. The feature does not support
feature updates and therefore does not enable you to stay current. It also requires a specific type of USB that is no longer
supported by many OEMs.
One of the most important requirements to consider when you plan your Windows To Go deployment is to
ensure that the data, content, and resources you work with in the Windows To Go workspace is protected and
secure.
BitLocker
We recommend that you use BitLocker with your Windows To Go drives to protect the drive from being
compromised if the drive is lost or stolen. When BitLocker is enabled, the user must provide a password to
unlock the drive and boot the Windows To Go workspace, this helps prevent unauthorized users from booting
the drive and using it to gain access to your network resources and confidential data. Because Windows To Go
drives are meant to be roamed between computers, the Trusted Platform Module (TPM) cannot be used by
BitLocker to protect the drive. Instead, you will be specifying a password that BitLocker will use for disk
encryption and decryption. By default, this password must be eight characters in length and can enforce more
strict requirements depending on the password complexity requirements defined by your organizations domain
controller.
You can enable BitLocker while using the Windows To Go Creator wizard as part of the drive provisioning
process before first use; or it can be enabled afterward by the user from within the Windows To Go workspace.
Tip If the Windows To Go Creator wizard is not able to enable BitLocker, see Why can't I enable BitLocker from
Windows To Go Creator?
If you are using a host computer running Windows 7 that has BitLocker enabled, you should suspend BitLocker
before changing the BIOS settings to boot from USB and then resume BitLocker protection. If BitLocker is not
suspended first, the next time the computer is started it will boot into recovery mode.
Related topics
Windows To Go: feature overview
Prepare your organization for Windows To Go
Deployment considerations for Windows To Go
Windows To Go: frequently asked questions
Volume Activation Management Tool (VAMT)
Technical Reference
3/5/2021 • 2 minutes to read • Edit Online
The Volume Activation Management Tool (VAMT) enables network administrators and other IT professionals to
automate and centrally manage the Windows®, Microsoft® Office, and select other Microsoft products
volume and retail-activation process. VAMT can manage volume activation using Multiple Activation Keys
(MAKs) or the Windows Key Management Service (KMS). VAMT is a standard Microsoft Management Console
(MMC) snap-in that requires the Microsoft Management Console (MMC) 3.0. VAMT can be installed on any
computer that has one of the following Windows operating systems:
Windows® 7 or above
Windows Server 2008 R2 or above
Impor tant VAMT is designed to manage volume activation for: Windows 7, Windows 8, Windows 8.1,
Windows 10, Windows Server 2008 (or later), Microsoft Office 2010 (or above).
VAMT is only available in an EN-US (x86) package.
In this section
TO P IC DESC RIP T IO N
Install and Configure VAMT Describes how to install VAMT and use it to configure client
computers on your network.
Add and Manage Products Describes how to add client computers into VAMT.
Manage Product Keys Describes how to add and remove a product key from VAMT.
Manage VAMT Data Describes how to save, import, export, and merge a
Computer Information List (CILX) file using VAMT.
VAMT Step-by-Step Scenarios Provides step-by-step instructions for using VAMT in typical
environments.
The Volume Activation Management Tool (VAMT) enables network administrators and other IT professionals to
automate and centrally manage the Windows®, Microsoft® Office®, and select other Microsoft products
volume and retail activation process. VAMT can manage volume activation using Multiple Activation Keys
(MAKs) or the Windows Key Management Service (KMS). VAMT is a standard Microsoft Management Console
(MMC) snap-in and can be installed on any computer that has one of the following Windows operating systems:
Windows® 7, Windows 8, Windows 8.1, Windows 10,Windows Server 2008 R2, or Windows Server 2012.
NOTE
VAMT can be installed on, and can manage, physical or virtual instances. VAMT cannot detect whether or not the remote
products are virtual. As long as the products can respond to Windows Management Instrumentation (WMI) calls, they will
be discovered and activated.
In this Topic
Managing Multiple Activation Key (MAK) and Retail Activation
Managing Key Management Service (KMS) Activation
Enterprise Environment
VAMT User Interface
Enterprise Environment
VAMT is commonly implemented in enterprise environments. The following illustrates three common
environments—Core Network, Secure Zone, and Isolated Lab.
In the Core Network environment, all computers are within a common network managed by Active Directory®
Domain Services (AD DS). The Secure Zone represents higher-security Core Network computers that have
additional firewall protection. The Isolated Lab environment is a workgroup that is physically separate from the
Core Network, and its computers do not have Internet access. The network security policy states that no
information that could identify a specific computer or user may be transferred out of the Isolated Lab.
Related topics
VAMT Step-by-Step Scenarios
Active Directory-Based Activation overview
3/26/2021 • 2 minutes to read • Edit Online
Active Directory-Based Activation (ADBA) enables enterprises to activate computers through a connection to
their domain. Many companies have computers at offsite locations that use products that are registered to the
company. Previously these computers needed to either use a retail key or a Multiple Activation Key (MAK), or
physically connect to the network in order to activate their products by using Key Management Services (KMS).
ADBA provides a way to activate these products if the computers can join the company’s domain. When the user
joins their computer to the domain, the ADBA object automatically activates Windows installed on their
computer, as long as the computer has a Generic Volume License Key (GVLK) installed. No single physical
computer is required to act as the activation object, because it is distributed throughout the domain.
ADBA scenarios
You might use ADBA if you only want to activate domain joined devices.
If you have a server hosting the KMS service, it can be necessary to reactivate licenses if the server is replaced
with a new host. This is not necessary When ADBA is used.
ADBA can also make load balancing easier when multiple KMS servers are present since the client can connect
to any domain controller. This is simpler than using the DNS service to load balance by configuring priority and
weight values.
Some VDI solutions also require that new clients activate during creation before they are added to the pool. In
this scenario, ADBA can eliminate potential VDI issues that might arise due to a KMS outage.
ADBA methods
VAMT enables IT Professionals to manage and activate the ADBA object. Activation can be performed using the
following methods:
Online activation: To activate an ADBA forest online, the user selects the Online activate forest function,
selects a KMS Host key (CSVLK) to use, and gives the ADBA Object a name.
Proxy activation: For a proxy activation, the user first selects the Proxy activate forest function, selects a
KMS Host key (CSVLK) to use, gives the ADBA Object a name, and provides a file name to save the CILx file
that contains the Installation ID. Next, the user takes that file to a computer that is running VAMT with an
Internet connection and then selects the Acquire confirmation IDs for CILX function on the VAMT landing
page, and provides the original CILx file. When VAMT has loaded the Confirmation IDs into the original CILx
file, the user takes this file back to the original VAMT instance, where the user completes the proxy activation
process by selecting the Apply confirmation ID to Active Director y domain function.
Related topics
How to Activate an Active Directory Forest Online
How to Proxy Activate an Active Directory Forest
Install and Configure VAMT
11/2/2020 • 2 minutes to read • Edit Online
This section describes how to install and configure the Volume Activation Management Tool (VAMT).
In this Section
TO P IC DESC RIP T IO N
Related topics
Introduction to VAMT
VAMT Requirements
3/26/2021 • 2 minutes to read • Edit Online
This topic includes info about the product key and system requirements for VAMT.
Multiple Activation Key (MAK) Volume licensing keys can only be obtained with a signed
Key Management Service (KMS) host key (CSVLK) contract from Microsoft. For more info, see the Microsoft
KMS client setup keys (GVLK) Volume Licensing portal.
System Requirements
The following table lists the system requirements for the VAMT host computer.
IT EM M IN IM UM SY ST EM REQ UIREM EN T
Hard Disk 16 GB available hard disk space for x86 or 20 GB for x64
Related topics
Install and Configure VAMT
Install VAMT
3/26/2021 • 2 minutes to read • Edit Online
This topic describes how to install the Volume Activation Management Tool (VAMT).
Install VAMT
You install VAMT as part of the Windows Assessment and Deployment Kit (ADK) for Windows 10.
IMPORTANT
VAMT requires local administrator privileges on all managed computers in order to deposit confirmation IDs (CIDs), get
the client products’ license status, and install product keys. If VAMT is being used to manage products and product keys
on the local host computer and you do not have administrator privileges, start VAMT with elevated privileges. For best
results when using Active Directory-based activation, we recommend running VAMT while logged on as a domain
administrator.
NOTE
The VAMT Microsoft Management Console snap-in ships as an x86 package.
Requirements
Windows Server with Desktop Experience, with internet access (for the main VAMT console) and all updates
applied
Latest version of the Windows 10 ADK
Any supported SQL Server Express version, the latest is recommended
Alternatively, any supported full SQL instance
Install SQL Server Express / alternatively use any full SQL instance
1. Download and open the SQL Server Express package.
2. Select Basic .
3. Accept the license terms.
4. Enter an install location or use the default path, and then select Install .
5. On the completion page, note the instance name for your installation, select Close , and then select Yes .
Uninstall VAMT
To uninstall VAMT using the Programs and Features Control Panel:
1. Open Control Panel and select Programs and Features .
2. Select Assessment and Deployment Kit from the list of installed programs and click Change . Follow
the instructions in the Windows ADK installer to remove VAMT.
Configure Client Computers
3/26/2021 • 3 minutes to read • Edit Online
To enable the Volume Activation Management Tool (VAMT) to function correctly, certain configuration changes
are required on all client computers:
An exception must be set in the client computer's firewall.
A registry key must be created and set properly, for computers in a workgroup; otherwise, Windows® User
Account Control (UAC) will not allow remote administrative operations.
Organizations where the VAMT will be widely used may benefit from making these changes inside the master
image for Windows.
[IMPORTANT] This procedure only applies to clients running Windows Vista or later. For clients running
Windows XP Service Pack 1, see Connecting Through Windows Firewall.
On the client computer, create the following registry key using regedit.exe.
1. Navigate to HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system
[NOTE] To discover VAMT-manageable Windows computers in workgroups, you must enable network
discovery on each client.
Deployment options
There are several options for organizations to configure the WMI firewall exception for computers:
Image. Add the configurations to the master Windows image deployed to all clients.
Group Policy. If the clients are part of a domain, then all clients can be configured using Group Policy. The
Group Policy setting for the WMI firewall exception is found in GPMC.MSC at: Computer
Configuration\Windows Settings\Security Settings\Windows Firewall with Advanced
Security\Windows Firewall with Advanced Security\Inbound Rules .
Script. Execute a script using Microsoft Endpoint Configuration Manager or a third-party remote script
execution facility.
Manual. Configure the WMI firewall exception individually on each client.
The above configurations will open an additional port through the Windows Firewall on target computers and
should be performed on computers that are protected by a network firewall. In order to allow VAMT to query
the up-to-date licensing status, the WMI exception must be maintained. We recommend administrators consult
their network security policies and make clear decisions when creating the WMI exception.
Related topics
Install and Configure VAMT
Add and Manage Products
11/2/2020 • 2 minutes to read • Edit Online
This section describes how to add client computers into the Volume Activation Management Tool (VAMT). After
the computers are added, you can manage the products that are installed on your network.
In this Section
TO P IC DESC RIP T IO N
Add and Remove Computers Describes how to add client computers to VAMT.
Update Product Status Describes how to update the status of product license.
Remove Products Describes how to remove a product from the product list.
Add and Remove Computers
5/8/2020 • 4 minutes to read • Edit Online
You can add computers that have any of the supported Windows or Office products installed to a Volume
Activation Management Tool (VAMT) database by using the Discover products function. You can search for
computers in an Active Directory domain, by individual computer name or IP address, in a workgroup, or by a
general LDAP query. You can remove computers from a VAMT database by using the Delete function. After you
add the computers, you can add the products that are installed on the computers by running the Update
license status function.
Before adding computers, ensure that the Windows Management Instrumentation (WMI) firewall exception
required by VAMT has been enabled on all target computers. For more information see Configure Client
Computers.
Related topics
Add and Manage Products
Update Product Status
11/2/2020 • 2 minutes to read • Edit Online
After you add computers to the VAMT database, you need to use the Update license status function to add
the products that are installed on the computers. You can also use the Update license status at any time to
retrieve the most current license status for any products in the VAMT database. To retrieve license status, VAMT
must have administrative permissions on all selected computers and Windows Management Instrumentation
(WMI) must be accessible through the Windows Firewall. In addition, for workgroup computers, a registry key
must be created to enable remote administrative actions under User Account Control (UAC). For more
information, see Configure Client Computers.
Note The license-status query requires a valid computer name for each system queried. If the VAMT database
contains computers that were added without Personally Identifiable Information, computer names will not be
available for those computers, and the status for these computers will not be updated.
Related topics
Add and Manage Products
Remove Products
11/2/2020 • 2 minutes to read • Edit Online
To remove one or more products from the Volume Activation Management Tool (VAMT), you can delete them
from the product list view in the center pane.
To delete one or more products
1. Click a product node in the left-side pane.
2. You can use the Filter function to narrow your search for computers by clicking Filter in the right-side pane
to open the Filter Products dialog box.
3. In the Filter Products dialog box, you can filter the list by computer name, product name, product key type,
license status, or by any combination of these options.
To filter the list by computer name, enter a name in the Computer Name box.
To filter the list by Product Name, Product Key Type, or License Status, click the list you want to use for
the filter and select an option. If necessary, click clear all filters to create a new filter.
4. Click Filter . VAMT displays the filtered list in the center pane.
5. Select the products you want to delete.
6. Click Delete in the Selected Items menu in the right-side pane.
7. On the Confirm Delete Selected Products dialog box, click OK .
Related topics
Add and Manage Products
Manage Product Keys
11/2/2020 • 2 minutes to read • Edit Online
This section describes how to add and remove a product key from the Volume Activation Management Tool
(VAMT). After you add a product key to VAMT, you can install that product key on a product or products you
select in the VAMT database.
In this Section
TO P IC DESC RIP T IO N
Add and Remove a Product Key Describes how to add a product key to the VAMT database.
Install a Product Key Describes how to install a product key for specific product.
Install a KMS Client Key Describes how to install a GVLK (KMS client) key.
Add and Remove a Product Key
11/2/2020 • 2 minutes to read • Edit Online
Before you can use a Multiple Activation Key (MAK), retail, or KMS Host key (CSVLK) product key, you must first
add it to the Volume Activation Management Tool (VAMT) database.
Related topics
Manage Product Keys
Install a Product Key
3/26/2021 • 2 minutes to read • Edit Online
You can use the Volume Activation Management Tool (VAMT) to install retail, Multiple Activation Key (MAK), and
KMS Host key (CSVLK).
To install a Product key
1. Open VAMT.
2. In the left-side pane, click the product that you want to install keys onto.
3. You can use the Filter function to narrow your search for computers by clicking Filter in the right-side
pane to open the Filter Products dialog box.
4. In the Filter Products dialog box, you can filter the list by computer name, product name, product key
type, license status, or by any combination of these options.
To filter the list by computer name, enter a name in the Computer Name box.
To filter the list by Product Name, Product Key Type, or License Status, click the list you want to use for
the filter and select an option. If necessary, click clear all filters to create a new filter.
5. Click Filter .
6. In the products list view in the center pane, sort the list if needed and then select the products that need
to have keys installed. You can use the CTRL key or the SHIFT key to select more than one product.
7. Click Install product key in the Selected Items menu in the right-side pane to display the Install
Product Key dialog box.
8. The Select Product Key dialog box displays the keys that are available to be installed. Under
Recommended MAKs , VAMT might display one or more recommended MAK based on the selected
products. You can select a recommended product key or a product key from the All Product Keys list.
Use the scroll bar if you need to view the Description for each key. When you have selected the product
key you want to install, click Install Key . Note that only one key can be installed at a time.
9. VAMT displays the Installing product key dialog box while it attempts to install the product key for the
selected products. When the process is finished, the status appears in the Action Status column of the
dialog box. Click Close to close the dialog box. You can also click the Automatically close when done
check box when the dialog box appears.
The same status is shown under the Status of Last Action column in the product list view in the center
pane.
Note Product key installation will fail if VAMT finds mismatched key types or editions. VAMT will display
the failure status and will continue the installation for the next product in the list. For more information
on choosing the correct MAK or KMS Host key (CSVLK), see How to Choose the Right Volume License Key
for Windows.
Related topics
Manage Product Keys
Install a KMS Client Key
11/2/2020 • 2 minutes to read • Edit Online
You can use the Volume Activation Management Tool (VAMT) to install Generic Volume License Key (GVLK), or
KMS client, product keys. For example, if you are converting a MAK-activated product to KMS activation.
Note By default, volume license editions of Windows Vista, Windows® 7, Windows 8, Windows 10,
Windows Server 2008, Windows Server 2008 R2, Windows Server® 2012, and Microsoft® Office 2010 use
KMS for activation. GVLKs are already installed in volume license editions of these products.
To install a KMS Client key
1. Open VAMT.
2. In the left-side pane click Products to open the product list view in the center pane.
3. In the products list view in the center pane, select the products that need to have GVLKs installed. You can
use the Filter function to narrow your search for computers by clicking Filter in the right-side pane to
open the Filter Products dialog box.
4. In the Filter Products dialog box, you can filter the list by computer name, product name, product key
type, license status, or by any combination of these options.
To filter the list by computer name, enter a name in the Computer Name box.
To filter the list by Product Name, Product Key Type, or License Status, click the list you want to use for
the filter and select an option. If necessary, click clear all filters to create a new filter.
5. Click Filter . VAMT displays the filtered list in the center pane.
6. Click Install product key in the Selected Items menu in the right-side pane to display the Install
Product Key dialog box.
7. The Install Product Key dialog box displays the keys that are available to be installed.
8. Select the Automatically select an AD or KMS client key option and then click Install Key .
VAMT displays the Installing product key dialog box while it attempts to install the product key for the
selected products. When the process is finished, the status appears in the Action Status column of the
dialog box. Click Close to close the dialog box. You can also click the Automatically close when done
check box when the dialog box appears.
The same status is shown under the Status of Last Action column in the product list view in the center
pane.
Related topics
Perform KMS Activation
Manage Activations
11/2/2020 • 2 minutes to read • Edit Online
This section describes how to activate a client computer, by using a variety of activation methods.
In this Section
TO P IC DESC RIP T IO N
Perform Online Activation Describes how to activate a client computer over the
Internet.
Perform Proxy Activation Describes how to perform volume activation for client
products that do not have Internet access.
Perform KMS Activation Describes how perform volume activation using the Key
Management Service (KMS).
Activate an Active Directory Forest Online Describes how to use Active Directory-Based Activation to
online activate an Active Directory forest.
Activate by Proxy an Active Directory Forest Describes how to use Active Directory-Based Activation to
proxy activate an Active Directory forest that is not
connected to the Internet.
Perform Online Activation
11/2/2020 • 2 minutes to read • Edit Online
You can use the Volume Activation Management Tool (VAMT) to enable client products to be activated over the
Internet. You can install the client products with any kind of product key that is eligible for online activation—
Multiple Activation Key (MAK), retail, and Windows Key Management Services (KMS) host key.
Requirements
Before performing online activation, ensure that the network and the VAMT installation meet the following
requirements:
VAMT is installed on a central computer that has network access to all client computers.
Both the VAMT host and client computers have Internet access.
The products that you want to activate are added to VAMT.
VAMT has administrative permissions on all computers that you intend to activate, and that Windows
Management Instrumentation (WMI) can be accessed through the Windows firewall. For more information,
see Configure Client Computers.
The product keys that are installed on the client products must have a sufficient number of remaining
activations. If you are activating a MAK key, you can retrieve the remaining number of activations for that key by
selecting the MAK in the product key list in the center pane and then clicking Refresh product key data
online in the right-side pane. This retrieves the number of remaining activations for the MAK from Microsoft.
Note that this step requires Internet access and that the remaining activation count can only be retrieved for
MAKs.
Related topics
Manage Activations
Perform Proxy Activation
5/9/2020 • 3 minutes to read • Edit Online
You can use the Volume Activation Management Tool (VAMT) to perform activation for client computers that do
not have Internet access. The client products can be installed with any type of product key that is eligible for
proxy activation: Multiple activation Key (MAK), KMS Host key (CSVLK), or retail key.
In a typical proxy-activation scenario, the VAMT host computer distributes a MAK to one or more client
computers and collects the installation ID (IID) from each computer. The VAMT host computer sends the IIDs to
Microsoft on behalf of the client computers and obtains the corresponding Confirmation IDs (CIDs). The VAMT
host computer then installs the CIDs on the client computer to complete the activation. Using this activation
method, only the VAMT host computer needs Internet access.
Note For workgroups that are completely isolated from any larger network, you can still perform MAK, KMS
Host key (CSVLK), or retail proxy activation. This requires installing a second instance of VAMT on a computer
within the isolated group and using removable media to transfer activation data between that computer and
another VAMT host computer that has Internet access. For more information about this scenario, see Scenario 2:
Proxy Activation. Similarly, you can proxy activate a KMS Host key (CSVLK) located in an isolated network. You
can also proxy activate a KMS Host key (CSVLK) in the core network if you do not want the KMS host computer
to connect to Microsoft over the Internet.
Requirements
Before performing proxy activation, ensure that your network and the VAMT installation meet the following
requirements:
There is an instance of VAMT that is installed on a computer that has Internet access. If you are performing
proxy activation for an isolated workgroup, you also need to have VAMT installed on one of the computers in
the workgroup.
The products to be activated have been added to VAMT and are installed with a retail product key, a KMS
Host key (CSVLK) or a MAK. If the products have not been installed with a proper product key, refer to the
steps in the Add and Remove a Product Key section for instructions on how to install a product key.
VAMT has administrative permissions on all products to be activated and Windows Management
Instrumentation (WMI) is accessible through the Windows firewall.
For workgroup computers, a registry key must be created to enable remote administrative actions under
User Account Control (UAC). For more information, see Configure Client Computers. The product keys that
are installed on the client products must have a sufficient number of remaining activations. If you are
activating a MAK key, you can retrieve the remaining number of activations for that key by selecting the MAK
in the product key list in the center pane and then clicking Refresh product key data online in the right-
side pane. This retrieves the number of remaining activations for the MAK from Microsoft. Note that this step
requires Internet access and that the remaining activation count can only be retrieved for MAKs.
The Volume Activation Management Tool (VAMT) can be used to perform volume activation using the Key
Management Service (KMS). You can use VAMT to activate Generic Volume Licensing Keys, or KMS client keys,
on products accessible to VAMT. GVLKs are the default product keys used by the volume-license editions of
Windows Vista, Windows 7, Windows 8, Windows 10, Windows Server 2008, Windows Server 2008 R2,
Windows Server® 2012, and Microsoft Office 2010. GVLKs are already installed in volume-license editions of
these products.
Requirements
Before configuring KMS activation, ensure that your network and VAMT installation meet the following
requirements:
KMS host is set up and enabled.
KMS clients can access the KMS host.
VAMT is installed on a central computer with network access to all client computers.
The products to be activated have been added to VAMT. For more information on adding product keys, see
Install a KMS Client Key.
VAMT has administrative permissions on all computers to be activated, and Windows Management
Instrumentation (WMI) is accessible through the Windows Firewall. For more information, see Configure
Client Computers.
If you reinstall Windows® or Microsoft® Office 2010 on a computer that was initially activated using proxy
activation (MAK, retail, or CSLVK (KMS host)), and have not made significant changes to the hardware, use this
local reactivation procedure to reactivate the program on that computer. Local reactivation relies upon data that
was created during the initial proxy activation and stored in the Volume Activation Management Tool (VAMT)
database. The database contains the installation ID (IID) and confirmation ID (Pending CID). Local reactivation
uses this data to reapply the CID and reactivate those products. Reapplying the same CID conserves the
remaining activations on the key.
Note During the initial proxy activation, the CID is bound to a digital “fingerprint”, which is calculated from
values assigned to several different hardware components in the computer. If the computer has had significant
hardware changes, this fingerprint will no longer match the CID. In this case, you must obtain a new CID for the
computer from Microsoft.
You can use the Volume Activation Management Tool (VAMT) Active Directory-Based Activation (ADBA) function
to activate an Active Directory (AD) forest over the Internet. ADBA enables certain products to inherit activation
from the domain.
Impor tant ADBA is only applicable to Generic Volume License Keys (GVLKs) and KMS Host keys (CSVLKs). To
use ADBA, one or more KMS Host keys (CSVLKs) must be installed on the AD forest, and client keys (GVLKs)
must be installed on the client products.
Requirements
Before performing online activation, ensure that the network and the VAMT installation meet the following
requirements:
VAMT is installed on a host computer that has Internet access.
VAMT has administrative permissions to the Active Directory domain.
The KMS Host key (CSVLK) you intend to use is added to VAMT in the Product Keys node.
To perform an online Active Director y forest activation
1. Open VAMT.
2. In the left-side pane, click the Active Director y-Based Activation node.
3. In the right-side Actions pane, click Online activate forest to open the Install Product Key dialog
box.
4. In the Install Product Key dialog box, select the KMS Host key (CSVLK) that you want to apply to the AD
forest.
5. If required, enter a new Active Directory-Based Activation Object name
Impor tant If you want to rename the ADBA object, you must do it now. After you click Install Key , the
name cannot be changed.
6. Click Install Key .
7. VAMT displays the Activating Active Director y dialog box until it completes the requested action.
The activated object and the date that is was created appear in the Active Director y-Based Activation node
in the center pane.
Related topics
Scenario 1: Online Activation
Add and Remove Computers
Activate by Proxy an Active Directory Forest
11/2/2020 • 3 minutes to read • Edit Online
You can use the Volume Activation Management Tool (VAMT) Active Directory-Based Activation (ADBA) function
to activate by proxy an Active Directory (AD) forest for an isolated workgroup that does not have Internet access.
ADBA enables certain volume products to inherit activation from the domain.
IMPORTANT
ADBA is only applicable to Generic Volume License Keys (GVLKs) and KMS Host key (CSVLK). To use ADBA, one or more
KMS Host keys (CSVLK) must be installed on the AD forest, and client keys (GVLKs) must be installed on the client
products.
In a typical proxy-activation scenario, the VAMT host computer distributes a product key to one or more client
computers and collects the installation ID (IID) from each computer. The VAMT host computer sends the IIDs to
Microsoft on behalf of the client computers and obtains the corresponding Confirmation IDs (CIDs). The VAMT
host computer then installs the CIDs on the client computer to complete the activation. If you use this activation
method, only the VAMT host computer needs to have Internet access.
NOTE
For workgroups that are isolated from any larger network, you can still perform an AD forest activation. This requires
installing a second instance of VAMT on a computer in the isolated group and using removable media to transfer
activation data between that computer and another VAMT host computer that has Internet access. You can also activate
by proxy a KMS Host key (CSVLK) in the core network if you do not want the host computer to connect to Microsoft over
the Internet.
Requirements
Before performing proxy activation, ensure that the network and the VAMT installation meet the following
requirements:
There is an instance of VAMT that is installed on a computer that has Internet access. If you are performing
proxy activation for an isolated workgroup, you must also have VAMT installed on one of the computers in
the workgroup.
VAMT has administrative permissions to the Active Directory domain.
To perform an Active Director y forest proxy activation
1. Open VAMT.
2. In the left-side pane, click the Active Director y-Based Activation node.
3. In the right-side Actions pane, click Proxy activate forest to open the Install Product Key dialog box.
4. In the Install Product Key dialog box, select the KMS Host key (CSVLK) that you want to activate.
5. If you want to rename the ADBA object, enter a new Active Directory-Based Activation Object name. If you
want to rename the ADBA object, you must do it now. After you click Install Key , the name cannot be
changed.
6. Enter the name of the file where you want to save the offline installation ID, or browse to the file location and
then click Open . If you are activating an AD forest in an isolated workgroup, save the .cilx file to a removable
media device.
7. Click Install Key . VAMT displays the Activating Active Director y dialog box until it completes the
requested action. The activated object and the date that it was created appear in the Active Director y-
Based Activation node in the center pane.
8. Insert the removable media into the VAMT host that has Internet access. Make sure that you are on the root
node, and that the Volume Activation Management Tool view is displayed in the center pane.
9. In the right-side Actions pane, click Acquire confirmation IDs for CILX to open the Acquire
confirmation IDs for file dialog box.
10. In the Acquire confirmation IDs for file dialog box, browse to where the .cilx file you exported from the
isolated workgroup host computer is located. Select the file, and then click Open . VAMT displays an
Acquiring Confirmation IDs message while it contacts Microsoft and acquires the CIDs.
11. When the CID collection process is complete, VAMT displays a Volume Activation Management Tool
message that shows how many confirmation IDs were successfully acquired, and the name of the file to
which the IDs were saved. Click OK to close the message.
12. Remove the storage device that contains the .cilx file from the Internet-connected VAMT host computer and
insert it into the VAMT host computer in the isolated workgroup.
13. Open VAMT and then click the Active Director y-Based Activation node in the left-side pane.
14. In the right-side Actions pane, click Apply confirmation ID to Active Director y domain , browse to the
.cilx file and then click Open .
VAMT displays the Activating Active Director y dialog box until it completes the requested action. The
activated object and the date that it was created appear in the Active Director y-Based Activation node in the
center pane.
Related topics
Add and Remove Computers
Manage VAMT Data
11/2/2020 • 2 minutes to read • Edit Online
This section describes how to save, import, export, and merge a Computer Information List (CILX) file using the
Volume Activation Management Tool (VAMT).
In this Section
TO P IC DESC RIP T IO N
Import and Export VAMT Data Describes how to import and export VAMT data.
Use VAMT in Windows PowerShell Describes how to access Windows PowerShell and how to
import the VAMT PowerShell module.
Import and Export VAMT Data
11/2/2020 • 2 minutes to read • Edit Online
You can use the Volume Activation Management Tool (VAMT) to import product-activation data from a
Computer Information List (.cilx or .cil) file into SQL Server, and to export product-activation data into a .cilx file.
A .cilx file is an XML file that stores computer and product-activation data. You can import data or export data
during the following scenarios:
Import and merge data from previous versions of VAMT.
Export data to use to perform proxy activations.
Warning Editing a .cilx file using an application other than VAMT can corrupt the .cilx file and is not supported.
Related topics
Perform Proxy Activation
Use VAMT in Windows PowerShell
3/26/2021 • 2 minutes to read • Edit Online
The Volume Activation Management Tool (VAMT) PowerShell cmdlets can be used to perform the same
functions as the Vamt.exe command-line tool.
To install PowerShell 3.0
VAMT PowerShell cmdlets require Windows PowerShell, which is included in Windows 10, Windows 8 and
Windows Server® 2012. You can download PowerShell for Windows 7 or other operating systems from the
Microsoft Download Center.
To install the Windows Assessment and Deployment Kit
In addition to PowerShell, you must import the VAMT PowerShell module. The module is included in the
VAMT 3.0 folder after you install the Windows Assessment and Deployment Kit (Windows ADK).
To prepare the VAMT PowerShell environment
To open PowerShell with administrative credentials, click Star t and type “PowerShell” to locate the
program. Right-click Windows PowerShell , and then click Run as administrator . To open PowerShell
in Windows 7, click Star t , click All Programs , click Accessories , click Windows PowerShell , right-
click Windows PowerShell , and then click Run as administrator .
Impor tant
If you are using a computer that has an 64-bit processor, select Windows PowerShell (x86) . VAMT
PowerShell cmdlets are supported for the x86 architecture only. You must use an x86 version of Windows
PowerShell to import the VAMT module, which are available in these directories:
The x86 version of PowerShell is available in
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
The x86 version of the PowerShell ISE is available in
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell_ise.exe
For all supported operating systems you can use the VAMT PowerShell module included with the
Windows ADK. By default, the module is installed with the Windows ADK in the VAMT folder. Change
directories to the directory where VAMT is located.
For example, if the Windows ADK is installed in the default location of
C:\Program Files(x86)\Windows Kits\10 , type:
Import the VAMT PowerShell module. To import the module, type the following at a command prompt:
Import-Module .\VAMT.psd1
Where Impor t-Module imports a module only into the current session. To import the module into all
sessions, add an Impor t-Module command to a Windows PowerShell profile. For more information
about profiles, type get-help about_profiles .
Warning
The update-help cmdlet is not supported for VAMT PowerShell cmdlets. To view online help for VAMT cmdlets,
you can use the -online option with the get-help cmdlet. For more information, see Volume Activation
Management Tool (VAMT) Cmdlets in Windows PowerShell.
To view VAMT PowerShell Help sections
1. To get the syntax to use with a cmdlet, type the following at a command prompt:
get-help get-VamtProduct
This section provides step-by-step instructions on implementing the Volume Activation Management Tool
(VAMT) in typical environments. VAMT supports many common scenarios; the scenarios in this section describe
some of the most common to get you started.
In this Section
TO P IC DESC RIP T IO N
Scenario 1: Online Activation Describes how to distribute Multiple Activation Keys (MAKs)
to products installed on one or more connected computers
within a network, and how to instruct these products to
contact Microsoft over the Internet for activation.
Scenario 2: Proxy Activation Describes how to use two VAMT host computers — the first
one with Internet access and a second computer within an
isolated workgroup — as proxies to perform MAK volume
activation for workgroup computers that do not have
Internet access.
Scenario 3: KMS Client Activation Describes how to use VAMT to configure client products for
Key Management Service (KMS) activation. By default,
volume license editions of Windows 10, Windows Vista,
Windows® 7, Windows 8, Windows Server 2008, Windows
Server 2008 R2, or Windows Server® 2012, and
Microsoft® Office 2010 use KMS for activation.
Related topics
Introduction to VAMT
Scenario 1: Online Activation
3/26/2021 • 10 minutes to read • Edit Online
In this scenario, the Volume Activation Management Tool (VAMT) is deployed in the Core Network environment.
VAMT is installed on a central computer that has network access to all of the client computers. Both the VAMT
host and the client computers have Internet access. The following illustration shows a diagram of an online
activation scenario for Multiple Activation Keys (MAKs). You can use this scenario for online activation of the
following key types:
Multiple Activation Key (MAK)
Windows Key Management Service (KMS) keys:
KMS Host key (CSVLK)
Generic Volume License Key (GVLK), or KMS client key
Retail The Secure Zone represents higher-security Core Network computers that have additional firewall
protection.
In This Topic
Install and start VAMT on a networked host computer
Configure the Windows Management Instrumentation firewall exception on target computers
Connect to VAMT database
Discover products
Sort and filter the list of computers
Collect status information from the computers in the list
Add product keys and determine the remaining activation count
Install the product keys
Activate the client products
Step 1: Install and start VAMT on a networked host computer
1. Install VAMT on the host computer.
2. Click the VAMT icon in the Star t menu to open VAMT.
Related topics
VAMT Step-by-Step Scenarios
Scenario 2: Proxy Activation
3/26/2021 • 15 minutes to read • Edit Online
In this scenario, the Volume Activation Management Tool (VAMT) is used to activate products that are installed
on workgroup computers in an isolated lab environment. For workgroups which are isolated from the larger
network, you can perform proxy activation of Multiple Activation Keys (MAKs), KMS Host keys (CSVLKs), Generic
Volume License Keys (GVLKs) (or KMS client keys), or retail keys. Proxy activation is performed by installing a
second instance of VAMT on a computer in the isolated workgroup. You can then use removable media to
transfer VAMT Computer Information Lists (CILXs) between the instance of VAMT in the isolated workgroup and
another VAMT host that has Internet access. The following diagram shows a Multiple Activation Key (MAK) proxy
activation scenario:
Step 11: Import the .cilx File onto the VAMT Host within the Isolated
Lab Workgroup
1. Remove the storage device that contains the .cilx file from the Internet-connected VAMT host computer and
insert it into the VAMT host computer in the isolated lab.
2. Open VAMT and verify that you are connected to the database that contains the computer with the product
keys that you are activating.
3. In the right-side Actions pane, click Impor t list to open the Impor t List dialog box.
4. In the Impor t list dialog box, browse to the location of the .cilx file that contains the CIDs, select the file, and
then click Open .
5. Click OK to import the file and to overwrite any conflicting data in the database with data from the file.
6. VAMT displays a progress message while the data is being imported. Click OK when a message appears and
confirms that the data has been successfully imported.
Step 12: Apply the CIDs and Activate the Isolated Lab Computers
1. Select the products to which you want to apply CIDs. If needed, sort and filter the list to find the products.
2. In the right-side Selected Items menu, click Activate , click Apply Confirmation ID , and then select
the appropriate credential option. If you click the Alternate Credentials option, you will be prompted to
enter an alternate user name and password.
VAMT displays the Applying Confirmation Id dialog box while it installs the CIDs on the selected
products. When VAMT finishes installing the CIDs, the status appears in the Action Status column of the
dialog box. Click Close to close the dialog box. You can also click the Automatically close when done
check box when the dialog box appears. The same status appears under the Status of Last Action
column in the product list view in the center pane.
Related topics
VAMT Step-by-Step Scenarios
Scenario 3: KMS Client Activation
11/2/2020 • 3 minutes to read • Edit Online
In this scenario, you use the Volume Activation Management Tool (VAMT) to activate Key Management Service
(KMS) client keys or Generic Volume License Keys (GVLKs). This can be performed on either Core Network or
Isolated Lab computers. By default, volume license editions of Windows Vista, Windows® 7, Windows 8,
Windows 10, Windows Server 2008, Windows Server 2008 R2, Windows Server® 2012, and
Microsoft® Office 2010 use KMS for activation. GVLKs are already installed in volume license editions of these
products. You do not have to enter a key to activate a product as a GVLK, unless you are converting a MAK-
activated product to a KMS activation. For more information, see Install a KMS Client Key.
The procedure that is described below assumes the following:
The KMS Service is enabled and available to all KMS clients.
VAMT has been installed and computers have been added to the VAMT database. See Parts 1 through 4 in
either Scenario 1: Online Activation or Scenario 2: Proxy Activation for more information.
Related topics
VAMT Step-by-Step Scenarios
VAMT known issues
3/26/2021 • 2 minutes to read • Edit Online
The current known issues with the Volume Activation Management Tool (VAMT), versions 3.0. and 3.1, include:
VAMT Windows Management Infrastructure (WMI) remote operations might take longer to execute if the
target computer is in a sleep or standby state.
When you open a Computer Information List (CIL) file that was saved by using a previous version of VAMT,
the edition information is not shown for each product in the center pane. You must update the product status
again to obtain the edition information.
The remaining activation count can only be retrieved for Multiple Activation Key (MAKs).
This issue occurs because VAMT 3.1 does not contain the correct Pkconfig files to recognize this kind of key. To
work around this issue, use one of the following methods.
Method 1
Do not add the CSVLK to the VAMT 3.1 tool. Instead, use the slmgr.vbs /ipk < CSVLK > command to install a
CSVLK on a KMS host. In this command, <CSVLK> represents the specific key that you want to install. For more
information about how to use the Slmgr.vbs tool, see Slmgr.vbs options for obtaining volume activation
information.
Method 2
On the KMS host computer, perform the following steps:
1. Download the hotfix from July 2016 update rollup for Windows 8.1 and Windows Server 2012 R2.
2. In Windows Explorer, right-click 485392_intl_x64_zip and extract the hotfix to C:\KB3058168.
3. To extract the contents of the update, run the following command:
5. In the C:\KB3058168\x86_microsoft-windows-s..nent-sku-csvlk-
pack_31bf3856ad364e35_6.3.9600.17815_none_bd26b4f34d049716 folder, copy the pkeyconfig-
csvlk.xrm-ms file. Paste this file into the C:\Program Files (x86)\Windows Kits\10\Assessment and
Deployment Kit\VAMT3\pkconfig folder.
6. Restart VAMT.
User State Migration Tool (USMT) Overview
7/20/2021 • 2 minutes to read • Edit Online
You can use User State Migration Tool (USMT) 10.0 to streamline and simplify user state migration during large
deployments of Windows operating systems. USMT captures user accounts, user files, operating system
settings, and application settings, and then migrates them to a new Windows installation. You can use USMT for
both PC replacement and PC refresh migrations. For more information, see Common Migration Scenarios.
USMT enables you to do the following:
Configure your migration according to your business needs by using the migration rule (.xml) files to control
exactly which files and settings are migrated and how they are migrated. For more information about how to
modify these files, see USMT XML Reference.
Fit your customized migration into your automated deployment process by using the ScanState and
LoadState tools, which control collecting and restoring the user files and settings. For more information, see
User State Migration Tool (USMT) Command-line Syntax.
Perform offline migrations. You can run migrations offline by using the ScanState command in Windows
Preinstallation Environment (WinPE) or you can perform migrations from previous installations of Windows
contained in Windows.old directories. For more information about migration types, see Choose a Migration
Store Type and Offline Migration Reference.
Benefits
USMT provides the following benefits to businesses that are deploying Windows operating systems:
Safely migrates user accounts, operating system and application settings.
Lowers the cost of deploying Windows by preserving user state.
Reduces end-user downtime required to customize desktops and find missing files.
Reduces help-desk calls.
Reduces the time needed for the user to become familiar with the new operating system.
Increases employee satisfaction with the migration experience.
Limitations
USMT is intended for administrators who are performing large-scale automated deployments. If you are only
migrating the user states of a few computers, you can use PCmover Express. PCmover is not a free utility.
PCmover Express is a tool created by Microsoft's partner, Laplink.
There are some scenarios in which the use of USMT is not recommended. These include:
Migrations that require end-user interaction.
Migrations that require customization on a machine-by-machine basis.
Related topics
User State Migration Tool (USMT) Technical Reference
Getting Started with the User State Migration Tool
(USMT)
3/5/2021 • 5 minutes to read • Edit Online
This topic outlines the general process that you should follow to migrate files and settings.
In this topic
Step 1: Plan Your Migration
Step 2: Collect files and settings from the source computer
Step 3: Prepare the destination computer and restore files and settings
7. Review the migration state of the components listed in the Config.xml file, and specify migrate=no for
any components that you do not want to migrate.
Step 2: Collect files and settings from the source computer
1. Back up the source computer.
2. Close all applications. If some applications are running when you run the ScanState command, USMT
might not migrate all of the specified data. For example, if Microsoft® Office Outlook® is open, USMT
might not migrate PST files.
Note USMT will fail if it cannot migrate a file or setting unless you specify the /C option. When you
specify the /C option, USMT will ignore the errors, and log an error every time that it encounters a file
that is being used that USMT did not migrate. You can use the <ErrorControl> section in the Config.xml
file to specify which errors should be ignored, and which should cause the migration to fail.
3. Run the ScanState command on the source computer to collect files and settings. You should specify all
of the .xml files that you want the ScanState command to use. For example,
scanstate \\server\migration\mystore /config:config.xml /i:migdocs.xml /i:migapp.xml /v:13 /l:scan.log
Note If the source computer is running Windows 7, or Windows 8, you must run the ScanState
command in Administrator mode. To run in Administrator mode, right-click Command Prompt , and
then click Run As Administrator . If the source computer is running Windows XP, you must run the
ScanState command from an account that has administrative credentials. For more information about
the how the ScanState command processes and stores the data, see How USMT Works.
4. Run the USMTUtils command with the /Verify option to ensure that the store you created is not
corrupted.
Note Run the LoadState command in administrator mode. To do this, right-click Command Prompt ,
and then click Run As Administrator .
5. Log off after you run the LoadState command. Some settings (for example, fonts, wallpaper, and screen
saver settings) will not take effect until the next time that the user logs on.
Windows upgrade and migration considerations
3/26/2021 • 4 minutes to read • Edit Online
Files and application settings can be migrated to new hardware running the Windows® operating system, or
they can be maintained during an operating system upgrade on the same computer. This topic summarizes the
Microsoft® tools you can use to move files and settings between installations in addition to special
considerations for performing an upgrade or migration.
NOTE
Windows Easy Transfer is not available in Windows 10.
Key: HKLM\System\Setup
Type: REG_DWORD
Value: "DDACLSys_Disabled" = 1
This feature is disabled if this registry key value exists and is configured to 1 .
Related topics
User State Migration Tool (USMT) Overview Topics
Windows 10 upgrade paths
Windows 10 edition upgrade
Exclude Files and Settings
11/2/2020 • 7 minutes to read • Edit Online
When you specify the migration .xml files, MigApp.xml, Migdocs, and MigUser.xml, the User State Migration Tool
(USMT) 10.0 migrates the settings and components listed, as discussed in What Does USMT Migrate? You can
create a custom .xml file to further specify what to include or exclude in the migration. In addition you can create
a Config.xml file to exclude an entire component from a migration. You cannot, however, exclude users by using
the migration .xml files or the Config.xml file. The only way to specify which users to include and exclude is by
using the User options on the command line in the ScanState tool. For more information, see ScanState Syntax.
In this topic:
Create a custom .xml file. You can use the following elements to specify what to exclude:
include and exclude: You can use the <include> and <exclude> elements to exclude objects with
conditions. For example, you can migrate all files located in the C:\ drive, except any .mp3 files. It is
important to remember that Conflicts and Precedence apply to these elements.
unconditionalExclude: You can use the <unconditionalExclude> element to globally exclude data.
This element takes precedence over all other include and exclude rules in the .xml files. Therefore,
this element excludes objects regardless of any other <include> rules that are in the .xml files. For
example, you can exclude all .mp3 files on the computer, or you can exclude all files from
C:\UserData.
Create a Config.xml File: You can create and modify a Config.xml file to exclude an entire component from
the migration. For example, you can use this file to exclude the settings for one of the default applications.
In addition, creating and modifying a Config.xml file is the only way to exclude the operating-system
settings that are migrated to computers running Windows. Excluding components using this file is easier
than modifying the migration .xml files because you do not need to be familiar with the migration rules
and syntax.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/mp3files">
<!-- This component migrates all files except those with .mp3 extension-->
<component type="Documents" context="UserAndSystem">
<displayName _locID="miguser.sharedvideo">MP3 Files</displayName>
<role role="Data">
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">C:\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File">C:\* [*.mp3]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
Example 2: How to migrate all files located in C:\Data except files in C:\Data\tmp
The following .xml file migrates all files and subfolders in C:\Data, except the files and subfolders in C:\Data\tmp.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName _locID="miguser.sharedvideo">Test component</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File">C:\Data\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\Data\temp\* [*]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
Example 3: How to exclude the files in a folder but include all subfolders
The following .xml file migrates any subfolders in C:\EngineeringDrafts, but excludes all files that are in
C:\EngineeringDrafts.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName>Component to migrate all Engineering Drafts Documents without subfolders</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName>Component to migrate all Engineering Drafts Documents except Sample.doc</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
</migration>
To exclude a Sample.doc file from any drive on the computer, use the <script> element. If multiple files exist with
the same name, all of these files will be excluded.
Examples of how to use XML to exclude files, folders, and registry keys
Here are some examples of how to use XML to exclude files, folders, and registry keys. For more info, see USMT
XML Reference
Example 1: How to exclude all .mp3 files
The following .xml file excludes all .mp3 files from the migration:
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
<component context="System" type="Documents">
<displayName>Test</displayName>
<role role="Data">
<rules>
<unconditionalExclude>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/allfiles">
<component type="Documents" context="System">
<displayName>Test</displayName>
<role role="Data">
<rules>
<unconditionalExclude>
<objectSet>
<pattern type="File">c:\*[*]</pattern>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
Related topics
Customize USMT XML Files
USMT XML Reference
Extract Files from a Compressed USMT Migration
Store
11/2/2020 • 3 minutes to read • Edit Online
When you migrate files and settings during a typical PC-refresh migration, you usually create a compressed
migration store file on the intermediate store. This migration store is a single image file that contains all files
being migrated as well as a catalog file. To protect the compressed file, you can encrypt it by using different
encryption algorithms. When you migrate the file back to the source computer after the operating system is
installed, you can run the Usmtutils command with the /extract option to recover the files from the
compressed migration store. You can also use the Usmtutils command with the /extract option any time you
need to recover data from a migration store.
Options used with the /extract option can specify:
The cryptographic algorithm that was used to create the migration store.
The encryption key or the text file that contains the encryption key.
Include and exclude patterns for selective data extraction.
In addition, you can specify the file patterns that you want to extract by using the /i option to include file
patterns or the /e option to exclude file patterns. When both the /i option and the /e option are used in the
same command, include patterns take precedence over exclude patterns. Note that this is different from the
include and exclude rules used in the ScanState and LoadState tools.
In this topic
To run the USMTutils tool with the /extract option
To extract all files from a compressed migration store
To extract specific file types from an encrypted compressed migration store
To extract all but one, or more, file types from an encrypted compressed migration store
To extract file types using the include pattern and the exclude pattern
To run the USMTutils tool with the /extract option
To extract files from the compressed migration store onto the destination computer, use the following USMTutils
syntax:
Cd /d <USMTpath> usmtutils /extract <filePath> <destinationPath> [/i:<includePattern>] [/e:<excludePattern>]
[/l:<logfile>] [/decrypt[:<AlgID>] {/key:<keystring> | /keyfile:<filename>}] [/o]
Where the placeholders have the following values:
<USMTpath> is the location where you have saved the USMT files and tools.
<filePath> is the location of the migration store.
<destination path> is the location of the file where you want the /extract option to put the extracted
migration store contents.
<includePattern> specifies the pattern for the files to include in the extraction.
<excludePattern> specifies the pattern for the files to omit from the extraction.
<AlgID> is the cryptographic algorithm that was used to create the migration store on the ScanState
command line.
<logfile> is the location and name of the log file.
<keystring> is the encryption key that was used to encrypt the migration store.
<filename> is the location and name of the text file that contains the encryption key.
To extract all files from a compressed migration store
To extract everything from a compressed migration store to a file on the C:\ drive, type:
In this example, the file is encrypted and the encryption key is located in a text file called encryptionKey.
To extract all but one, or more, file types from an encrypted compressed migration store
To extract all files except for one file type, such as .exe files, from an encrypted compressed migration store, type:
To extract file types using the include pattern and the exclude pattern
To extract files from a compressed migration store, and to exclude files of one type (such as .exe files) while
including only specific files, use both the include pattern and the exclude pattern, as in this example:
In this example, if there is a myProject.exe file, it will also be extracted because the include pattern option takes
precedence over the exclude pattern option.
Related topics
UsmtUtils Syntax
Return Codes
Verify the Condition of a Compressed Migration Store
Include Files and Settings
5/9/2020 • 3 minutes to read • Edit Online
When you specify the migration .xml files, User State Migration Tool (USMT) 10.0 migrates the settings and
components specified in What Does USMT Migrate? To include additional files and settings, we recommend that
you create a custom .xml file and then include this file when using both the ScanState and LoadState commands.
By creating a custom .xml file, you can keep your changes separate from the default .xml files, which makes it
easier to track your modifications.
In this topic:
Migrate a Single Registry Key
Migrate a Specific Folder
Migrate a Folder from a Specific Drive
Migrate a Folder from Any Location
Migrate a File Type Into a Specific Folder
Migrate a Specific File
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Application" context="System">
<displayName>Component to migrate only registry value string</displayName>
<role role="Settings">
<rules>
<include>
<objectSet>
<pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet
Settings\Cache [Persistent]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
</migration>
Excluding subfolders. The following .xml file migrates all files from C:\EngineeringDrafts, but it does
not migrate any subfolders within C:\EngineeringDrafts.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName>Component to migrate all Engineering Drafts Documents without subfolders</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
</migration>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName>Component to migrate all Engineering Drafts Documents folder on any drive on the computer
</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("\EngineeringDrafts\* [*] ", "Fixed")</script>
<script>MigXmlHelper.GenerateDrivePatterns ("*\EngineeringDrafts\* [*] ", "Fixed")</script>
</objectSet>
</include>
</rules>
</role>
</component>
</migration>
The following .xml file migrates all files and subfolders of the EngineeringDrafts folder from any location on the
C:\ drive. If multiple folders exist with the same name, they are all migrated.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName>Component to migrate all Engineering Drafts Documents EngineeringDrafts folder from where
ever it exists on the C: drive </displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\*\EngineeringDrafts\* [*]</pattern>
<pattern type="File"> C:\EngineeringDrafts\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
</migration>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="System">
<displayName>All .mp3 files to My Documents</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
</objectSet>
</include>
<!-- Migrates all the .mp3 files in the store to the C:\Music folder during LoadState -->
<locationModify script="MigXmlHelper.Move('C:\Music')">
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
</objectSet>
</locationModify>
</rules>
</role>
</component>
</migration>
To migrate a file from any location. To migrate the Sample.doc file from any location on the C:\ drive,
use the <pattern> element, as the following example shows. If multiple files exist with the same name on
the C:\ drive, all of files with this name are migrated.
To migrate the Sample.doc file from any drive on the computer, use <script> as the following example
shows. If multiple files exist with the same name, all files with this name are migrated.
Related topics
Customize USMT XML Files
Custom XML Examples
Conflicts and Precedence
USMT XML Reference
Migrate Application Settings
3/26/2021 • 12 minutes to read • Edit Online
You can create a custom .xml file to migrate specific line-of-business application settings or to change the default
migration behavior of the User State Migration Tool (USMT) 10.0. For ScanState and LoadState to use this file,
you must specify the custom .xml file on both command lines.
This topic defines how to author a custom migration .xml file that migrates the settings of an application that is
not migrated by default using MigApp.xml. You should migrate the settings after you install the application, but
before the user runs the application for the first time.
This topic does not contain information about how to migrate applications that store settings in an application-
specific store, only the applications that store the information in files or in the registry. It also does not contain
information about how to migrate the data that users create using the application. For example, if the
application creates .doc files using a specific template, this topic does not discuss how to migrate the .doc files
and templates themselves.
In this Topic
Before You Begin
Step 1: Verify that the application is installed on the source computer, and that it is the same version as
the version to be installed on the destination computer.
Step 2: Identify settings to collect and determine where each setting is stored on the computer.
Step 3: Identify how to apply the gathered settings.
Step 4: Create the migration XML component for the application.
Step 5: Test the application settings migration.
Case 2: The destination computer already contains settings for the application.
We recommend that you migrate the settings after you install the application, but before the user runs the
application for the first time. We recommend this because this ensures that there are no settings on the
destination computer when you migrate the settings. If you must install the application before the migration,
you should delete any existing settings using the < destinationCleanup > element. If for any reason you want to
preserve the settings that are on the destination computer, you can use the < merge > element and
DestinationPriority helper function.
Case 3: The application overwrites settings when it is installed.
We recommend that you migrate the settings after you install the application, but before the user runs the
application for the first time. We recommend this because this ensures that there are no settings on the
destination computer when you migrate the settings. Also, when some applications are installed, they overwrite
any existing settings that are on the computer. In this scenario, if you migrated the data before you installed the
application, your customized settings would be overwritten. This is common for applications that store settings
in locations that are outside of the user profile (typically these are settings that apply to all users). These
universal settings are sometimes overwritten when an application is installed, and they are replaced by default
values. To avoid this, you must install these applications before migrating the files and settings to the destination
computer. By default with USMT, data from the source computer overwrites data that already exists in the same
location on the destination computer.
Related topics
USMT XML Reference
Conflicts and Precedence
XML Elements Library
Log Files
Migrate EFS Files and Certificates
11/2/2020 • 2 minutes to read • Edit Online
This topic describes how to migrate Encrypting File System (EFS) certificates. For more information about the
/efs For options, see ScanState Syntax.
Cipher /D /S:<PATH>
Where <Path> is the full path of the topmost parent directory where the encryption attribute is set.
Related topics
What Does USMT Migrate?
Identify File Types, Files, and Folders
Migrate User Accounts
11/2/2020 • 2 minutes to read • Edit Online
By default, all users are migrated. The only way to specify which users to include and exclude is on the command
line by using the User options. You cannot specify users in the migration XML files or by using the Config.xml
file.
In this Topic
To migrate all user accounts and user settings
To migrate two domain accounts (User1 and User2)
To migrate two domain accounts (User1 and User2) and move User1 from the Contoso domain to the
Fabrikam domain
If you are migrating local accounts along with domain accounts, specify:
loadstate \\server\share\migration\mystore /i:migdocs.xml /i:migapp.xml /lac /lae
Note You do not have to specify the /lae option, which enables the account that was created with
the /lac option. Instead, you can create a disabled local account by specifying only the /lac option,
and then a local administrator needs to enable the account on the destination computer.
Related topics
Identify Users
ScanState Syntax
LoadState Syntax
Reroute Files and Settings
11/2/2020 • 2 minutes to read • Edit Online
To reroute files and settings, create a custom .xml file and specify this file name on both the ScanState and
LoadState commandlines. This enables you to keep your changes separate from the default .xml files, so that it is
easier to track your modifications.
In this topic:
Reroute a Folder
Reroute a Specific File Type
Reroute a Specific File
Reroute a Folder
The following custom .xml file migrates the directories and files from C:\EngineeringDrafts into the My
Documents folder of every user. %CSIDL_PERSONAL% is the virtual folder representing the My Documents
desktop item, which is equivalent to CSIDL_MYDOCUMENTS.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="User">
<displayName>Engineering Drafts Documents to Personal Folder</displayName>
<role role="Data">
<rules>
<!-- Migrate all directories and files present in c:\EngineeringDrafts folder -->
<include>
<objectSet>
<pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
</objectSet>
</include>
<!-- This migrates all files and directories from C:\EngineeringDrafts to every user’s personal
folder.-->
<locationModify script="MigXmlHelper.RelativeMove('C:\EngineeringDrafts','%CSIDL_PERSONAL%')">
<objectSet>
<pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
</objectSet>
</locationModify>
</rules>
</role>
</component>
</migration>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/test">
<component type="Documents" context="User">
<displayName>Sample.doc into My Documents</displayName>
<role role="Data">
<rules>
<include>
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
</objectSet>
</include>
<locationModify script="MigXmlHelper.RelativeMove('C:\EngineeringDrafts','%CSIDL_PERSONAL%')">
<objectSet>
<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
</objectSet>
</locationModify>
</rules>
</role>
</component>
</migration>
Related topics
Customize USMT XML Files
Conflicts and Precedence
USMT XML Reference
Verify the Condition of a Compressed Migration
Store
5/9/2020 • 3 minutes to read • Edit Online
When you migrate files and settings during a typical PC-refresh migration, the user state is usually stored in a
compressed folder on the intermediate store. This compressed folder, also called the compressed migration
store, is a single image file that contains:
All of the files being migrated.
The user’s settings.
A catalog file that contains metadata for all files in the migration store.
When you run the LoadState command to load the data from these files to the destination computer, LoadState
requires a valid catalog file in order to open the migration store. You can run the UsmtUtils command with the
/verify option to determine whether the compressed migration store is intact, or whether it contains corrupted
files or a corrupted catalog. You should run the /verify option on the migration store before you overwrite the
original user-state files and settings.
When you use the /verify option, you can specify what type of information to report in the UsmtUtils log file.
These report types are:
Catalog : Displays the status of only the catalog file.
All : Displays the status of all files, including the catalog file.
Failure only : Displays only the files that are corrupted.
In This Topic
The following sections demonstrate how to run the UsmtUtils command with the /verify option, and how to
specify the information to display in the UsmtUtils log file.
The UsmtUtils syntax for the /verify option
To verify that the migration store is intact
To verify the status of only the catalog file
To verify the status of all files
To verify the status of the files and return only the corrupted files
The UsmtUtils Syntax for the /verify Option
To verify the condition of a compressed migration store, use the following UsmtUtils syntax:
cd /d<USMTpath>usmtutils /verify[:<reportType>] <filePath> [/l:<logfile>] [/decrypt [:<AlgID>] {/key:
<keystring> | /keyfile:<filename>}]
Where the placeholders have the following values:
<USMTpath> is the location where you have saved the USMT files and tools.
<reportType> specifies whether to report on all files, corrupted files only, or the status of the catalog.
<filePath> is the location of the compressed migration store.
<logfile> is the location and name of the log file.
<AlgID> is the cryptographic algorithm that was used to create the migration store on the ScanState
command line.
<keystring> is the encryption key that was used to encrypt the migration store.
<filename> is the location and name of the text file that contains the encryption key.
To Verify that the Migration Store is Intact
To verify whether the migration store is intact or whether it contains corrupted files or a corrupted catalog, type:
Because no report type is specified, UsmtUtils displays the default summary report.
To Verify the Status of Only the Catalog File
To verify whether the catalog file is corrupted or intact, type:
In addition to verifying the status of all files, this example decrypts the files. Because no encryption algorithm is
specified, UsmtUtils uses the default 3DES cryptographic algorithm.
To Verify the Status of the Files and Return Only the Corrupted Files
In this example, the log file will only list the files that became corrupted during the ScanState process. This list
will include the catalog file if it is also corrupted.
This example also decrypts the files by specifying the cryptographic algorithm and the location of the file that
contains the encryption key.
Next Steps
If the /verify option indicates that there are corrupted files in the migration store, you can use the /extract
option in the UsmtUtils tool to recover data from some corrupted stores. For more information, see Extract Files
from a Compressed USMT Migration Store.
Related topics
UsmtUtils Syntax
Return Codes
User State Migration Tool (USMT) Troubleshooting
5/5/2021 • 2 minutes to read • Edit Online
The following table describes topics that address common User State Migration Tool (USMT) 10.0 issues and
questions. These topics describe tools that you can use to troubleshoot issues that arise during your migration.
In This Section
Common Issues Find troubleshooting solutions for common problems in
USMT.
Frequently Asked Questions Find answers to questions about how to use USMT.
USMT Resources Find more information and support for using USMT.
Related topics
USMT Best Practices
User State Migration Tool (USMT) Overview Topics
User State Migration Tool (USMT) How-to topics
User State Migration Toolkit (USMT) Reference
Common Issues
5/5/2021 • 14 minutes to read • Edit Online
The following sections discuss common issues that you might see when you run the User State Migration Tool
(USMT) 10.0 tools. USMT produces log files that describe in further detail any errors that occurred during the
migration process. These logs can be used to troubleshoot migration failures.
In This Topic
User Account Problems
Command-line Problems
XML File Problems
Migration Problems
Offline Migration Problems
Hard Link Migration Problems
USMT does not migrate the Start layout
Command-line Problems
The following sections describe common command-line problems. Expand the section to see recommended
solutions.
I received the following error message: "Usage Error: You cannot specify a file path with any of the
command-line options that exceeds 256 characters."
Cause: You might receive this error message in some cases even if you do not specify a long store or file path,
because the path length is calculated based on the absolute path. For example, if you run the scanstate.exe /o
store command from C:\Program Files\USMT40, then each character in " C:\Program Files\USMT40 " will be
added to the length of "store" to get the length of the path.
Resolution: Ensure that the total path length—the store path plus the current directory—does not exceed 256
characters.
I received the following error message: "USMT was unable to create the log file (s). Ensure that you have write
access to the log directory."
Cause: If you are running the ScanState or LoadState tools from a shared network resource, you will receive this
error message if you do not specify /l .
Resolution: To fix this issue in this scenario, specify the /l:scan.log or /l:load.log option.
I am having problems with a custom .xml file that I authored, and I cannot verify that the syntax is correct.
Resolution: You can load the XML schema (MigXML.xsd), included with USMT, into your XML authoring tool.
For examples, see the Visual Studio Development Center. Then, load your .xml file in the authoring tool to see if
there is a syntax error. In addition, see USMT XML Reference for more information about using the XML
elements.
I am using a MigXML helper function, but the migration isn’t working the way I expected it to. How do I
troubleshoot this issue?
Cause: Typically, this issue is caused by incorrect syntax used in a helper function. You receive a Success return
code, but the files you wanted to migrate did not get collected or applied, or weren’t collected or applied in the
way you expected.
Resolution: You should search the ScanState or LoadState log for either the component name which contains
the MigXML helper function, or the MigXML helper function title, so that you can locate the related warning in
the log file.
Migration Problems
The following sections describe common migration problems. Expand the section to see recommended
solutions.
Files that I specified to exclude are still being migrated.
Cause: There might be another rule that is including the files. If there is a more specific rule or a conflicting rule,
the files will be included in the migration.
Resolution: For more information, see Conflicts and Precedence and the Diagnostic Log section in Log Files.
I specified rules to move a folder to a specific location on the destination computer, but it has not migrated
correctly.
Cause: There might be an error in the XML syntax.
Resolution: You can use the USMT XML schema (MigXML.xsd) to write and validate migration .xml files. Also
see the XML examples in the following topics:
Conflicts and Precedence
Exclude Files and Settings
Reroute Files and Settings
Include Files and Settings
Custom XML Examples
After LoadState completes, the new desktop background does not appear on the destination computer.
There are three typical causes for this issue.
Cause #1:: Some settings such as fonts, desktop backgrounds, and screen-saver settings are not applied by
LoadState until after the destination computer has been restarted.
Resolution: To fix this issue, log off, and then log back on to see the migrated desktop background.
Cause #2: If the source computer was running Windows® XP and the desktop background was stored in the
Drive:\WINDOWS\Web\Wallpaper folder—the default folder where desktop backgrounds are stored in
Windows XP—the desktop background will not be migrated. Instead, the destination computer will have the
default Windows® desktop background. This will occur even if the desktop background was a custom picture
that was added to the \WINDOWS\Web\Wallpaper folder. However, if the end user sets a picture as the desktop
background that was saved in another location, for example, My Pictures, then the desktop background will
migrate.
Resolution: Ensure that the desktop background images that you want to migrate are not in the
\WINDOWS\Web\Wallpaper folder on the source computer.
Cause #3: If ScanState was not run on Windows XP from an account with administrative credentials, some
operating system settings will not migrate. For example, desktop background settings, screen-saver selections,
modem options, media-player settings, and Remote Access Service (RAS) connection phone book (.pbk) files
and settings will not migrate.
Resolution: Run the ScanState and LoadState tools from within an account with administrative credentials.
I included MigApp.xml in the migration, but some PST files aren’t migrating.
Cause: The MigApp.xml file migrates only the PST files that are linked to Outlook profiles.
Resolution: To migrate PST files that are not linked to Outlook profiles, you must create a separate migration
rule to capture these files.
USMT does not migrate the Start layout
Description: You are using USMT to migrate profiles from one installation of Windows 10 to another
installation of Windows 10 on different hardware. After migration, the user signs in on the new device and does
not have the Start menu layout they had previously configured.
Cause: A code change in the Start Menu with Windows 10 version 1607 and later is incompatible with this
USMT function.
Resolution: The following workaround is available:
1. With the user signed in, back up the Start layout using the following Windows PowerShell command. You
can specify a different path if desired:
This workaround changes the Default user's Start layout. The workaround does not scale to a mass migrations
or multiuser devices, but it can potentially unblock some scenarios. If other users will sign on to the device you
should delete layoutmodification.xml from the Default user profile. Otherwise, all users who sign on to that
device will use the imported Start layout.
Scanstate /ui:S1-5-21-124525095-708259637-1543119021*
The wild card (*) at the end of the SID will migrate the SID_Classes key as well.
You can also use patterns for SIDs that identify generic users or groups. For example, you can use the /ue:*-500
option to exclude the local administrator accounts. For more information about Windows SIDs, see this
Microsoft Web site.
My script to wipe the disk fails after running the ScanState tool on a 64-bit system.
Cause: The HKLM registry hive is not unloaded after the ScanState tool has finished running.
Resolution: Reboot the computer or unload the registry hive at the command prompt after the ScanState tool
has finished running. For example, at a command prompt, type:
Related topics
User State Migration Tool (USMT) Troubleshooting
Frequently Asked Questions
Return Codes
UsmtUtils Syntax
Log Files
3/5/2021 • 9 minutes to read • Edit Online
You can use User State Migration Tool (USMT) 10.0 logs to monitor your migration and to troubleshoot errors
and failed migrations. This topic describes the available command-line options to enable USMT logs, and new
XML elements that configure which types of errors are fatal and should halt the migration, which types are non-
fatal and should be skipped so that the migration can continue.
Log Command-Line Options
ScanState and LoadState Logs
Progress Log
List Files Log
Diagnostic Log
C O M M A N D L IN E O P T IO N F IL E N A M E DESC RIP T IO N
/progress [Path]FileName Specifies the path and file name of Provides information about the
the Progress log. status of the migration, by
percentage complete.
/listfiles [Path]FileName Specifies the path and file name of Provides a list of the files that were
the Listfiles log. migrated.
Note You cannot store any of the log files in StorePath. If you do, the log will be overwritten when USMT is run.
Progress Log
You can create a progress log using the /progress option. External tools, such as Microsoft System Center
Operations Manager 2007, can parse the progress log to update your monitoring systems. The first three fields
in each line are fixed as follows:
Date: Date, in the format of day shortNameOfTheMonth year. For example: 08 Jun 2006.
Local time: Time, in the format of hrs:minutes:seconds (using a 24-hour clock). For example: 13:49:13.
Migration time: Duration of time that USMT was run, in the format of hrs:minutes:seconds. For
example: 00:00:10.
The remaining fields are key/value pairs as indicated in the following table.
K EY VA L UE
detectedUser For the ScanState tool, these are the users USMT
detected on the source computer that can be
migrated.
For the LoadState tool, these are the users USMT
detected in the store that can be migrated.
objectName The name of the file or setting that caused the non-fatal
error.
K EY VA L UE
action Action taken by USMT for the non-fatal error. The values
are:
Ignore : Non-fatal error ignored and the
migration continued because the /c option was
specified on the command line.
Abor t : Stopped the migration because the /c
option was not specified.
Diagnostic Log
You can obtain the diagnostic log by setting the environment variable MIG_ENABLE_DIAG to a path to an XML
file.
The diagnostic log contains:
Detailed system environment information
Detailed user environment information
Information about the migration units (migunits) being gathered and their contents
</rules>
</role>
</component>
</migration>
However, upon testing the migration you notice that the "New Text Document.txt" file isn't included in the
migration. To troubleshoot this failure, the migration can be repeated with the environment variable
MIG_ENABLE_DIAG set such that the diagnostic log is generated. Upon searching the diagnostic log for the
component "DATA1", the following XML section is discovered:
<MigUnitList>
<MigUnit Name="<System>\DATA1 (CMXEAgent)" Context="System" ConfidenceLevel="100" Group="Applications"
Role="UserData" Agent="CMXEAgent" Selected="true" Supported="true">
<Patterns Type="Include">
<Pattern Type="File" Path="C:\data [*]"/>
</Patterns>
</MigUnit>
</MigUnitList>
<Perform Name="Gather" User="System">
<MigUnit Name="<System>\DATA1 (CMXEAgent)">
<Operation Name="Store" Type="File" Path="C:\data" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test (1).txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.txt]" SimObj="false" Success="true"/>
</MigUnit>
</Perform>
Analysis of this XML section reveals the migunit that was created when the migration rule was processed. The
<Perform> section details the actual files that were scheduled for gathering and the result of the gathering
operation. The "New Text Document.txt" file doesn't appear in this section, which confirms that the migration
rule was not correctly authored.
An analysis of the XML elements reference topic reveals that the <pattern> tag needs to be modified as follows:
When the migration is preformed again with the modified tag, the diagnostic log reveals the following:
<MigUnitList>
<MigUnit Name="<System>\DATA1 (CMXEAgent)" Context="System" ConfidenceLevel="100" Group="Applications"
Role="UserData" Agent="CMXEAgent" Selected="true" Supported="true">
<Patterns Type="Include">
<Pattern Type="File" Path="C:\data\* [*]"/>
</Patterns>
</MigUnit>
</MigUnitList>
<Perform Name="Gather" User="System">
<MigUnit Name="<System>\DATA1 (CMXEAgent)">
<Operation Name="Store" Type="File" Path="C:\data" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test (1).txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder [New Text Document.txt]" SimObj="false"
Success="true"/>
</MigUnit>
</Perform>
This diagnostic log confirms that the modified <pattern> value enables the migration of the file.
Why is this file migrating when I authored an exclude rule excluding it?
In this scenario, you have the following directory structure and you want all files in the "data" directory to
migrate, except for text files. The C:\Data folder contains:
Directory of C:\Data
</rules>
</role>
</component>
However, upon testing the migration you notice that all the text files are still included in the migration. In order
to troubleshoot this issue, the migration can be performed with the environment variable MIG_ENABLE_DIAG
set so that the diagnostic log is generated. Upon searching the diagnostic log for the component "DATA1", the
following XML section is discovered:
<MigUnitList>
<MigUnit Name="<System>\DATA1 (CMXEAgent)" Context="System" ConfidenceLevel="100" Group="Applications"
Role="UserData" Agent="CMXEAgent" Selected="true" Supported="true">
<Patterns Type="Include">
<Pattern Type="File" Path="C:\data\* [*]"/>
</Patterns>
<Patterns Type="Exclude">
<Pattern Type="File" Path="C:\* [*.txt]"/>
</Patterns>
</MigUnit>
</MigUnitList>
<Perform Name="Gather" User="System">
<MigUnit Name="<System>\DATA1 (CMXEAgent)">
<Operation Name="Store" Type="File" Path="C:\data" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test (1).txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.docx]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder [New Text Document.txt]" SimObj="false"
Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder [test.docx]" SimObj="false" Success="true"/>
</MigUnit>
</Perform>
Upon reviewing the diagnostic log, you confirm that the files are still migrating, and that it is a problem with the
authored migration XML rule. You author an update to the migration XML script as follows:
<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="http://www.microsoft.com/migration/1.0/TestSuite_BUGFIX">
</rules>
</role>
</component>
</migration>
Your revised migration XML script excludes the files from migrating, as confirmed in the diagnostic log:
<MigUnitList>
<MigUnit Name="<System>\DATA1 (CMXEAgent)" Context="System" ConfidenceLevel="100" Group="Applications"
Role="UserData" Agent="CMXEAgent" Selected="true" Supported="true">
<Patterns Type="Include">
<Pattern Type="File" Path="C:\data\* [*]"/>
</Patterns>
<Patterns Type="Exclude">
<Pattern Type="File" Path="C:\data\* [*.txt]"/>
</Patterns>
</MigUnit>
</MigUnitList>
<Perform Name="Gather" User="System">
<MigUnit Name="<System>\DATA1 (CMXEAgent)">
<Operation Name="Store" Type="File" Path="C:\data" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.docx]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder [test.docx]" SimObj="false" Success="true"/>
</MigUnit>
</Perform>
Related topics
XML Elements Library
ScanState Syntax
LoadState Syntax
Return Codes
3/26/2021 • 14 minutes to read • Edit Online
This topic describes User State Migration Tool (USMT) 10.0 return codes and error messages. Also included is a
table listing the USMT return codes with their associated mitigation steps. In addition, this topic provides tips to
help you use the logfiles to determine why you received an error.
Understanding the requirements for running USMT can help minimize errors in your USMT migrations. For
more information, see USMT Requirements.
In This Topic
USMT Return Codes
USMT Error Messages
Troubleshooting Return Codes and Error Messages
T RO UB L ESH O OT IN G,
M IT IGAT IO N ,
RET URN C O DE VA L UE RET URN C O DE ERRO R M ESSA GE W O RK A RO UN DS C AT EGO RY
No rights to Log on as
create user Administrator,
profiles; log in as and run with
Administrator; elevated
run with elevated privileges.
privileges
T RO UB L ESH O OT IN G,
M IT IGAT IO N ,
RET URN C O DE VA L UE RET URN C O DE ERRO R M ESSA GE W O RK A RO UN DS C AT EGO RY
Related topics
User State Migration Tool (USMT) Troubleshooting
Log Files
USMT Resources
3/26/2021 • 2 minutes to read • Edit Online
Related topics
User State Migration Tool (USMT) Overview Topics
USMT Requirements
3/26/2021 • 3 minutes to read • Edit Online
In This Topic
Supported Operating Systems
Windows PE
Credentials
Config.xml
LoadState
Hard Disk Requirements
User Prerequisites
LO A DSTAT E
O P ERAT IN G SY ST EM S SC A N STAT E ( SO URC E C O M P UT ER) ( DEST IN AT IO N C O M P UT ER)
Note You can migrate a 32-bit operating system to a 64-bit operating system. However, you cannot migrate a
64-bit operating system to a 32-bit operating system.
USMT does not support any of the Windows Server® operating systems, Windows 2000, Windows XP, or any
of the starter editions for Windows Vista or Windows 7.
USMT for Windows 10 should not be used for migrating from Windows 7 to Windows 8.1. It is meant to
migrate to Windows 10. For more information about previous releases of the USMT tools, see User State
Migration Tool (USMT) 4.0 User’s Guide.
Windows PE
Must use latest version of Window PE. For example, to migrate to Windows 10, you'll need Windows PE
5.1. For more info, see What's New in Windows PE.
Credentials
Run as administrator When manually running the ScanState and LoadState tools on Windows 7,
Windows 8 or Windows 10 you must run them from an elevated command prompt to ensure that all
specified users are migrated. If you do not run USMT from an elevated prompt, only the user profile that is
logged on will be included in the migration.
To open an elevated command prompt:
1. Click Star t .
2. Enter cmd in the search function.
3. Depending on the OS you are using, cmd or Command Prompt is displayed.
4. Right-click cmd or Command Prompt , and then click Run as administrator .
5. If the current user is not already an administrator, you will be prompted to enter administrator credentials.
Impor tant
You must run USMT using an account with full administrative permissions, including the following privileges:
SeBackupPrivilege (Back up files and directories)
SeDebugPrivilege (Debug programs)
SeRestorePrivilege (Restore files and directories)
SeSecurityPrivilege (Manage auditing and security log)
SeTakeOwnership Privilege (Take ownership of files or other objects)
Config.xml
Specify the /c option and <ErrorControl> settings in the Config.xml file.
USMT will fail if it cannot migrate a file or setting, unless you specify the /c option. When you specify the /c
option, USMT logs an error each time it encounters a file that is in use that did not migrate, but the migration
will not be interrupted. In USMT, you can specify in the Config.xml file which types of errors should allow the
migration to continue, and which should cause the migration to fail. For more information about error
reporting, and the <ErrorControl> element, see Config.xml File, Log Files, and XML Elements Library.
LoadState
Install applications before running the LoadState command.
Install all applications on the destination computer before restoring the user state. This ensures that migrated
settings are preserved.
Hard-Disk Requirements
Ensure that there is enough available space in the migration-store location and on the source and destination
computers. For more information, see Estimate Migration Store Size.
User Prerequisites
This documentation assumes that IT professionals using USMT understand command-line tools. The
documentation also assumes that IT professionals using USMT to author MigXML rules understand the
following:
The navigation and hierarchy of the Windows registry.
The files and file types that applications use.
The methods to extract application and setting information manually from applications created by internal
software-development groups and non-Microsoft software vendors.
XML-authoring basics.
Related topics
Plan Your Migration
Estimate Migration Store Size
User State Migration Tool (USMT) Overview Topics
USMT Best Practices
3/26/2021 • 6 minutes to read • Edit Online
This topic discusses general and security-related best practices when using User State Migration Tool
(USMT) 10.0.
Use the XML Schema (MigXML.xsd) when authoring .xml files to validate syntax
The MigXML.xsd schema file should not be included on the command line or in any of the .xml files.
Use the default migration XML files as models
To create a custom .xml file, you can use the migration .xml files as models to create your own. If you need
to migrate user data files, model your custom .xml file on MigUser.xml. To migrate application settings,
model your custom .xml file on the MigApp.xml file.
Consider the impact on performance when using the <context> parameter
Your migration performance can be affected when you use the <context> element with the
<component> element; for example, as in when you want to encapsulate logical units of file- or path-
based <include> and <exclude> rules.
In the User context, a rule is processed one time for each user on the system.
In the System context, a rule is processed one time for the system.
In the UserAndSystem context, a rule is processed one time for each user on the system and one time
for the system.
Note The number of times a rule is processed does not affect the number of times a file is migrated. The
USMT migration engine ensures that each file migrates only once.
We recommend that you create a separate .xml file instead of adding your .xml code to one
of the existing migration .xml files
For example, if you have code that migrates the settings for an application, you should not just add the
code to the MigApp.xml file.
You should not create custom .xml files to alter the operating system settings that are
migrated
These settings are migrated by manifests and you cannot modify those files. If you want to exclude
certain operating system settings from the migration, you should create and modify a Config.xml file.
You can use the asterisk (*) wildcard character in any migration XML file that you create
Note The question mark is not valid as a wildcard character in USMT .xml files.
Related topics
Migration Store Encryption
Plan Your Migration
How USMT Works
11/2/2020 • 8 minutes to read • Edit Online
USMT includes two tools that migrate settings and data: ScanState and LoadState. ScanState collects information
from the source computer, and LoadState applies that information to the destination computer.
ScanState Process
LoadState Process
Note For more information about how USMT processes the rules and the XML files, see Conflicts and
Precedence.
Related topics
User State Migration Tool (USMT) Command-line Syntax
Plan Your Migration
11/2/2020 • 2 minutes to read • Edit Online
Before you use the User State Migration Tool (USMT) 10.0 to perform your migration, we recommend that you
plan your migration carefully. Planning can help your migration proceed smoothly and can reduce the risk of
migration failure.
In migration planning, both organizations and individuals must first identify what to migrate, including user
settings, applications and application settings, and personal data files and folders. Identifying the applications to
migrate is especially important so that you can avoid capturing data about applications that may be phased out.
One of the most important requirements for migrating settings and data is restoring only the information that
the destination computer requires. Although the data that you capture on the source computer may be more
comprehensive than the restoration data for backup purposes, restoring data or settings for applications that
you will not install on the destination system is redundant. This can also introduce instability in a newly
deployed computer.
In This Section
Common Migration Scenarios Determine whether you will perform a refresh migration
or a replace migration.
What Does USMT Migrate? Learn which applications, user data, and operating
system components USMT migrates.
Test Your Migration Test your migration before you deploy Windows to all
users.
Related topics
USMT XML Reference
Common Migration Scenarios
3/5/2021 • 6 minutes to read • Edit Online
You use the User State Migration Tool (USMT) 10.0 when hardware and/or operating system upgrades are
planned for a large number of computers. USMT manages the migration of an end-user's digital identity by
capturing the user's operating-system settings, application settings, and personal files from a source computer
and reinstalling them on a destination computer after the upgrade has occurred.
One common scenario when only the operating system, and not the hardware, is being upgraded is referred to
as PC refresh. A second common scenario is known as PC replacement, where one piece of hardware is being
replaced, typically by newer hardware and a newer operating system.
In this topic
PC Refresh
Scenario One: PC-refresh offline using Windows PE and a hard-link migration store
Scenario Two: PC-refresh using a compressed migration store
Scenario Three: PC-refresh using a hard-link migration store
Scenario Four: PC-refresh using Windows.old folder and a hard-link migration store
PC Replacement
Scenario One: Offline migration using Windows PE and an external migration store
Scenario Two: Manual network migration
Scenario Three: Managed network migration
PC-Refresh
The following diagram shows a PC-refresh migration, also known as a computer refresh migration. First, the
administrator migrates the user state from a source computer to an intermediate store. After installing the
operating system, the administrator migrates the user state back to the source computer.
Scenario One: PC -refresh offline using Windows PE and a hard-link migration store
A company has just received funds to update the operating system on all of its computers in the accounting
department to Windows 10. Each employee will keep the same computer, but the operating system on each
computer will be updated. In this scenario, the update is being handled completely offline, without a network
connection. An administrator uses Windows Preinstallation Environment (WinPE) and a hard-link migration
store to save each user state to their respective computer.
1. On each computer, the administrator boots the machine into WinPE and runs the ScanState command-
line tool, specifying the /hardlink /nocompress command-line options. ScanState saves the user state
to a hard-link migration store on each computer, improving performance by minimizing network traffic
as well as minimizing migration failures on computers with very limited space available on the hard
drive.
2. On each computer, the administrator installs the company's standard operating environment (SOE) which
includes Windows 10 and other company applications.
3. The administrator runs the LoadState command-line tool on each computer. LoadState restores each user
state back to each computer.
Scenario Two: PC -refresh using a compressed migration store
A company has just received funds to update the operating system on all of its computers to Windows 10. Each
employee will keep the same computer, but the operating system on each computer will be updated. In this
scenario, an administrator uses a compressed migration store to save the user states to a server.
1. The administrator runs the ScanState command-line tool on each computer. ScanState saves each user
state to a server.
2. On each computer, the administrator installs the company's standard SOE which includes Windows 10
and other company applications.
3. The administrator runs the LoadState command-line tool on each source computer, and LoadState
restores each user state back to the computer.
Scenario Three: PC -refresh using a hard-link migration store
A company has just received funds to update the operating system on all of its computers to Windows 10. Each
employee will keep the same computer, but the operating system on each computer will be updated. In this
scenario, an administrator uses a hard-link migration store to save each user state to their respective computer.
1. The administrator runs the ScanState command-line tool on each computer, specifying the /hardlink
/nocompress command-line options. ScanState saves the user state to a hard-link migration store on
each computer, improving performance by minimizing network traffic as well as minimizing migration
failures on computers with very limited space available on the hard drive.
2. On each computer, the administrator installs the company's SOE which includes Windows 10 and other
company applications.
3. The administrator runs the LoadState command-line tool on each computer. LoadState restores each user
state back on each computer.
Scenario Four: PC -refresh using Windows.old folder and a hard-link migration store
A company has decided to update the operating system on all of its computers to Windows 10. Each employee
will keep the same computer, but the operating system on each computer will be updated. In this scenario, an
administrator uses Windows.old and a hard-link migration store to save each user state to their respective
computer.
1. The administrator clean installs Windows 10 on each computer, making sure that the Windows.old
directory is created by installing Windows 10 without formatting or repartitioning and by selecting a
partition that contains the previous version of Windows.
2. On each computer, the administrator installs the company's SOE which includes company applications.
3. The administrator runs the ScanState and LoadState command-line tools successively on each computer
while specifying the /hardlink /nocompress command-line options.
PC-Replacement
The following diagram shows a PC-replacement migration. First, the administrator migrates the user state from
the source computer to an intermediate store. After installing the operating system on the destination computer,
the administrator migrates the user state from the store to the destination computer.
Scenario One: Offline migration using WinPE and an external migration store
A company is allocating 20 new computers to users in the accounting department. The users each have a source
computer with their files and settings. In this scenario, migration is being handled completely offline, without a
network connection.
1. On each source computer, an administrator boots the machine into WinPE and runs ScanState to collect
the user state to either a server or an external hard disk.
2. On each new computer, the administrator installs the company's SOE which includes Windows 10 and
other company applications.
3. On each of the new computers, the administrator runs the LoadState tool, restoring each user state from
the migration store to one of the new computers.
Scenario Two: Manual network migration
A company receives 50 new laptops for their managers and needs to reallocate 50 older laptops to new
employees. In this scenario, an administrator runs the ScanState tool from the cmd prompt on each computer to
collect the user states and save them to a server in a compressed migration store.
1. The administrator runs the ScanState tool on each of the manager's old laptops, and saves each user state
to a server.
2. On the new laptops, the administrator installs the company's SOE, which includes Windows 10 and other
company applications.
3. The administrator runs the LoadState tool on the new laptops to migrate the managers' user states to the
appropriate computer. The new laptops are now ready for the managers to use.
4. On the old computers, the administrator installs the company's SOE, which includes Windows 10,
Microsoft Office, and other company applications. The old computers are now ready for the new
employees to use.
Scenario Three: Managed network migration
A company is allocating 20 new computers to users in the accounting department. The users each have a source
computer that contains their files and settings. An administrator uses a management technology such as a logon
script or a batch file to run ScanState on each source computer to collect the user states and save them to a
server in a compressed migration store.
1. On each source computer, the administrator runs the ScanState tool using Microsoft Endpoint
Configuration Manager, Microsoft Deployment Toolkit (MDT), a logon script, a batch file, or a non-
Microsoft management technology. ScanState collects the user state from each source computer and then
saves it to a server.
2. On each new computer, the administrator installs the company's SOE, which includes Windows 10 and
other company applications.
3. On each of the new computers, the administrator runs the LoadState tool using Microsoft Endpoint
Configuration Manager, a logon script, a batch file, or a non-Microsoft management technology.
LoadState migrates each user state from the migration store to one of the new computers.
Related topics
Plan Your Migration
Choose a Migration Store Type
Offline Migration Reference
What does USMT migrate?
3/26/2021 • 8 minutes to read • Edit Online
In this topic
Default migration scripts
User Data
Operating-system components
Supported applications
What USMT does not migrate
User data
This section describes the user data that USMT migrates by default, using the MigUser.xml file. It also defines
how to migrate ACLs.
Folders from each user profile. When you specify the MigUser.xml file, USMT migrates everything in
a user’s profiles including the following:
My Documents, My Video, My Music, My Pictures, desktop files, Start menu, Quick Launch settings, and
Favorites.
IMPORTANT
Starting in Windows 10, version 1607 the USMT does not migrate the Start menu layout. To migrate a user's Start
menu, you must export and then import settings using the Windows PowerShell cmdlets Expor t-Star tLayout
and Impor t-Star tLayout . For more information, see USMT common issues.
Folders from the All Users and Public profiles. When you specify the MigUser.xml file, USMT also
migrates the following from the All Users profile in Windows® XP, or the Public profile in
Windows Vista, Windows 7, or Windows 8:
Shared Documents
Shared Video
Shared Music
Shared desktop files
Shared Pictures
Shared Start menu
Shared Favorites
File types. When you specify the MigUser.xml file, the ScanState tool searches the fixed drives, collects
and then migrates files with any of the following file extensions:
.accdb, .ch3, .csv, .dif, .doc*, .dot*, .dqy, .iqy, .mcw, .mdb*, .mpp, .one*, .oqy, .or6, .pot*, .ppa,
.pps*, .ppt*, .pre, .pst, .pub, .qdf, .qel, .qph, .qsd, .rqy, .r tf, .scd, .sh3, .slk , .txt, .vl*, .vsd, .wk*,
.wpd, .wps, .wq1, .wri, .xl*, .xla, .xlb, .xls*.
Note The asterisk (*) stands for zero or more characters.
Access control lists. USMT migrates ACLs for specified files and folders from computers running both
Windows® XP and Windows Vista. For example, if you migrate a file named File1.txt that is read-only
for User1 and read/write for User2, these settings will still apply on the destination computer after the
migration.
Impor tant To migrate ACLs, you must specify the directory to migrate in the MigUser.xml file. Using file
patterns like *.doc will not migrate a directory. The source ACL information is migrated only when you explicitly
specify the directory. For example, <pattern type="File">c:\test docs</pattern> .
Operating-system components
USMT migrates operating-system components to a destination computer from computers running Windows 7
and Windows 8
The following components are migrated by default using the manifest files:
Accessibility settings
Address book
Command-prompt settings
*Desktop wallpaper
EFS files
Favorites
Folder options
Fonts
Group membership. USMT migrates users’ group settings. The groups to which a user belongs can be
found by right-clicking My Computer on the Start menu and then clicking Manage . When running an
offline migration, the use of a <ProfileControl> section in the Config.xml file is required.
*Windows Internet Explorer® settings
Microsoft® Open Database Connectivity (ODBC) settings
Mouse and keyboard settings
Network drive mapping
*Network printer mapping
*Offline files
*Phone and modem options
RAS connection and phone book (.pbk) files
*Regional settings
Remote Access
*Taskbar settings
User personal certificates (all)
Windows Mail.
*Windows Media Player
Windows Rights Management
* These settings are not available for an offline migration. For more information, see Offline Migration
Reference.
Impor tant This list may not be complete. There may be additional components that are migrated.
Note Some settings, such as fonts, are not applied by the LoadState tool until after the destination computer
has been restarted. For this reason, restart the destination computer after you run the LoadState tool.
Supported applications
Although it is not required for all applications, it is good practice to install all applications on the destination
computer before restoring the user state. Installing applications before migrating settings helps to ensure that
the migrated settings are not overwritten by the application installers.
Note The versions of installed applications must match on the source and destination computers. USMT does
not support migrating the settings of an earlier version of an application to a later version, except for Microsoft
Office.
Note USMT migrates only the settings that have been used or modified by the user. If there is an application
setting on the source computer that was not touched by the user, the setting may not migrate.
When you specify the MigApp.xml file, USMT migrates the settings for the following applications:
P RO DUC T VERSIO N
Adobe Photoshop CS 8, 9
Adobe ImageReady CS
Apple iTunes 6, 7, 8
Google Picasa 3
Mozilla Firefox 3
RealPlayer Basic 11
Skype 3.8
Microsoft Works 9
Yahoo Messenger 9
Related topics
Plan your migration
Choose a Migration Store Type
11/2/2020 • 2 minutes to read • Edit Online
One of the main considerations for planning your migration is to determine which migration store type best
meets your needs. As part of these considerations, determine how much space is required to run the User State
Migration Tool (USMT) 10.0 components on your source and destination computers, and how much space is
needed to create and host the migration store, whether you are using a local share, network share, or storage
device. The final consideration is ensuring that user date integrity is maintained by encrypting the migration
store.
In This Section
Migration Store Types Overview Choose the migration store type that works best for
your needs and migration scenario.
Estimate Migration Store Size Estimate the amount of disk space needed for
computers in your organization based on information
about your organization's infrastructure.
Hard-Link Migration Store Learn about hard-link migration stores and the
scenarios in which they are used.
Migration Store Encryption Learn about the using migration store encryption to
protect user data integrity during a migration.
Related topics
Plan Your Migration
User State Migration Tool (USMT) How-to topics
Migration Store Types Overview
11/2/2020 • 3 minutes to read • Edit Online
When planning your migration, you should determine which migration store type best meets your needs. As
part of these considerations, determine how much space is required to run the User State Migration Tool
(USMT) 10.0 components on your source and destination computers. You should also determine the space
needed to create and host the migration store, whether you are using a local share, network share, or storage
device.
In This Topic
Migration Store Types
Local Store vs. Remote Store
The /localonly Command-Line Option
Related topics
Plan Your Migration
Estimate Migration Store Size
5/9/2020 • 6 minutes to read • Edit Online
The disk space requirements for a migration are dependent on the size of the migration store and the type of
migration. You can estimate the amount of disk space needed for computers in your organization based on
information about your organization's infrastructure. You can also calculate the disk space requirements using
the ScanState tool.
In This Topic
Hard Disk Space Requirements. Describes the disk space requirements for the migration store and other
considerations on the source and destination computers.
Calculate Disk Space Requirements Using the ScanState Tool. Describes how to use the ScanState tool to
determine how big the migration store will be on a particular computer.
Estimate Migration Store Size. Describes how to estimate the average size of migration stores for the
computers in your organization, based on your infrastructure.
Where <StorePath> is a path to a directory where the migration store will be saved and <path to a file>
is the path and filename where the XML report for space requirements will be saved. For example,
The migration store will not be created by running this command, but StorePath is a required parameter.
The ScanState tool also allows you to estimate disk space requirements based on a customized migration. For
example, you might not want to migrate the My Documents folder to the destination computer. You can specify
this in a configuration file when you run the ScanState tool. For more information, see Customize USMT XML
Files.
Note To preserve the functionality of existing applications or scripts that require the previous behavior of
USMT, the /p option, without specifying <path to a file> is still available in USMT.
The space requirements report provides two elements, <storeSize > and <temporar ySpace >. The
<temporar ySpace > value shows the disk space, in bytes, that USMT uses to operate during the migration—
this does not include the minimum 250 MB needed to support USMT. The <storeSize > value shows the disk
space, in bytes, required to host the migration store contents on both the source and destination computers. The
following example shows a report generated using /p:<path to a file>.
Additionally, USMT performs a compliance check for a required minimum of 250 MB of available disk space and
will not create a store if the compliance check fails.
Related topics
Common Migration Scenarios
Hard-Link Migration Store
3/26/2021 • 10 minutes to read • Edit Online
A hard-link migration store enables you to perform an in-place migration where all user state is maintained on
the computer while the old operating system is removed and the new operating system is installed; this is why it
is best suited for the computer-refresh scenario. Use of a hard-link migration store for a computer-refresh
scenario drastically improves migration performance and significantly reduces hard-disk utilization, reduces
deployment costs and enables entirely new migration scenarios.
In this topic
When to Use a Hard-Link Migration
Understanding a Hard-Link Migration
Scenario
Hard-Link Migration Store Details
Hard Disk Space
Hard-Link Store Size Estimation
Migration Store Path on Multiple Volumes
Location Modifications
Migrating Encrypting File System (EFS) Certificates and Files
Migrating Locked Files With the Hard-Link Migration Store
XML Elements in the Config.xml File
NOTE
During the update of a domain-joined computer, the profiles of users whose SID cannot be resolved will not be migrated.
When using a hard-link migration store, it could cause a data loss.
Running this command on a system that contains the operating system on the C: drive and the user data on the
D: drive will generate migration stores in the following locations, assuming that both drives are NTFS:
C:\USMTMIG\
D:\USMTMIG\
The drive you specify on the command line for the hard-link migration store is important, because it defines
where the master migration store should be placed. The master migration store is the location where data
migrating from non-NTFS volumes is stored. This volume must have enough space to contain all of the data that
comes from non-NTFS volumes. As in other scenarios, if a migration store already exists at the specified path,
the /o option must be used to overwrite the existing data in the store.
Location Modifications
Location modifications that redirect migrated content from one volume to a different volume have an adverse
impact on the performance of a hard-link migration. This is because the migrating data that must cross system
volumes cannot remain in the hard-link migration store, and must be copied across the system volumes.
Migrating Encrypting File System (EFS ) Certificates and Files
To migrate Encrypting File System (EFS) files to a new installation of an operating system on the same volume of
the computer, specify the /efs:hardlink option in the Scanstate command-line syntax.
If the EFS files are being restored to a different partition, you should use the /efs:copyraw option instead of the
/efs:hardlink option. Hard links can only be created for files on the same volume. Moving the files to another
partition during the migration requires a copy of the files to be created on the new partition. The /efs:copyraw
option will copy the files to the new partition in encrypted format.
For more information, see Migrate EFS Files and Certificates and the Encrypted File Options in ScanState Syntax.
Migrating Locked Files with the Hard-Link Migration Store
Files that are locked by an application or the operating system are handled differently when using a hard-link
migration store.
Files that are locked by the operating system cannot remain in place and must be copied into the hard-link
migration store. As a result, selecting many operating-system files for migration significantly reduces
performance during a hard-link migration. As a best practice, we recommend that you do not migrate any files
out of the \Windows directory, which minimizes performance-related issues.
Files that are locked by an application are treated the same in hard-link migrations as in other scenarios when
the volume shadow-copy service is not being utilized. The volume shadow-copy service cannot be used in
conjunction with hard-link migrations. However, by modifying the new <HardLinkStoreControl> section in
the Config.xml file, it is possible to enable the migration of files locked by an application.
Impor tant There are some scenarios in which modifying the <HardLinkStoreControl> section in the
Config.xml file makes it more difficult to delete a hard-link migration store. In these scenarios, you must use
USMTutils.exe to schedule the migration store for deletion on the next restart.
Impor tant You must use the /nocompress option with the /HardLink option.
The following XML sample specifies that files locked by an application under the \Users directory can remain in
place during the migration. It also specifies that locked files that are not located in the \Users directory should
result in the File in Use error. It is important to exercise caution when specifying the paths using the File in
Use<createhardlink> tag in order to minimize scenarios that make the hard-link migration store more
difficult to delete.
<Policies>
<HardLinkStoreControl>
<fileLocked>
<createHardLink>c:\Users\* [*]</createHardLink>
<errorHardLink>C:\* [*]</errorHardLink>
</fileLocked>
</HardLinkStoreControl>
</Policies>
Related topics
Plan Your Migration
Migration Store Encryption
5/9/2020 • 2 minutes to read • Edit Online
This topic discusses User State Migration Tool (USMT) 10.0 options for migration store encryption to protect the
integrity of user data during a migration.
C O M P O N EN T O P T IO N DESC RIP T IO N
ScanState /encr ypt <AES, AES_128, This option and argument specify
AES_192, AES_256, 3DES, that the migration store is
3DES_112> encrypted and which algorithm to
use. When the algorithm
argument is not provided, the
ScanState tool employs the 3DES
algorithm.
LoadState /decr ypt <AES, AES_128, This option and argument specify
AES_192, AES_256, 3DES, that the store must be decrypted
3DES_112> and which algorithm to use. When
the algorithm argument is not
provided, the LoadState tool
employs the 3DES algorithm.
Impor tant Some encryption algorithms may not be available on your systems. You can verify which
algorithms are available by running the UsmtUtils command with the /ec option. For more information see
UsmtUtils Syntax
Related topics
Plan Your Migration
Determine What to Migrate
6/23/2020 • 2 minutes to read • Edit Online
By default, User State Migration Tool (USMT) 10.0 migrates the items listed in What Does USMT Migrate?,
depending on the migration .xml files you specify. These default settings are often enough for a basic migration.
However, when considering what settings to migrate, you should also consider what settings you would like the
user to be able to configure, if any, and what settings you would like to standardize. Many organizations use
their migration as an opportunity to create and begin enforcing a better-managed environment. Some of the
settings that users can configure on unmanaged computers prior to the migration can be locked on the new,
managed computers. For example, standard wallpaper, Internet Explorer security settings, and desktop
configuration are some of the items you can choose to standardize.
To reduce complexity and increase standardization, your organization should consider creating a standard
operating environment (SOE). An SOE is a combination of hardware and software that you distribute to all users.
This means selecting a baseline for all computers, including standard hardware drivers; core operating system
features; core productivity applications, especially if they are under volume licensing; and core utilities. This
environment should also include a standard set of security features, as outlined in the organization’s corporate
policy. Using a standard operating environment can vastly simplify the migration and reduce overall
deployment challenges.
In This Section
Identify Users Use command-line options to specify which users to
migrate and how they should be migrated.
Identify Applications Settings Determine which applications you want to migrate and
prepare a list of application settings to be migrated.
Identify Operating System Settings Use migration to create a new standard environment on
each of the destination computers.
Identify File Types, Files, and Folders Determine and locate the standard, company-specified,
and non-standard locations of the file types, files,
folders, and settings that you want to migrate.
Related topics
What Does USMT Migrate?
Identify Users
3/5/2021 • 2 minutes to read • Edit Online
It is important to carefully consider how you plan to migrate users. By default, all users are migrated by User
State Migration Tool (USMT) 5.0. You must specify which users to include by using the command line. You cannot
specify users in the .xml files. For instructions on how to migrate users, see Migrate User Accounts.
In this topic
Migrating Local Accounts
Migrating Domain Accounts
Command-Line Options
NOTE
If there are multiple users on a computer, and you specify a password with the /lac option, all migrated users will have
the same password.
Command-Line Options
USMT provides several options to migrate multiple users on a single computer. The following command-line
options specify which users to migrate.
Specifying users. You can specify which users to migrate with the /all , /ui , /uel , and /ue options with
both the ScanState and LoadState command-line tools.
IMPORTANT
The /uel option excludes users based on the LastModified date of the Ntuser.dat file. The /uel option is not
valid in offline migrations.
Moving users to another domain. You can move user accounts to another domain using the /md option
with the LoadState command-line tool.
Creating local accounts. You can create and enable local accounts using the /lac and /lae options with the
LoadState command-line tool.
Renaming user accounts. You can rename user accounts using the /mu option.
NOTE
By default, if a user name is not specified in any of the command-line options, the user will be migrated.
Related topics
Determine What to Migrate
ScanState Syntax
LoadState Syntax
Identify Applications Settings
5/9/2020 • 2 minutes to read • Edit Online
When planning for your migration, you should identify which applications and settings you want to migrate. For
more information about how to create a custom .xml file to migrate the settings of another application, see
Customize USMT XML Files.
Applications
First, create and prioritize a list of applications that to be migrated. It may be helpful to review the application
lists and decide which applications will be redeployed and which applications will be retired. Often, the
applications are prioritized based on a combination of how widely the application is used and how complex the
application is.
Next, identify an application owner to be in charge of each application. This is necessary because the developers
will not be experts on all of the applications in the organization. The application owner should have the most
experience with an application. The application owner provides insight into how the organization installs,
configures, and uses the application.
Application Settings
Next, determine and locate the application settings to be migrated. You can acquire much of the information that
you need for this step when you are testing the new applications for compatibility with the new operating
system.
After completing the list of applications to be migrated, review the list and work with each application owner on
a list of settings to be migrated. For each setting, determine whether it needs to be migrated or if the default
settings are adequate. Then, determine where the setting is located; for example, in the registry or in an .ini file.
Next, consider the following questions to determine what needs to be done to migrate the setting successfully:
Is the destination version of the application newer than the source version?
Do these settings work with the new version?
Do the settings need to be moved or altered?
Can the first-run process force the application to appear as if it had run already? If so, does this work
correctly, or does it break the application?
After answering these questions, create a custom .xml file to migrate settings. Work with the application owner
to develop test cases and to determine the file types that need to be migrated for the application.
Related topics
Determine What to Migrate
Identify Operating System Settings
5/9/2020 • 2 minutes to read • Edit Online
When planning for your migration, you should identify which operating system settings you want to migrate
and to what extent you want to create a new standard environment on each of the computers. User State
Migration Tool (USMT) 10.0 enables you to migrate select settings and keep the default values for all others. The
operating system settings include the following:
Apperance.
This includes items such as wallpaper, colors, sounds, and the location of the taskbar.
Action.
This includes items such as the key-repeat rate, whether double-clicking a folder opens it in a new
window or the same window, and whether you need to single-click or double-click an item to open it.
Internet.
These are the settings that let you connect to the Internet and control how your browser operates. This
includes items such as your home page URL, favorites, bookmarks, cookies, security settings, dial-up
connections, and proxy settings.
Mail.
This includes the information that you need to connect to your mail server, your signature file, views, mail
rules, local mail, and contacts.
To help you decide which settings to migrate, you should consider any previous migration experiences as well as
the results of any surveys and tests that you have conducted. You should also consider the number of help-desk
calls related to operating-system settings that you have had in the past, and are able to handle in the future. Also
decide how much of the new operating-system functionality you want to take advantage of.
You should migrate any settings that users need to get their jobs done, those that make the work environment
comfortable, and those that will reduce help-desk calls after the migration. Although it is easy to dismiss
migrating user preferences, you should consider that users can spend a significant amount of time restoring
items such as wallpaper, screen savers, and other customizable user-interface features. Most users do not
remember how these settings were applied. Although these items are not critical to migration success,
migrating these items increases user productivity and overall satisfaction of the migration process.
Note For more information about how to change the operating-system settings that are migrated, see User
State Migration Tool (USMT) How-to topics.
For information about the operating-system settings that USMT migrates, see What Does USMT Migrate?
Related topics
Determine What to Migrate
Identify File Types, Files, and Folders
11/2/2020 • 2 minutes to read • Edit Online
When planning for your migration, if not using MigDocs.xml, you should identify the file types, files, folders, and
settings that you want to migrate. First, you should determine the standard file locations on each computer, such
as My Documents. , C:\Data , and company-specified locations, such as \EngineeringDrafts . Next, you
should determine and locate the non-standard locations. For non-standard locations, consider the following:
File types . Consider which file types need to be included and excluded from the migration. You can
create this list based on common applications used in your organization. Applications normally use
specific file name extensions. For example, Microsoft Office Word primarily uses .doc, .docx and .dotx file
name extension. However, it also uses other file types, such as templates (.dot files), on a less frequent
basis.
Excluded locations . Consider the locations on the computer that should be excluded from the
migration (for example, %WINDIR% and Program Files).
New locations . Decide where files should be migrated to on the destination computer for example, \My
Documents, a designated folder, or a folder matching the files' name and location on the source
computer. For example, you might have shared data on source machine or you might wish to clean up
documents outside the user profiles on the source system. Identify any data that needs to be redirected to
a new location in the apply phase. This can be accomplished with location modify rules.
Once you have verified which files and file types that the end users work with regularly, you will need to locate
them. Files may be saved to a single folder or scattered across a drive. A good starting point for finding files
types to include is to look at the registered file types on the computer.
To find the registered file types on a computer running Windows 7 or Windows 8
1. Click Star t . Open Control Panel , click Control Panel Home , and click Programs .
2. Click Default Programs , and click Associate a file type or protocol with a program .
3. On this screen, the registered file types are displayed.
For more information about how to change the file types, files, and folders that are migrated when you specify
the MigUser.xml file, see User State Migration Tool (USMT) How-to topics.
Related topics
Determine What to Migrate
Test Your Migration
3/26/2021 • 2 minutes to read • Edit Online
Always test your migration plan in a controlled laboratory setting before you deploy it to your entire
organization. In your test environment, you need at least one computer for each type of operating system from
which you are migrating data.
After you have thoroughly tested the entire migration process on a single computer running each of your
source operating systems, conduct a pilot migration with a small group of users. After migrating a few typical
user states to the intermediate store, note the space required and adjust your initial calculations accordingly. For
details about estimating the space needed for your migration, see Estimate Migration Store Size. You might also
need to adjust the registry-setting and file-location information in your migration-rule files. If you make
changes, test the migration again. Then verify that all data and settings have migrated as expected. A pilot
migration also gives you an opportunity to test your space estimates for the intermediate store.
If your test migration encounters any errors, examine the ScanState and LoadState logs to obtain the exact User
State Migration Tool (USMT) 10.0 return code and associated error messages or Windows application
programming interface (API) error message. For more information about USMT return codes and error
messages, see Return Codes. You can also obtain more information about a Windows API error message by
typing net helpmsg and the error message number on the command line.
In most cases, the ScanState and LoadState logs indicate why a USMT migration is failing. We recommend that
you use the /v :5 option when testing your migration. This verbosity level can be adjusted in a production
migration. Reducing the verbosity level might make it more difficult to diagnose failures that are encountered
during production migrations. You can use a higher verbosity level if you want the log files output to go to a
debugger.
Note Running the ScanState and LoadState tools with the /v :5 option creates a detailed log file. Although this
option makes the log file large, it is helpful in determining where migration errors occurred.
After you have determined that the pilot migration successfully migrated the specified files and settings, you are
ready to add USMT to the server that is running Microsoft Endpoint Configuration Manager, or a non-Microsoft
management technology. For more information, see Manage user state in Configuration Manager.
Note For testing purposes, you can create an uncompressed store using the /hardlink /nocompress option.
When compression is disabled, the ScanState tool saves the files and settings to a hidden folder named "File" at
StorePath\USMT. You can use the uncompressed store to view what USMT has stored or to troubleshoot a
problem, or you can run an antivirus utility against the files. Additionally, you can also use the /listfiles
command-line option and the diagnostic log to list the files that were gathered and to troubleshoot problems
with your migration.
Related topics
Plan Your Migration
Log Files
User State Migration Tool (USMT) Command-line
Syntax
11/2/2020 • 2 minutes to read • Edit Online
The User State Migration Tool (USMT) 10.0 migrates user files and settings during large deployments of
Windows. To improve and simplify the migration process, USMT captures desktop, network, and application
settings in addition to a user's files. USMT then migrates these items to a new Windows installation.
In This Section
ScanState Syntax Lists the command-line options for using the ScanState
tool.
LoadState Syntax Lists the command-line options for using the LoadState
tool.
UsmtUtils Syntax Lists the command-line options for using the UsmtUtils
tool.
ScanState Syntax
5/5/2021 • 21 minutes to read • Edit Online
The ScanState command is used with the User State Migration Tool (USMT) 10.0 to scan the source computer,
collect the files and settings, and create a store.
In This Topic
Before You Begin
Syntax
Storage Options
Migration Rule Options
Monitoring Options
User Options
Encrypted File Options
Incompatible Command-Line Options
Syntax
This section explains the syntax and usage of the ScanState command-line options. The options can be
specified in any order. If the option contains a parameter, you can use either a colon or a space separator.
The ScanState command's syntax is:
To create an encrypted store using the Config.xml file and the default migration .xml files, use:
scanstate \\server\share\migration\mystore /i:migapp.xml /i:migdocs.xml /o /config:config.xml /v:13 /encrypt
/key:"mykey"
Storage Options
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
/apps Scans the image for apps and includes them and their
associated registry settings.
/encr ypt [{/key: <KeyString> | /keyfile :<file>]} Encrypts the store with the specified key. Encryption is
disabled by default. With this option, you will need to
specify the encryption key-in one of the following ways:
/key: KeyString specifies the encryption key. If
there is a space in KeyString, you will need to
surround KeyString with quotation marks.
/keyfile: FilePathAndName specifies a text (.txt)
file that contains the encryption key.
We recommend that KeyString be at least eight
characters long, but it cannot exceed 256 characters. The
/key and /keyfile options cannot be used on the same
command line. The /encr ypt and /nocompress
options cannot be used on the same command line.
Important
You should use caution with this option, because
anyone who has access to the ScanState command-
line script will also have access to the encryption key.
/offline: "path to an offline.xml file" This option is used to define a path to an offline .xml file
that might specify other offline migration options, for
example, an offline Windows directory or any domain or
folder redirection required in your migration.
/offlinewindir : "path to a Windows directory" This option specifies the offline Windows directory that
the ScanState command gathers user state from. The
offline directory can be Windows.old when you run the
ScanState command in Windows or a Windows
directory when you run the ScanState command in
WinPE.
/offlinewinold: "Windows.old directory" This command-line option enables the offline migration
mode and starts the migration from the location
specified. It is only intended to be used in Windows.old
migration scenarios, where the migration is occurring
from a Windows.old directory.
/auto: path to script files This option enables you to specify the location of the
default .xml files and then begin the migration. If no
path is specified, USMT will reference the directory
where the USMT binaries are located. The /auto option
has the same effect as using the following options: /i:
MigDocs.xml /i:MigApp.xml /v:5 .
/genmigxml: path to a file This option specifies that the ScanState command
should use the document finder to create and export an
.xml file that defines how to migrate all of the files on the
computer on which the ScanState command is running.
/localonly Migrates only files that are stored on the local computer,
regardless of the rules in the .xml files that you specify
on the command line. You should use this option when
you want to exclude the data from removable drives on
the source computer, such as USB flash drives (UFDs),
some external hard drives, and so on, and when there
are network drives mapped on the source computer. If
the /localonly option is not specified, then the
ScanState command will copy files from these
removable or network drives into the store.
Anything that is not considered a fixed drive by the OS
will be excluded by /localonly . In some cases large
external hard drives are considered fixed drives. These
drives can be explicitly excluded from migration by using
a custom.xml file. For more information about how to
exclude all files on a specific drive, see Exclude Files and
Settings.
The /localonly command-line option includes or
excludes data in the migration as identified in the
following table:
D RIVE TY P E B E H AV I O R W I T H / L O C A L O N LY
Monitoring Options
USMT provides several options that you can use to analyze problems that occur during migration.
NOTE
The ScanState log is created by default, but you can specify the name and location of the log with the /l option.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
/listfiles :<FileName> You can use the /listfiles command-line option with the
ScanState command to generate a text file that lists all
of the files included in the migration.
/l: [Path]FileName Specifies the location and name of the ScanState log.
You cannot store any of the log files in StorePath. Path
can be either a relative or full path. If you do not specify
the Path variable, then the log will be created in the
current directory. You can use the /v option to adjust
the amount of output.
If you run the ScanState or LoadState commands
from a shared network resource, you must specify this
option or USMT will fail with the following error: "USMT
was unable to create the log file(s)". To fix this issue, use
the /l: scan.log command.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
LEVEL E X P L A N AT I O N
1 Enables verbose
output.
9 Enables verbose
output to a debugger.
13 Enables verbose,
status, and debugger
output.
For example:
scanstate \server\share\migration\mystore /v:13
/i:migdocs.xml /i:migapp.xml
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
/progress :[Path</em>]FileName Creates the optional progress log. You cannot store any
of the log files in StorePath. Path can be either a relative
or full path. If you do not specify the Path variable, then
FileName will be created in the current directory.
For example:
scanstate /i:migapp.xml /i:migdocs.xml
\server\share\migration\mystore
/progress:prog.log /l:scanlog.log
/r : <TimesToRetry> (Retr y)
Specifies the number of times to retry when an error
occurs while saving the user state to a server. The
default is three times. This option is useful in
environments where network connectivity is not reliable.
While storing the user state, the /r option will not be
able to recover data that is lost due to a network-
hardware failure, such as a faulty or disconnected
network cable, or when a virtual private network (VPN)
connection fails. The retry option is intended for large,
busy networks where connectivity is satisfactory, but
communication latency is a problem.
/p:"C:\MigrationStoreSize.xml"
User Options
By default, all users are migrated. The only way to specify which users to include and exclude is by using the
following options. You cannot exclude users in the migration .xml files or using the Config.xml file. For more
information, see Identify Users and Migrate User Accounts.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
Note
If a user is specified for inclusion with the /ui option,
and also is specified to be excluded with either the /ue
or /uel options, the user will be included in the
migration.
For example:
To include only User2 from the Fabrikam domain,
type:
/ue:*\* /ui:fabrikam\user2
Note
The /uel option is not valid in offline migrations.
Exclude the user named User One in the Fabrikam /ue:"fabrikam\user one"
domain.
B EH AVIO R C OMMAND
Include only User2 from the Fabrikam domain and /ue:*\* /ui:fabrikam\user2
exclude all other users.
Include only the local user named User1 and exclude all /ue:*\* /ui:user1
other users.
Include only the domain users from Contoso, except This behavior cannot be completed using a single
Contoso\User1. command. Instead, to migrate this set of users, you will
need to specify the following:
On the ScanState command line, type:
/ue:*\* /ui:contoso\*
NOTE
EFS certificates will be migrated automatically when migrating to Windows 7, Windows 8 or Windows 10. Therefore, you
should specify the /efs:copyraw option with the ScanState command to migrate the encrypted files
Cau t i on
Take caution when migrating encrypted files. If you migrate an encrypted file without also migrating the
certificate, end users will not be able to access the file after the migration.
C O M M A N D- L IN E O P T IO N EXP L A N AT IO N
/efs:hardlink Creates a hard link to the EFS file instead of copying it.
Use only with the /hardlink and the /nocompress
options.
Important
All files must be encrypted if the parent folder is
encrypted. If the encryption attribute on a file inside an
encrypted folder has been removed, the file will be
encrypted during the migration using the credentials
of the account used to run the LoadState tool. For
more information, see Migrate EFS Files and
Certificates.
C O M M A N D- L IN E
O P T IO N / K EY F IL E / N O C O M P RESS / GEN C O N F IG /ALL
/i
/o
/v
/nocompress N/A
/localonly X
/key X X
C O M M A N D- L IN E
O P T IO N / K EY F IL E / N O C O M P RESS / GEN C O N F IG /ALL
/keyfile N/A X
/l
/progress X
/r X
/w X
/c X
/p X N/A
/all X
/ui X X
/ue X X
/uel X X
/efs :<option> X
/genconfig N/A
/config X
<StorePath> X
NOTE
You must specify either the /key or /keyfile option with the /encr ypt option.
Related topics
XML Elements Library
LoadState Syntax
5/5/2021 • 14 minutes to read • Edit Online
This topic discusses the LoadState command syntax and options available with it.
In this topic
Before You Begin
Syntax
Storage Options
Migration Rule Options
Monitoring Options
User Options
Incompatible Command-Line Options
Syntax
This section explains the syntax and usage of the command-line options available when you use the LoadState
command. The options can be specified in any order. If the option contains a parameter, you can specify either a
colon or space separator.
The LoadState command's syntax is:
loadstate StorePath [/i:[Path\]FileName] [/v:VerbosityLevel] [/nocompress] [/decrypt /key:KeyString|/keyfile:
[Path\]FileName] [/l:[Path\]FileName] [/progress:[Path\]FileName] [/r:TimesToRetry] [/w:SecondsToWait] [/c]
[/all] [/ui:[DomainName|ComputerName\]UserName] [/ue:[[DomainName|ComputerName\]UserName]
[/uel:NumberOfDays|YYYY/MM/DD|0] [/md:OldDomain:NewDomain] [/mu:OldDomain\OldUserName:
[NewDomain\]NewUserName] [/lac:[Password]] [/lae] [/config:[Path\]FileName] [/?|help]
For example, to decrypt the store and migrate the files and settings to a computer running Windows 7 type the
following on the command line:
loadstate \\server\share\migration\mystore /i:migapp.xml /i:migdocs.xml /v:13 /decrypt /key:"mykey"
Storage Options
USMT provides the following options that you can use to specify how and where the migrated data is stored.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
StorePath Indicates the folder where the files and settings data are
stored. You must specify StorePath when using the
LoadState command. You cannot specify more than
one StorePath.
/decr ypt /key :KeyString Decrypts the store with the specified key. With this
option, you will need to specify the encryption key in
or one of the following ways:
/decr ypt /key :"Key String" /key: KeyString specifies the encryption key. If
or there is a space in KeyString, you must surround
the argument with quotation marks.
/decr ypt /keyfile :[Path</em>]FileName
/keyfile: FilePathAndName specifies a text (.txt)
file that contains the encryption key
KeyString cannot exceed 256 characters.
The /key and /keyfile options cannot be used on the
same command line.
The /decr ypt and /nocompress options cannot be
used on the same command line.
Important
Use caution with this option, because anyone who has
access to the LoadState command-line script will also
have access to the encryption key.
For example:
loadstate /i:migapp.xml /i:migdocs.xml
\server\share\migration\mystore /decrypt
/key:mykey
/decr ypt: "encryption strength" The /decr ypt option accepts a command-line
parameter to define the encryption strength specified
for the migration store encryption. For more information
about supported encryption algorithms, see Migration
Store Encryption.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
/i:[Path]FileName (include)
Specifies an .xml file that contains rules that define what
state to migrate. You can specify this option multiple
times to include all of your .xml files (MigApp.xml,
MigSys.xml, MigDocs.xml and any custom .xml files that
you create). Path can be either a relative or full path. If
you do not specify the Path variable, then FileName
must be located in the current directory.
For more information about which files to specify, see
the "XML files" section of the Frequently Asked
Questions topic.
/auto: "path to script files" This option enables you to specify the location of the
default .xml files and then launch your migration. If no
path is specified, USMT will use the directory where the
USMT binaries are located. The /auto option has the
same effect as using the following options:
/i:MigDocs.xml /i:MigApp.xml /v:5 .
Monitoring Options
USMT provides several command-line options that you can use to analyze problems that occur during
migration.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
/l: [Path]FileName Specifies the location and name of the LoadState log.
You cannot store any of the log files in StorePath. Path
can be either a relative or full path. If you do not specify
the Path variable, then the log will be created in the
current directory. You can specify the /v option to adjust
the amount of output.
If you run the LoadState command from a shared
network resource, you must specify this option or USMT
will fail with the error: "USMT was unable to create the
log file(s)". To fix this issue, use the /l:load.log option.
LEVEL E X P L A N AT I O N
1 Enables verbose
output.
9 Enables verbose
output to a debugger.
13 Enables verbose,
status, and debugger
output.
For example:
loadstate \server\share\migration\mystore /v:5
/i:migdocs.xml /i:migapp.xml
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
/progress: [Path</em>]FileName Creates the optional progress log. You cannot store any
of the log files in StorePath. Path can be either a relative
or full path. If you do not specify the Path variable, then
FileName will be created in the current directory.
For example:
loadstate /i:migapp.xml /i:migdocs.xml
\server\share\migration\mystore
/progress:prog.log /l:loadlog.log
/r : <TimesToRetry> (Retr y)
Specifies the number of times to retry when an error
occurs while migrating the user state from a server. The
default is three times. This option is useful in
environments where network connectivity is not reliable.
While restoring the user state, the /r option will not
recover data that is lost due to a network-hardware
failure, such as a faulty or disconnected network cable,
or when a virtual private network (VPN) connection fails.
The retry option is intended for large, busy networks
where connectivity is satisfactory, but communication
latency is a problem.
User Options
By default, all users are migrated. The only way to specify which users to include and exclude is by using the
following options. You cannot exclude users in the migration .xml files or by using the Config.xml file. For more
information, see Identify Users.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
* /ui:corporate\user2
Note
If a user is specified for inclusion with the /ui option,
and also is specified to be excluded with either the
/ue or /uel options, the user will be included in the
migration.
Note
The /uel option is not valid in offline migrations.
Examples:
/uel:0 migrates accounts that were logged on
to the source computer when the ScanState
command was run.
/uel:90 migrates users who have logged on,
or whose accounts have been otherwise
modified, within the last 90 days.
/uel:1 migrates users whose accounts have
been modified within the last 24 hours.
/uel:2002/1/15 migrates users who have
logged on or whose accounts have been
modified since January 15, 2002.
For example:
loadstate /i:migapp.xml /i:migdocs.xml
\server\share\migration\mystore /uel:0
Note
If you specify an OldDomain that did not exist on the
source computer, the LoadState command will
appear to complete successfully, without an error or
warning. However, in this case, users will not be moved
to NewDomain but will remain in their original domain.
For example, if you misspell "contoso" and you specify
"/md:contso:fabrikam", the users will remain in contoso
on the destination computer.
For example:
loadstate /i:migapp.xml /i:migdocs.xml
\server\share\migration\mystore
/progress:prog.log /l:load.log
/md:contoso:fabrikam
/mu: OldDomain<em>OldUserName: Specifies a new user name for the specified user. If the
[NewDomain]NewUserName store contains more than one user, you can specify
multiple /mu options. You cannot use wildcard
or characters with this option.
/mu: OldLocalUserName:NewDomain<em>NewUserNa For example:
me
loadstate /i:migapp.xml /i:migdocs.xml
\server\share\migration\mystore
/progress:prog.log /l:load.log
/mu:contoso\user1:fabrikam\user1
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
Caution
Use the Password variable with caution because it is
provided in plain text and can be obtained by anyone
with access to the computer that is running the
LoadState command.
Also, if the computer has multiple users, all migrated
users will have the same password.
For example:
loadstate /i:migapp.xml /i:migdocs.xml
\server\share\migration\mystore
B EH AVIO R C OMMAND
Exclude the user named User One in the Corporate /ue:"corporate\user one"
domain.
B EH AVIO R C OMMAND
Include only User2 from the Fabrikam domain and /ue:* /ui:fabrikam\user2
exclude all other users.
Include only the local user named User1 and exclude all /ue:* /ui:user1
other users.
Include only the domain users from Contoso, except This behavior cannot be completed using a single
Contoso\User1. command. Instead, to migrate this set of users, you will
need to specify the following:
Using the ScanState command-line tool, type:
/ue:* /ui:contoso
/i
/v
/nocompress N/A X
/key X X
/keyfile N/A X
/l
/progress X
/r X
/w X
/c X
/p X N/A
/all X
/ui X X
/ue X X
/uel X X
/genconfig N/A
/config X
C O M M A N D- L IN E
O P T IO N / K EY F IL E / N O C O M P RESS / GEN C O N F IG /ALL
StorePath
/md
/mu
/lae
/lac
Note
You must specify either the /key or /keyfile option with the /encr ypt option.
Related topics
XML Elements Library
UsmtUtils Syntax
11/2/2020 • 6 minutes to read • Edit Online
This topic describes the syntax for the utilities available in User State Migration Tool (USMT) 10.0 through the
command-line interface. These utilities:
Improve your ability to determine cryptographic options for your migration.
Assist in removing hard-link stores that cannot otherwise be deleted due to a sharing lock.
Verify whether the catalog file or any of the other files in the compressed migration store have become
corrupted.
Extract files from the compressed migration store when you migrate files and settings to the destination
computer.
In This Topic
Usmtutils.exe
Verify Options
Extract Options
Usmtutils.exe
The following table lists command-line options for USMTutils.exe. The sections that follow provide further
command-line options for the /verify and the /extract options.
The syntax for UsmtUtils.exe is:
usmtutils [/ec | /rd <storeDir> | /verify <filepath> [options] | /extract <filepath> <destinationPath> [options]]
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
Verify Options
Use the /verify option when you want to determine whether a compressed migration store is intact or whether
it contains corrupted files or a corrupted catalog. For more information on how to use the /verify option, see
Verify the Condition of a Compressed Migration Store.
The syntax for /verify is:
usmtutils /verify[:<reportType>] <filePath> [/l:<logfile>] [/v:VerbosityLevel] [/decrypt [:<AlgID>]
{/key:<keystring> | /keyfile:<filename>}]
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
LEVEL E X P L A N AT I O N
1 Enables verbose
output.
9 Enables verbose
output to a debugger.
13 Enables verbose,
status, and debugger
output.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
/decr ypt <AlgID>/:<KeyString> Specifies that the /encr ypt option was used to create
the migration store with the ScanState tool. To decrypt
or the migration store, specify a /key or /keyfile option as
/decr ypt <AlgID>/:<“Key String”> follows:
or <AlgID> specifies the cryptographic algorithm
that was used to create the migration store on
/decr ypt: <AlgID>/keyfile :<FileName> the ScanState command line. If no algorithm is
specified, ScanState and UsmtUtils use the 3DES
algorithm as a default.
<AlgID> valid values include: AES_128, AES_192,
AES_256, 3DES, or 3DES_112.
/key: <KeyString> specifies the encryption key. If
there is a space in <KeyString>, you must
surround the argument with quotation marks.
/keyfile : <FileName> specifies the location and
name of a text (.txt) file that contains the
encryption key.
For more information about supported encryption
algorithms, see Migration Store Encryption
Extract Options
Use the /extract option to recover files from a compressed USMT migration store if it will not restore normally
with loadstate. For more information on how to use the /extract option, see Extract Files from a Compressed
USMT Migration Store.
The syntax for /extract is:
/extract <filePath> <destinationPath> [/i:<includePattern>] [/e: <excludePattern>] [/l: <logfile>] [/v:
VerbosityLevel>] [/decrypt[:<AlgID>] {key: <keystring> | /keyfile: <filename>}] [/o]
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
<destinationPath> Path to the folder where the tool puts the individual files.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
LEVEL E X P L A N AT I O N
1 Enables verbose
output.
9 Enables verbose
output to a debugger.
13 Enables verbose,
status, and debugger
output.
C O M M A N D- L IN E O P T IO N DESC RIP T IO N
/decr ypt <AlgID>/key :<KeyString> Specifies that the /encr ypt option was used to create
the migration store with the ScanState tool. To decrypt
or the migration store, you must also specify a /key or
/decr ypt <AlgID>/:<“Key String”> /keyfile option as follows:
or <AlgID> specifies the cryptographic algorithm
that was used to create the migration store on
/decr ypt: <AlgID>/keyfile :<FileName> the ScanState command line. If no algorithm is
specified, ScanState and UsmtUtils use the 3DES
algorithm as a default.
<AlgID> valid values include: AES_128, AES_192,
AES_256, 3DES, or 3DES_112.
/key : <KeyString> specifies the encryption key. If
there is a space in <KeyString>, you must
surround the argument with quotation marks.
/keyfile :<FileName> specifies a text (.txt) file
that contains the encryption key
For more information about supported encryption
algorithms, see Migration Store Encryption.
Related topics
User State Migration Tool (USMT) Command-line Syntax
Return Codes
USMT XML Reference
11/2/2020 • 2 minutes to read • Edit Online
This section contains topics that you can use to work with and to customize the migration XML files.
In This Section
Understanding Migration XML Files Provides an overview of the default and custom
migration XML files and includes guidelines for creating
and editing a customized version of the MigDocs.xml file.
Config.xml File Describes the Config.xml file and policies concerning its
configuration.
Customize USMT XML Files Describes how to customize USMT XML files.
Custom XML Examples Gives examples of XML files for various migration
scenarios.
Conflicts and Precedence Describes the precedence of migration rules and how
conflicts are handled.
XML File Requirements Describes the requirements for custom XML files.
XML Elements Library Describes the XML elements and helper functions for
authoring migration XML files to use with USMT.
Understanding Migration XML Files
3/5/2021 • 13 minutes to read • Edit Online
You can modify the behavior of a basic User State Migration Tool (USMT)10.0 migration by using XML files;
these files provide instructions on where and how the USMT tools should gather and apply files and settings.
USMT includes three XML files that you can use to customize a basic migration: the MigDocs.xml and
MigUser.xml files, which modify how files are discovered on the source computer, and the MigApps.xml file,
which is required in order to migrate supported application settings. You can also create and edit custom XML
files and a Config.xml file to further customize your migration.
This topic provides an overview of the default and custom migration XML files and includes guidelines for
creating and editing a customized version of the MigDocs.xml file. The MigDocs.xml file uses the new
GenerateDocPatterns function available in USMT to automatically find user documents on a source computer.
In This topic
Overview of the Config.xml file
Overview of the MigApp.xml file
Overview of the MigDocs.xml file
Overview of the MigUser.xml file
Using multiple XML files
XML rules for migrating user files
The GenerateDocPatterns function
Understanding the system and user context
Sample migration rules for customized versions of XML files
Exclude rules usage examples
Include rules usage examples
Next Steps
Custom XML files Application settings, user profile settings, or user files,
beyond the rules contained in the other XML files.
For example, you can use all of the XML migration file types for a single migration, as in the following example:
cd /d <USMTpath>
scanstate.exe /genmigxml: <filepath.xml>
Where <USMTpath> is the location on your source computer where you have saved the USMT files and
tools, and <filepath.xml> is the full path to a file where you can save the report. For example, type:
cd /d c:\USMT
scanstate.exe /genmigxml:"C:\Documents and Settings\USMT Tester\Desktop\genMig.xml"
<pattern
type="File">C:\Program
Files\Microsoft Office[.doc]
</pattern>
Usage:
MigXmlHelper.GenerateDocPatterns ("<ScanProgramFiles>", "<IncludePatterns>", "<SystemDrive>")
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<script>MigXmlHelper.GenerateDocPatterns ("FALSE","TRUE","TRUE")</script>
</objectSet>
</include>
To create an include rule to gather files for registered extensions from the %PROGRAMFILES% directory:
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<script>MigXmlHelper.GenerateDocPatterns ("TRUE","TRUE","FALSE")</script>
</objectSet>
</include>
<exclude filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<script>MigXmlHelper.GenerateDocPatterns ("FALSE","FALSE","FALSE")</script>
</objectSet>
</exclude>
Rule 1
<pattern type="File">d:\new folder[new text
document.txt]</pattern>
Rule 2
<pattern type="File">d:\new folder[]</pattern>
To exclude the new text document.txt file as well as any .txt files in "new folder", you can do the following:
Example 1: Exclude all .txt files in a folder
To exclude Rule 1, there needs to be an exact match of the file name. However, for Rule 2, you can create a
pattern to exclude files by using the file name extension.
<exclude>
<objectSet>
<pattern type="File">D:\Newfolder\[new text document.txt]</pattern>
<pattern type="File">D:\New folder\*[*.txt]</pattern>
</objectSet>
</exclude>
Example 2: Use the UnconditionalExclude element to give a rule precedence over include rules
If you do not know the file name or location of the file, but you do know the file name extension, you can use the
GenerateDrivePatterns function. However, the rule will be less specific than the default include rule generated
by the MigDocs.xml file, so it will not have precedence. You must use the <UnconditionalExclude> element to
give this rule precedence over the default include rule. For more information about the order of precedence for
XML migration rules, see Conflicts and Precedence.
<unconditionalExclude>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("*[*.txt]", "Fixed")</script>
</objectSet>
</unconditionalExclude>
For more examples of exclude rules that you can use in custom migration XML files, see Exclude Files and
Settings.
Include rules usage examples
The application data directory is the most common location that you would need to add an include rule for. The
GenerateDocPatterns function excludes this location by default. If your company uses an application that
saves important data to this location, you can create include rules to migrate the data. For example, the default
location for .pst files is: %CSIDL_LOCAL_APPDATA%\Microsoft\Outlook . The Migapp.xml file contains migration rules
to move only those .pst files that are linked to Microsoft Outlook. To include .pst files that are not linked, you can
do the following:
Example 1: Include a file name extension in a known user folder
This rule will include .pst files that are located in the default location, but are not linked to Microsoft Outlook.
Use the user context to run this rule for each user on the computer.
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_LOCAL_APPDATA%\Microsoft\Outlook\*[*.pst]</pattern>
</objectSet>
</include>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_PROGRAM_FILES%\*[*.pst]</pattern>
</objectSet>
</include>
For more examples of include rules that you can use in custom migration XML files, see Include Files and
Settings.
Note For more information about the order of precedence for XML migration rules, see Conflicts and
Precedence.
Next steps
You can include additional rules for the migration in the MigDocs.xml file or other XML migration files. For
example, you can use the <locationModify> element to move files from the folder where they were gathered to
a different folder, when they are applied to the destination computer.
You can use an XML schema (MigXML.xsd) file to validate the syntax of your customized XML files. For more
information, see USMT Resources.
Related topics
Exclude Files and Settings
Include Files and Settings
Config.xml File
3/5/2021 • 9 minutes to read • Edit Online
Config.xml File
The Config.xml file is an optional User State Migration Tool (USMT) 10.0 file that you can create using the
/genconfig option with the ScanState.exe tool. If you want to include all of the default components, and do not
want to change the default store-creation or profile-migration behavior, you do not need to create a Config.xml
file.
However, if you are satisfied with the default migration behavior defined in the MigApp.xml, MigUser.xml and
MigDocs.xml files, but you want to exclude certain components, you can create and modify a Config.xml file and
leave the other .xml files unchanged. For example, you must create and modify the Config.xml file if you want to
exclude any of the operating-system settings that are migrated. It is necessary to create and modify this file if
you want to change any of the default store-creation or profile-migration behavior.
The Config.xml file has a different format than the other migration .xml files, because it does not contain any
migration rules. It contains only a list of the operating-system components, applications, user documents that
can be migrated, as well as user-profile policy and error-control policy. For this reason, excluding components
using the Config.xml file is easier than modifying the migration .xml files, because you do not need to be familiar
with the migration rules and syntax. However, you cannot use wildcard characters in this file.
For more information about using the Config.xml file with other migration files, such as the MigDocs.xml and
MigApps.xml files, see Understanding Migration XML Files.
Note To exclude a component from the Config.xml file, set the migrate value to "no" . Deleting the XML tag for
the component from the Config.xml file will not exclude the component from your migration.
In this topic
In USMT there are new migration policies that can be configured in the Config.xml file. For example, you can
configure additional <ErrorControl> , <ProfileControl> , and <HardLinkStoreControl> options. The
following elements and parameters are for use in the Config.xml file only.
<Policies>
<ErrorControl>
<fatal>
<fileError>
<nonfatal>
<registryError>
<HardLinkStoreControl>
<fileLocked>
<createHardLink>
<errorHardLink>
<ProfileControl>
<localGroups>
<mappings>
<changeGroup>
<include>
<exclude>
Sample Config.xml File
<Policies>
The <Policies> element contains elements that describe the policies that USMT follows while creating a
migration store. Valid children of the <Policies> element are <ErrorControl> and
<HardLinkStoreControl> . The <Policies> element is a child of <Configuration> .
Syntax: <Policies> </Policies>
<ErrorControl>
The <ErrorControl> element is an optional element you can configure in the Config.xml file. The configurable
<ErrorControl> rules support only the environment variables for the operating system that is running and the
currently logged-on user. As a workaround, you can specify a path using the (*) wildcard character.
Number of occurrences : Once for each component
Parent elements : The <Policies> element
Child elements : The <fileError> and <registr yError> element
Syntax: <ErrorControl></ErrorControl>
The following example specifies that all locked files, regardless of their location (including files in C:\Users),
should be ignored. However, the migration fails if any file in C:\Users cannot be accessed because of any other
reason. In the example below, the <ErrorControl> element ignores any problems in migrating registry keys
that match the supplied pattern, and it resolves them to an Access denied error.
Additionally, the order in the <ErrorControl> section implies priority. In this example, the first <nonFatal>
tag takes precedence over the second <fatal> tag. This precedence is applied, regardless of how many tags are
listed.
<ErrorControl>
<fileError>
<nonFatal errorCode="33">* [*]</nonFatal>
<fatal errorCode="any">C:\Users\* [*]</fatal>
</fileError>
<registryError>
<nonFatal errorCode="5">HKCU\SOFTWARE\Microsoft\* [*]</nonFatal>
</registryError>
</ErrorControl>
Impor tant The configurable <ErrorControl> rules support only the environment variables for the operating
system that is running and the currently logged-on user. As a workaround, you can specify a path using the (*)
wildcard character.
<fatal>
The <fatal> element is not required.
Number of occurrences : Once for each component
Parent elements : <fileError> and <registr yError>
Child elements : None.
Syntax: <fatal errorCode="any"> <pattern> </fatal>
PA RA M ET ER REQ UIRED VA L UE
You use the <fatal> element to specify that errors matching a specific pattern should cause USMT to halt the
migration.
<fileError>
The <fileError> element is not required.
Number of occurrences : Once for each component
Parent elements : <ErrorControl>
Child elements : <nonFatal> and <fatal>
Syntax: <fileError></fileError>
You use the <fileError> element to represent the behavior associated with file errors.
<nonFatal>
The <nonFatal> element is not required.
Number of occurrences : Once for each component
Parent elements : The <fileError> and <registr yError> elements.
Child elements : None.
Syntax: <nonfatal errorCode="any"> <pattern> </nonFatal>
PA RA M ET ER REQ UIRED VA L UE
You use the <nonFatal> element to specify that errors matching a specific pattern should not cause USMT to
halt the migration.
<registryError>
The <registr yError> element is not required.
Number of occurrences : Once for each component
Parent elements : <ErrorControl>
Child elements : <nonfatal> and <fatal>
Syntax: <registryError></registryError>
PA RA M ET ER REQ UIRED VA L UE
You use the <registr yError> element to specify that errors matching a specific pattern should not cause USMT
to halt the migration.
<HardLinkStoreControl>
The <HardLinkStoreControl> element contains elements that describe how to handle files during the
creation of a hard-link migration store. Its only valid child is <fileLocked> .
Syntax: <HardLinkStoreControl> </HardLinkStoreControl>
The <HardLinkStoreControl> sample code below specifies that hard links can be created to locked files only
if the locked file resides somewhere under C:\Users\. Otherwise, a file-access error occurs when a locked file is
encountered that cannot be copied, even though is technically possible for the link to be created.
Impor tant The <ErrorControl> section can be configured to conditionally ignore file access errors, based on
the file’s location.
<Policy>
<HardLinkStoreControl>
<fileLocked>
<createHardLink>C:\Users\*</createHardLink>
<errorHardLink>C:\*</errorHardLink>
</fileLocked>
</HardLinkStoreControl>
<ErrorControl>
[…]
</ErrorControl>
</Policy>
<fileLocked>
The <fileLocked> element contains elements that describe how to handle files that are locked for editing. The
rules defined by the <fileLocked> element are processed in the order in which they appear in the XML file.
Syntax: <fileLocked></fileLocked>
<createHardLink>
The <createHardLink> element defines a standard MigXML pattern that describes file paths where hard links
should be created, even if the file is locked for editing by another application.
Syntax: <createHardLink> <pattern> </createHardLink>
<errorHardLink>
The <errorHardLink> element defines a standard MigXML pattern that describes file paths where hard links
should not be created if the file is locked for editing by another application. USMT will attempt to copy files
under these paths into the migration store. However, if that is not possible, Error_Locked is thrown. This is a
standard Windows application programming interface (API) error that can be captured by the <ErrorControl>
section to either cause USMT to skip the file or abort the migration.
Syntax: <errorHardLink> <pattern> </errorHardLink>
<ProfileControl>
This element is used to contain other elements that establish rules for migrating profiles, users, and policies
around local group membership during the migration. <ProfileMigration> is a child of <Configuration> .
Syntax: < ProfileControl> </ProfileControl>
<localGroups>
This element is used to contain other elements that establish rules for how to migrate local groups.
<localGroups> is a child of <ProfileControl> .
Syntax: <localGroups> </localGroups>
<mappings>
This element is used to contain other elements that establish mappings between groups.
Syntax: <mappings> </mappings>
<changeGroup>
This element describes the source and destination groups for a local group membership change during the
migration. It is a child of <localGroups> . The following parameters are defined:
PA RA M ET ER REQ UIRED VA L UE
The valid and required children of <changeGroup> are <include> and <exclude> . Although both can be
children at the same time, only one is required.
Syntax: <changeGroup From="Group1" To= "Group2"> </changeGroup>
<include>
This element specifies that its required child, <pattern>, should be included in the migration.
Syntax: <include>``</include>
<exclude>
This element specifies that its required child, <pattern>, should be excluded from the migration.
Syntax: <exclude>`` </exclude>
<fileLocked>
<createHardLink>c:\Users\* [*]</createHardLink>
<errorHardLink>C:\* [*]</errorHardLink>
</fileLocked>
-->
</HardLinkStoreControl>
</Policies>
<ProfileControl>
<!-- Example:
<localGroups>
<mappings>
<changeGroup from="Administrators" to="Users" appliesTo="MigratedUsers">
<include>
<pattern>DomainName1\Username</pattern>
</include>
<exclude>
<pattern>DomainName2\Username</pattern>
</exclude>
</changeGroup>
</mappings>
</localGroups>
-->
</ProfileControl>
</Configuration>
Related topics
USMT XML Reference
Customize USMT XML Files
5/5/2021 • 7 minutes to read • Edit Online
In This Topic
Overview
Migration .xml Files
Custom .xml Files
The Config.xml File
Examples
Additional Information
Overview
If you want the ScanState and LoadState tools to use any of the migration .xml files, specify these files at the
command line using the /i option. Because the ScanState and LoadState tools need the .xml files to control the
migration, specify the same set of .xml files for both the ScanState and LoadState commands. However, you
do not have to specify the Config.xml file with the /config option, unless you want to exclude some of the files
and settings that you migrated to the store. For example, you might want to migrate the My Documents folder
to the store but not to the destination computer. To do this, modify the Config.xml file and specify the updated
file with the LoadState command. Then the LoadState command will migrate only the files and settings that
you want to migrate.
If you leave out an .xml file from the LoadState command, all of the data in the store that was migrated with the
missing .xml files will be migrated. However, the migration rules that were specified with the ScanState
command will not apply. For example, if you leave out an .xml file, and it contains a rerouting rule such as:
MigsysHelperFunction.RelativeMove("c:\data", "%CSIDL_PERSONAL%") , USMT will not reroute the files, and they will
be migrated to C:\data.
To modify the migration, do one or more of the following.
Modify the migration .xml files. If you want to exclude a portion of a component—for example, you
want to migrate C:\ but exclude all of the .mp3 files—or if you want to move data to a new location on the
destination computer, modify the .xml files. To modify these files, you must be familiar with the migration
rules and syntax. If you want ScanState and LoadState to use these files, specify them at the command
line when each command is entered.
Create a custom .xml file. You can also create a custom .xml file to migrate settings for another
application, or to change the migration behavior to suit your needs. For ScanState and LoadState to use
this file, specify them on both command lines.
Create and modify a Config.xml file. Do this if you want to exclude an entire component from the
migration. For example, you can use a Config.xml file to exclude the entire My Documents folder, or
exclude the settings for an application. Excluding components using a Config.xml file is easier than
modifying the migration .xml files because you do not need to be familiar with the migration rules and
syntax. In addition, using a Config.xml file is the only way to exclude the operating system settings from
being migrated.
For more information about excluding data, see the Exclude Files and Settings topic.
The following command creates an encrypted store using the Config.xml file and the default migration
.xml files:
scanstate \\server\share\migration\mystore /i:migapp.xml /i:migdocs.xml /o /config:config.xml /v:5
/encrypt /key:"mykey"
The following command decrypts the store and migrates the files and settings:
loadstate \\server\share\migration\mystore /i:migapp.xml /i:migdocs.xml /v:5 /decrypt /key:"mykey"
Additional Information
For more information about how to change the files and settings that are migrated, see the User State
Migration Tool (USMT) How-to topics.
For more information about each .xml element, see the XML Elements Library topic.
For answers to common questions, see ".xml files" in the Frequently Asked Questions topic.
Related topics
User State Migration Tool (USMT) Command-line Syntax
USMT Resources
Custom XML Examples
11/2/2020 • 4 minutes to read • Edit Online
Note Because the tables in this topic are wide, you may need to adjust the width of its window.
In This Topic:
Example 1: Migrating an Unsupported Application
Example 2: Migrating the My Videos Folder
Example 3: Migrating Files and Registry Keys
Example 4: Migrating Specific Folders from Various Locations
C O DE B EH AVIO R
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/testfilemig">
<component type="Application" context="System">
<displayName>File Migration Test</displayName>
<role role="Data">
<rules context="System">
<include>
<objectSet>
<pattern type="File">%ProgramFiles%\USMTTestFolder\* [USMTTestFile.txt]</pattern>
<pattern type="File">%ProgramFiles%\USMTDIRTestFolder\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
<component type="System">
<displayName>Registry Migration Test</displayName>
<role role="Settings">
<rules context="UserAndSystem">
<include>
<objectSet>
<pattern type="Registry">HKCU\Software\USMTTESTKEY\* [MyKey]</pattern>
<pattern type="Registry">HKLM\Software\USMTTESTKEY\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
</migration>
When you include, exclude, and reroute files and settings, it is important to know how User State Migration Tool
(USMT) 10.0 deals with conflicts and precedence. When working with USMT, the following are the most
important conflicts and precedence guidelines to keep in mind.
If there are conflicting rules within a component, the most specific rule is applied. However,
the <unconditionalExclude> rule is an exception because it takes precedence over all others. Directory
names take precedence over file extensions. For examples, see What happens when there are conflicting
include and exclude rules? and the first example in Include and exclude precedence examples****later in
this topic.
Only rules inside the same component can affect each other, depending on specificity. Rules
that are in different components do not affect each other, except for the <unconditionalExclude> rule.
If the rules are equally specific, <exclude> takes precedence over <include>. For example, if
you use the <exclude> rule to exclude a file and use the <include> rule to include the same file, the file
will be excluded.
The ordering of components does not matter. It does not matter which components are listed in
which .xml file, because each component is processed independently of the other components across all
of the .xml files.
The ordering of the <include> and <exclude> rules within a component does not matter.
You can use the <unconditionalExclude> element to globally exclude data. This element
excludes objects, regardless of any other <include> rules that are in the .xml files. For example, you can
use the <unconditionalExclude> element to exclude all MP3 files on the computer or to exclude all files
from C:\UserData.
In this topic
General
What is the relationship between rules that are located within different components?
How does precedence work with the Config.xml file?
How does USMT process each component in an .xml file with multiple components?
How are rules processed?
How does USMT combine all of the .xml files that I specify on the command line?
The <include> and <exclude> rules
What happens when there are conflicting include and exclude rules?
<include> and <exclude> precedence examples
File collisions
What is the default behavior when there are file collisions?
How does the <merge> rule work when there are file collisions?
General
What is the relationship between rules that are located within different components?
Only rules inside the same component can affect each other, depending on specificity, except for the
<unconditionalExclude> rule. Rules that are in different components do not affect each other. If there is an
<include> rule in one component and an identical <exclude> rule in another component, the data will be
migrated because the two rules are independent of each other.
If you have an <include> rule in one component and a <locationModify> rule in another component for the
same file, the file will be migrated in both places. That is, it will be included based on the <include> rule, and it
will be migrated based on the <locationModify> rule.
The following .xml file migrates all files from C:\Userdocs, including .mp3 files, because the <exclude> rule is
specified in a separate component.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/UserDocs">
<component type="Documents" context="System">
<displayName>User Documents</displayName>
<role role="Data">
<rules>
<exclude>
<objectSet>
<pattern type="File">C:\Userdocs\* [*.mp3]</pattern>
</objectSet>
</exclude>
</rules>
</role>
</component>
<include>
<objectSet>
<pattern type="File">%CSIDL_PERSONAL%\* [*.doc] </pattern>
</objectSet>
</include>
How does USMT process each component in an .xml file with multiple components?
The ordering of components does not matter. Each component is processed independently of other components.
For example, if you have an <include> rule in one component and a <locationModify> rule in another
component for the same file, the file will be migrated in both places. That is, it will be included based on the
<include> rule, and it will be migrated based on the <locationModify> rule.
How are rules processed?
There are two broad categories of rules.
Rules that affect the behavior of both the ScanState and LoadState tools . For example, the
<include>, <exclude>, and <unconditionalExclude> rules are processed for each component in the .xml
files. For each component, USMT creates an include list and an exclude list. Some of the rules in the
component might be discarded due to specificity, but all of the remaining rules are processed. For each
<include> rule, USMT iterates through the elements to see if any of the locations need to be excluded.
USMT enumerates all of the objects and creates a list of objects it is going to collect for each user. Once
the list is complete, each of the objects is stored or migrated to the destination computer.
Rules that affect the behavior of only the LoadState tool . For example, the <locationModify>,
<contentModify>, and <destinationCleanup> rules do not affect ScanState. They are processed only with
LoadState. First, the LoadState tool determines the content and location of each component based on the
<locationModify>and <contentModify> rules. Then, LoadState processes all of the
<destinationCleanup> rules and deletes data from the destination computer. Lastly, LoadState applies the
components to the computer.
How does USMT combine all of the .xml files that I specify on the command line?
USMT does not distinguish the .xml files based on their name or content. It processes each component within
the files separately. USMT supports multiple .xml files only to make it easier to maintain and organize the
components within them. Because USMT uses a urlid to distinguish each component from the others, be sure
that each .xml file that you specify on the command line has a unique migration urlid.
<include>
<objectSet>
<pattern type="File">C:\Data\* [*]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File"> C:\* [*.mp3]</pattern>
</objectSet>
</exclude>
Include rule: <pattern Migrates all files and subfolders in The <exclude> rule does not affect
type="File">C:\Dir1* [] Dir1 (including all .txt files in C:). the migration because the
</pattern> <include> rule is more specific.
Exclude rule: <pattern
type="File">C:* [.txt]
</pattern>
Include rule: <pattern Migrates all files and subfolders in Both rules are processed as
type="File">C:\Dir1* [] C:\Dir1, except the .txt files in intended.
</pattern> C:\Dir1\Dir2 and its subfolders.
Exclude rule: <pattern
type="File">C:\Dir1\Dir2*
[.txt]</pattern>
Include rule: <pattern Migrates all files and subfolders in Both rules are processed as
type="File">C:\Dir1* [] C:\Dir1, except the .txt files in intended.
</pattern> C:\Dir1 and its subfolders.
Exclude rule: <pattern
type="File">C:\Dir1\ * [.txt]
</pattern>
Include rule: <pattern Nothing will be migrated. The rules are equally specific, so
type="File">C:\Dir1\Dir2* the <exclude> rule takes
[.txt]</pattern> precedence over the <include>
rule.
Exclude rule: <pattern
type="File">C:\Dir1\Dir2*
[.txt]</pattern>
Include rule: C:\Dir1* [.txt] Migrates the .txt files in Dir1 and Both rules are processed as
the .txt files from subfolders other intended.
Exclude rule: C:\Dir1\Dir2* than Dir2.
[]
No files are migrated from Dir2 or
its subfolders.
Include rule: C:\Dir1\Dir2* Migrates all files and subfolders of Both rules are processed as
[] Dir2, except the .txt files from Dir1 intended.
and any subfolders of Dir1
Exclude rule: C:\Dir1* [.txt] (including Dir2).
IF Y O U H AVE T H E F O L LO W IN G C O DE
IN DIF F EREN T C O M P O N EN T S RESULT IN G B EH AVIO R EXP L A N AT IO N
Component 1: Migrates all files and subfolders of Rules that are in different
C:\Dir1\ (including C:\Dir1\Dir2). components do not affect each
Include rule: <pattern other, except for the
type="File">C:\Dir1* [] <unconditionalExclude> rule.
</pattern> Therefore, in this example,
Exclude rule: <pattern although some .txt files were
type="File">C:\Dir1\Dir2* excluded when Component 1 was
[.txt]</pattern> processed, they were included
when Component 2 was
Component 2: processed.
Include rule: <pattern
type="File">C:\Dir1\Dir2*
[.txt]</pattern>
Exclude rule: <pattern
type="File">C:\Dir1* []
</pattern>
Component 1: Migrates all files and subfolders Both rules are processed as
from Dir2 except the .txt files in intended.
Include rule: C:\Dir1\Dir2* C:\Dir1 and its subfolders.
[]
Component 2:
Exclude rule: C:\Dir1* [.txt]
Component 1: Migrates all .txt files in Dir1 and Component 1 does not contain an
any subfolders. <include> rule, so the <exclude>
Exclude rule: C:\Dir1\Dir2* rule is not processed.
[]
Component 2:
Include rule: C:\Dir1* [.txt]
Include rule: Does not migrate DefaultColor. The rules are equally specific, so
HKLM\Software\Microsoft\ the <exclude> rule takes
Command Processor precedence over the <include>
[DefaultColor] rule.
Exclude rule:
HKLM\Software\Microsoft\
Command Processor
[DefaultColor]
IF Y O U H AVE T H E F O L LO W IN G C O DE
IN DIF F EREN T C O M P O N EN T S RESULT IN G B EH AVIO R EXP L A N AT IO N
Component 1: Migrates all the keys/values under Rules that are in different
HKLM\Software\Microsoft\Comma components do not affect each
Include rule: nd Processor. other, except for the
HKLM\Software\Microsoft\ <unconditionalExclude> rule.
Command Processor Therefore, in this example, the
[DefaultColor] objects that were excluded when
Exclude rule: Component 1 was processed were
HKLM\Software\Microsoft\ included when Component 2 was
Command Processor* [] processed.
Component 2:
Include rule:
HKLM\Software\Microsoft\
Command Processor* []
Exclude rule:
HKLM\Software\Microsoft\
Command Processor
[DefaultColor]
File collisions
What is the default behavior when there are file collisions?
If there is not a <merge> rule, the default behavior for the registry is for the source to overwrite the destination.
The default behavior for files is for the source to be renamed incrementally: for example,
OriginalFileName(1).OriginalExtension, OriginalFileName(2).OriginalExtension, and so on.
How does the <merge> rule work when there are file collisions?
When a collision is detected, USMT will select the most specific <merge> rule and apply it to resolve the conflict.
For example, if you have a <merge> rule for C:\* [*] set to sourcePriority() and another <merge> rule for
C:\subfolder\* [*] set to destinationPriority() , then USMT uses the destinationPriority() rule because it is the
most specific.
Example scenario
The source computer contains the following files:
C:\Data\SampleA.txt
C:\Data\SampleB.txt
C:\Data\Folder\SampleB.txt
The destination computer contains the following files:
C:\Data\SampleB.txt
C:\Data\Folder\SampleB.txt
You have a custom .xml file that contains the following code:
<include>
<objectSet>
<pattern type="File">c:\data\* [*]</pattern>
</objectSet>
</include>
For this example, the following table describes the resulting behavior if you add the code in the first column to
your custom .xml file.
IF Y O U SP EC IF Y T H E F O L LO W IN G C O DE RESULT IN G B EH AVIO R
Related topics
USMT XML Reference
General Conventions
11/2/2020 • 2 minutes to read • Edit Online
In This Topic
General XML Guidelines
Helper Functions
Helper Functions
You can use the XML helper functions in the XML Elements Library to change migration behavior. Before you use
these functions in an .xml file, note the following:
All of the parameters are strings
You can leave NULL parameters blank
As with parameters with a default value convention, if you have a NULL parameter at the end of a list, you
can leave it out. For example, the following function:
is equivalent to:
The encoded location used in all the helper functions is an unambiguous string
representation for the name of an object
It is composed of the node part, optionally followed by the leaf enclosed in square brackets. This makes a
clear distinction between nodes and leaves.
For example, specify the file C:\Windows\Notepad.exe: c:\Windows[Notepad.exe] . Similarly, specify the
directory C:\Windows\System32 like this: c:\Windows\System32 ; note the absence of the [] characters.
The registry is represented in a similar way. The default value of a registry key is represented as an empty
[] construct. For example, the default value for the HKLM\SOFTWARE\MyKey registry key is
HKLM\SOFTWARE\MyKey[] .
You specify a location pattern in a way that is similar to how you specify an actual location
The exception is that both the node and leaf part accept patterns. However, a pattern from the node does
not extend to the leaf.
For example, the pattern c:\Windows\\ * will match the \Windows directory and all subdirectories, but it
will not match any of the files in those directories. To match the files as well, you must specify
c:\Windows\*[*] .
Related topics
USMT XML Reference
XML File Requirements
11/2/2020 • 2 minutes to read • Edit Online
The file must have a unique migration urlid . The urlid of each file that you specify on the command
line must be different. If two migration .xml files have the same urlid, the second .xml file that is specified
on the command line will not be processed. This is because USMT uses the urlid to define the
components within the file. For example, you must specify the following syntax at the beginning of each
file:
Each component in the file must have a display name in order for it to appear in the
Config.xml file. This is because the Config.xml file defines the components by the display name and the
migration urlid. For example, specify the following syntax:
<displayName>My Application</displayName>
When using the XML files MigDocs.xml, MigApp.xml, and MigUser.xml, you can use environment variables to
identify folders that may be different on different computers. Constant special item ID list (CSIDL) values provide
a way to identify folders that applications use frequently but may not have the same name or location on any
given computer. For example, the documents folder may be C:\Users\<Username>\My Documents on one
computer and C:\Documents and Settings on another. You can use the asterisk (*) wildcard character in
MigUser.xml, MigApp.xml and MigDoc.xml files. However, you cannot use the asterisk (*) wildcard characters in
the Config.xml file.
In This Topic
Variables that are processed for the operating system and in the context of each user
Variables that are recognized only in the user context
Variables that are processed for the operating system and in the
context of each user
You can use these variables within sections in the .xml files with context=UserAndSystem , context=User , and
context=System .
VA RIA B L E EXP L A N AT IO N
VA RIA B L E EXP L A N AT IO N
CSIDL_BITBUCKET The virtual folder that contains the objects in the user's
Recycle Bin.
CSIDL_CONTROLS The virtual folder that contains icons for the Control
Panel items.
CSIDL_PL AYLISTS The virtual folder used to store play albums, typically
C:\Users\username\My Music\Playlists.
Related topics
USMT XML Reference
XML Elements Library
3/26/2021 • 66 minutes to read • Edit Online
This topic describes the XML elements and helper functions that you can employ to author migration .xml files
to use with User State Migration Tool (USMT). It is assumed that you understand the basics of XML. .
In this topic
In addition to XML elements and helper functions, this topic describes how to specify encoded locations and
locations patterns, functions that are for internal USMT use only, and the version tags that you can use with
helper functions.
Elements and helper functions
Appendix
Specifying locations
Internal USMT functions
Valid version tags
<addObjects>
The <addObjects> element emulates the existence of one or more objects on the source computer. The child
<object> elements provide the details of the emulated objects. If the content is a <script> element, the result of
the invocation will be an array of objects.
Number of occurrences: unlimited
Parent elements:<rules>
Required child elements: <object> In addition, you must specify <location> and <attribute> as child
elements of this <object> element.
Optional child elements:<conditions>, <condition>, <script>
Syntax:
<addObjects>
</addObjects>
The following example is from the MigApp.xml file:
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office
[UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]
</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<attributes>
The <attributes> element defines the attributes for a registry key or file.
Number of occurrences: once for each <object>
Parent elements:<object>
Child elements: none
Syntax:
<attributes>Content</attributes>
<bytes>
You must specify the <bytes> element only for files because, if <location> corresponds to a registry key or a
directory, then <bytes> will be ignored.
Number of occurrences: zero or one
Parent elements:<object>
Child elements: none
Syntax:
<bytes string="Yes|No" expand="Yes|No">Content</bytes>
<commandLine>
You might want to use the <commandLine> element if you want to start or stop a service or application before
or after you run the ScanState and LoadState tools.
Number of occurrences: unlimited
Parent elements:<externalProcess>
Child elements: none****
Syntax:
<commandLine>CommandLineString</commandLine>
<component>
The <component> element is required in a custom .xml file. This element defines the most basic construct of a
migration .xml file. For example, in the MigApp.xml file, "Microsoft® Office 2003" is a component that contains
another component, "Microsoft Office Access® 2003". You can use the child elements to define the component.
A component can be nested inside another component; that is, the <component> element can be a child of the
<role> element within the <component> element in two cases: 1) when the parent <component> element is a
container or 2) if the child <component> element has the same role as the parent <component> element.
Number of occurrences: Unlimited
Parent elements:<migration>, <role>
Required child elements:<role>, <displayName>
Optional child elements:<manufacturer>, <version>, <description>, <paths>, <icon>,
<environment>, <extensions>
Syntax:
<component type="System|Application|Device|Documents" context="User|System|UserAndSystem"
defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
SET T IN G REQ UIRED? VA L UE
<condition>
Although the <condition> element under the <detect>, <objectSet>, and <addObjects> elements is supported,
we recommend that you do not use it. This element might be deprecated in future versions of USMT, requiring
you to rewrite your scripts. We recommend that, if you need to use a condition within the <objectSet> and
<addObjects> elements, you use the more powerful <conditions> element, which allows you to formulate
complex Boolean statements.
The <condition> element has a Boolean result. You can use this element to specify the conditions in which the
parent element will be evaluated. If any of the present conditions return FALSE, the parent element will not be
evaluated.
Number of occurrences: unlimited.
Parent elements:<conditions>, <detect>, <objectSet>, <addObjects>
Child elements: none
Helper functions: You can use the following <condition> functions with this element: DoesOSMatch,
IsNative64Bit(), IsOSLaterThan, IsOSEarlierThan, DoesObjectExist, DoesFileVersionMatch,
IsFileVersionAbove, IsFileVersionBelow, IsSystemContext, DoesStringContentEqual,
DoesStringContentContain, IsSameObject, IsSameContent, and IsSameStringContent.
Syntax:
<condition negation="Yes|No">ScriptName</condition>
For example,
In the code sample below, the <condition> elements, A and B, are joined together by the AND operator because
they are in separate <conditions> sections. For example:
<detection>
<conditions>
<condition>A</condition>
</conditions>
<conditions operation="AND">
<condition>B</condition>
</conditions>
</detection>
However, in the code sample below, the <condition> elements, A and B, are joined together by the OR operator
because they are in the same <conditions> section.
<detection>
<conditions>
<condition>A</condition>
<condition>B</condition>
</conditions>
</detection>
<condition> functions
The <condition> functions return a Boolean value. You can use these elements in <addObjects> conditions.
Operating system version functions
Object content functions
Operating system version functions
DoesOSMatch
All matches are case insensitive.
Syntax: DoesOSMatch("OSType","OSVersion")
SET T IN G REQ UIRED? VA L UE
For example:
<condition>MigXmlHelper.DoesOSMatch("NT","\*")</condition>
IsNative64Bit
The IsNative64Bit function returns TRUE if the migration process is running as a native 64-bit process;
that is, a process running on a 64-bit system without Windows on Windows (WOW). Otherwise, it returns
FALSE.
IsOSLaterThan
All comparisons are case insensitive.
Syntax: IsOSLaterThan("OSType","OSVersion")
For example:
<condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
IsOSEarlierThan
All comparisons are case insensitive.
Syntax: IsOSEarlierThan("OSType","OSVersion")
DoesFileVersionMatch
The pattern check is case insensitive.
Syntax: DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")
For example:
<condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","6
.\*")</condition>
<condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","7
.\*")</condition>
IsFileVersionAbove
The IsFileVersionAbove function returns TRUE if the version of the file is higher than VersionValue.
Syntax: IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")
IsFileVersionBelow
Syntax: IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")
IsSystemContext
The IsSystemContext function returns TRUE if the current context is "System". Otherwise, it returns FALSE.
Syntax: IsSystemContext()
DoesStringContentEqual
The DoesStringContentEqual function returns TRUE if the string representation of the given object is
identical to StringContent .
Syntax: DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")
For example:
``` xml
<condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
```
DoesStringContentContain
The DoesStringContentContain function returns TRUE if there is at least one occurrence of StrToFind in
the string representation of the object.
Syntax: DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")
IsSameObject
The IsSameObject function returns TRUE if the given encoded locations resolve to the same physical
object. Otherwise, it returns FALSE.
Syntax: IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")
``` xml
<objectSet>
<condition
negation="Yes">MigXmlHelper.IsSameObject("File","%CSIDL_FAVORITES%","%CSIDL_COMMON_FAVORITES%")</condition>
<pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern>
</objectSet>
```
IsSameContent
The IsSameContent function returns TRUE if the given objects have the same content. Otherwise, it
returns FALSE. The content will be compared byte by byte.
Syntax: IsSameContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")
IsSameStringContent
The IsSameStringContent function returns TRUE if the given objects have the same content. Otherwise, it
returns FALSE. The content will be interpreted as a string.
Syntax: IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")
<conditions>
The <conditions> element returns a Boolean result that is used to specify the conditions in which the parent
element is evaluated. USMT evaluates the child elements, and then joins their results using the operators AND
or OR according to the operation parameter.
Number of occurrences: Unlimited inside another <conditions> element. Limited to one occurrence in
<detection>, <rules>, <addObjects>, and <objectSet>
Parent elements:<conditions>, <detection>, <environment>, <rules>, <addObjects>, and <objectSet>
Child elements:<conditions>, <condition>
Syntax:
<conditions operation="AND|OR">
</conditions>
<environment name="GlobalEnv">
<conditions>
<condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
</conditions>
<variable name="HklmWowSoftware">
<text>HKLM\Software</text>
</variable>
</environment>
<content>
You can use the <content> element to specify a list of object patterns to obtain an object set from the source
computer. Each <objectSet> within a <content> element is evaluated. For each resulting object pattern list, the
objects that match it are enumerated and their content is filtered by the filter parameter. The resulting string
array is the output for the <content> element. The filter script returns an array of locations. The parent
<objectSet> element can contain multiple child <content> elements.
Number of occurrences: unlimited
Parent elements:<objectSet>
Child elements:<objectSet>
Helper functions: You can use the following <content> functions with this element: ExtractSingleFile,
ExtractMultipleFiles, and ExtractDirectory.
Syntax:
<content filter="ScriptInvocation">
</content>
<content> functions
The following functions generate patterns out of the content of an object. These functions are called for every
object that the parent <ObjectSet> element is enumerating.
ExtractSingleFile
If the registry value is a MULTI-SZ, only the first segment is processed. The returned pattern is the
encoded location for a file that must exist on the system. If the specification is correct in the registry
value, but the file does not exist, this function returns NULL.
Syntax: ExtractSingleFile(Separators,PathHints)
For example:
``` xml
<content filter="MigXmlHelper.ExtractSingleFile(',','%system%')">
```
and
``` xml
<content filter="MigXmlHelper.ExtractSingleFile(NULL,'%CSIDL_COMMON_FONTS%')">
```
ExtractMultipleFiles
The ExtractMultipleFiles function returns multiple patterns, one for each file that is found in the content of
the given registry value. If the registry value is a MULTI-SZ, the MULTI-SZ separator is considered a
separator by default. therefore, for MULTI-SZ, the <Separators> argument must be NULL.
The returned patterns are the encoded locations for files that must exist on the source computer. If the
specification is correct in the registry value but the file does not exist, it will not be included in the
resulting list.
Syntax: ExtractMultipleFiles(Separators,PathHints)
ExtractDirector y
The ExtractDirectory function returns a pattern that is the encoded location for a directory that must exist
on the source computer. If the specification is correct in the registry value, but the directory does not
exist, this function returns NULL. If it is processing a registry value that is a MULTI-SZ, only the first
segment will be processed.
Syntax: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)
``` xml
<objectSet>
<content filter='MigXmlHelper.ExtractDirectory (NULL, "1")'>
<objectSet>
<pattern
type="Registry">%HklmWowSoftware%\Classes\Software\RealNetworks\Preferences\DT_Common []</pattern>
</objectSet>
</content>
</objectSet>
```
<contentModify>
The <contentModify> element modifies the content of an object before it is written to the destination computer.
For each <contentModify> element there can be multiple <objectSet> elements. This element returns the new
content of the object that is being processed.
Number of occurrences: Unlimited
Parent elements:<rules>
Required child elements:<objectSet>
Helper functions : You can use the following <contentModify> functions with this element:
ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable,
MergeMultiSzContent, and MergeDelimitedContent.
Syntax:
<contentModify script="ScriptInvocation">
</contentModify>
<contentModify> functions
The following functions change the content of objects as they are migrated. These functions are called for every
object that the parent <ObjectSet> element is enumerating.
Conver tToDWORD
The ConvertToDWORD function converts the content of registry values that are enumerated by the
parent <ObjectSet> element to a DWORD. For example, ConvertToDWORD will convert the string "1" to
the DWORD 0x00000001. If the conversion fails, then the value of DefaultValueOnError will be applied.
Syntax: ConvertToDWORD(DefaultValueOnError)
Conver tToString
The ConvertToString function converts the content of registry values that match the parent <ObjectSet>
element to a string. For example, it will convert the DWORD 0x00000001 to the string "1". If the
conversion fails, then the value of DefaultValueOnError will be applied.
Syntax: ConvertToString(DefaultValueOnError)
For example:
``` xml
<contentModify script="MigXmlHelper.ConvertToString('1')">
<objectSet>
<pattern type="Registry">HKCU\Control Panel\Desktop [ScreenSaveUsePassword]</pattern>
</objectSet>
</contentModify>
```
Conver tToBinar y
The ConvertToBinary function converts the content of registry values that match the parent <ObjectSet>
element to a binary type.
Syntax: ConvertToBinary ()
OffsetValue
The OffsetValue function adds or subtracts Value from the value of the migrated object, and then writes
the result back into the registry value on the destination computer. For example, if the migrated object is
a DWORD with a value of 14, and the Value is "-2", the registry value will be 12 on the destination
computer.
Syntax: OffsetValue(Value)
SET T IN G REQ UIRED? VA L UE
SetValueByTable
The SetValueByTable function matches the value from the source computer to the source table. If the
value is there, the equivalent value in the destination table will be applied. If the value is not there, or if
the destination table has no equivalent value, the DefaultValueOnError will be applied.
Syntax: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)
KeepExisting
You can use the KeepExisting function when there are conflicts on the destination computer. This function
will keep (not overwrite) the specified attributes for the object that is on the destination computer.
Syntax: KeepExisting("OptionString","OptionString","OptionString",…)
MergeMultiSzContent
The MergeMultiSzContent function merges the MULTI-SZ content of the registry values that are
enumerated by the parent <ObjectSet> element with the content of the equivalent registry values that
already exist on the destination computer. Instruction and String either remove or add content to the
resulting MULTI-SZ. Duplicate elements will be removed.
Syntax: MergeMultiSzContent (Instruction,String,Instruction,String,…)
MergeDelimitedContent
The MergeDelimitedContent function merges the content of the registry values that are enumerated by
the parent <ObjectSet> element with the content of the equivalent registry values that already exist on
the destination computer. The content is considered a list of elements separated by one of the characters
in the Delimiters parameter. Duplicate elements will be removed.
Syntax: MergeDelimitedContent(Delimiters,Instruction,String,…)
<description>
The <description> element defines a description for the component but does not affect the migration.
Number of occurrences: zero or one
Parent elements:<component>
Child elements: none
Syntax:
<description>ComponentDescription</description>
The following code sample shows how the <description> element defines the "My custom component"
description.:
<destinationCleanup>
The <destinationCleanup> element deletes objects, such as files and registry keys, from the destination
computer before applying the objects from the source computer. This element is evaluated only when the
LoadState tool is run on the destination computer. That is, this element is ignored by the ScanState tool.
Impor tant
Use this option with extreme caution because it will delete objects from the destination computer.
For each <destinationCleanup> element there can be multiple <objectSet> elements. A common use for this
element is if there is a missing registry key on the source computer and you want to ensure that a component is
migrated. In this case, you can delete all of the component's registry keys before migrating the source registry
keys. This will ensure that if there is a missing key on the source computer, it will also be missing on the
destination computer.
Number of occurrences: Unlimited
Parent elements:<rules>
Child elements:<objectSet> (Note that the destination computer will delete all child elements.)
Syntax:
<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
SET T IN G REQ UIRED? VA L UE
For example:
<destinationCleanup>
<objectSet>
<pattern type="Registry">HKCU\Software\Lotus\123\99.0\DDE Preferences\* [*]</pattern>
<pattern type="Registry">HKCU\Software\Lotus\123\99.0\Find Preferences\* [*]</pattern>
</objectSet>
</destinationCleanup>
<detect>
Although the <detect> element is still supported, we do not recommend using it because it may be deprecated
in future versions of USMT. In that case, you would have to rewrite your scripts. Instead, we recommend that you
use the <detection>element.
You use the <detect> element to determine if the component is present on a system. If all child <detect>
elements within a <detect> element resolve to TRUE, then the <detect> element resolves to TRUE. If any child
<detect> elements resolve to FALSE, then their parent <detect> element resolves to FALSE. If there is no
<detect> element section, then USMT will assume that the component is present.
For each <detect> element there can be multiple child <condition> or <objectSet> elements, which will be
logically joined by an OR operator. If at least one <condition> or <objectSet> element evaluates to TRUE, then
the <detect> element evaluates to TRUE.
Number of occurrences: unlimited
Parent elements: <detects>, <namedElements>
Required child elements:<condition>
Optional child elements:<objectSet>
Syntax:
<detect name="ID" context="User|System|UserAndSystem">
</detect>
SET T IN G REQ UIRED? VA L UE
<detects>
Although the <detects> element is still supported, we recommend that you do not use it because it may be
deprecated in future versions of USMT, which would require you to rewrite your scripts. Instead, we recommend
that you use the <detection> element if the parent element is <role> or <namedElements>, and we
recommend that you use the <conditions> element if the parent element is <rules>. Using <detection> allows
you to more clearly formulate complex Boolean statements.
The <detects> element is a container for one or more <detect> elements. If all of the child <detect> elements
within a <detects> element resolve to TRUE, then <detects> resolves to TRUE. If any of the child <detect>
elements resolve to FALSE, then <detects> resolves to FALSE. If you do not want to write the <detects>
elements within a component, then you can create the <detects> element under the <namedElements>
element, and then refer to it. If there is no <detects> element section, then USMT will assume that the
component is present. The results from each <detects> element are joined together by the OR operator to form
the rule used to detect the parent element.
Syntax:
<detects name="ID" context="User|System|UserAndSystem">
</detects>
Number of occurrences: Unlimited.
Parent elements:<role>, <rules>, <namedElements>
Required child elements: <detect>
<condition>MigXmlHelper.DoesFileVersionMatch("%SmartSuiteInstPath%\smartctr.exe","ProductVersion","99.*")
</condition>
</detect>
</detects>
<detection>
The <detection> element is a container for one <conditions> element. The result of the child <condition>
elements, located underneath the <conditions> element, determines the result of this element. For example, if
all of the child <conditions> elements within the <detection> element resolve to TRUE, then the <detection>
element resolves to TRUE. If any of the child <conditions> elements resolve to FALSE, then the <detection>
element resolves to FALSE.
In addition, the results from each <detection> section within the <role> element are joined together by the OR
operator to form the detection rule of the parent element. That is, if one of the <detection> sections resolves to
TRUE, then the <role> element will be processed. Otherwise, the <role> element will not be processed.
Use the <detection> element under the <namedElements> element if you do not want to write it within a
component. Then include a matching <detection> section under the <role> element to control whether the
component is migrated. If there is not a <detection> section for a component, then USMT will assume that the
component is present.
Number of occurrences: Unlimited.
Parent elements:<role>, <namedElements>
Child elements:<conditions>
Syntax:
<detection name="ID" context="User|System|UserAndSystem">
</detection>
For example:
<detection name="AdobePhotoshopCS">
<conditions>
<condition>MigXmlHelper.DoesObjectExist("Registry","HKCU\Software\Adobe\Photoshop\8.0")</condition>
<condition>MigXmlHelper.DoesFileVersionMatch("%PhotoshopSuite8Path%\Photoshop.exe","FileVersion","8.*")
</condition>
</conditions>
</detection>
and
<role role="Settings">
<detection>
<conditions>
<condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 5.*")
</condition>
<condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 6.*")
</condition>
</conditions>
</detection>
<displayName>
The <displayName> element is a required field within each <component> element.
Number of occurrences: once for each component
Parent elements:<component>
Child elements: none
Syntax:
<displayName _locID="ID">ComponentName</displayName>
SET T IN G REQ UIRED? VA L UE
For example:
<environment>
The <environment> element is a container for <variable> elements in which you can define variables to use in
your .xml file. All environment variables defined this way will be private. That is, they will be available only for
their child components and the component in which they were defined. For two example scenarios, see
Examples.
Number of occurrences: unlimited
Parent elements:<role>, <component>, <namedElements>
Required child elements:<variable>
Optional child elements:conditions
Syntax:
<environment name="ID" context="User|System|UserAndSystem">
</environment>
Example scenario 1
In this scenario, you want to generate the location of objects at run time depending on the configuration of the
destination computer. For example, you must do this if an application writes data in the directory where it is
installed, and users can install the application anywhere on the computer. If the application writes a registry
value hklm\software\companyname\install [path] and then updates this value with the location where the
application is installed, then the only way for you to migrate the required data correctly is to define an
environment variable. For example:
<environment>
<variable name="INSTALLPATH">
<script>MigXmlHelper.GetStringContent("Registry","\software\companyname\install [path]")</script>
</variable>
</environment>
Then you can use an include rule as follows. You can use any of the <script> functions to perform similar tasks.
<include>
<objectSet>
<pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
</objectSet>
</include>
Second, you can also filter registry values that contain data that you need. The following example extracts the
first string (before the separator ",") in the value of the registry Hklm\software\companyname\application\
[Path].
<environment>
<variable name="APPPATH">
<objectSet>
<content filter='MigXmlHelper.ExtractDirectory (",", "1")'>
<objectSet>
<pattern type="Registry">Hklm\software\companyname\application\ [Path]</pattern>
</objectSet>
</content>
</objectSet>
</variable>
</environment>
Example scenario 2:
In this scenario, you want to migrate five files named File1.txt, File2.txt, and so on, from
%SYSTEMDRIVE%\data\userdata\dir1\dir2\. To do this you must have the following <include> rule in an .xml
file:
<include>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File1.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File2.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File3.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File4.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File5.txt]</pattern>
</objectSet>
</include>
Instead of typing the path five times, you can create a variable for the location as follows:
<environment>
<variable name="DATAPATH">
<text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
</variable>
</environment>
<include>
<objectSet>
<pattern type="File">%DATAPATH% [File1.txt]</pattern>
<pattern type="File">%DATAPATH% [File2.txt]</pattern>
<pattern type="File">%DATAPATH% [File3.txt]</pattern>
<pattern type="File">%DATAPATH% [File4.txt]</pattern>
<pattern type="File">%DATAPATH% [File5.txt]</pattern>
</objectSet>
</include>
<exclude>
The <exclude> element determines what objects will not be migrated, unless there is a more specific <include>
element that migrates an object. If there is an <include> and <exclude> element for the same object, the object
will be included. For each <exclude> element there can be multiple child <objectSet> elements.
Number of occurrences: Unlimited
Parent elements:<rules>
Child elements:<objectSet>
Helper functions: You can use the following <exclude> filter functions with this element:
CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestore, and SameRegContent.
Syntax:
<exclude filter="ScriptInvocation">
</exclude>
<exclude>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
<pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</exclude>
<excludeAttributes>
You can use the <excludeAttributes> element to determine which parameters associated with an object will not
be migrated. If there are conflicts between the <includeAttributes> and <excludeAttributes> elements, the most
specific pattern determines the patterns that will not be migrated. If an object does not have an
<includeAttributes> or <excludeAttributes> element, then all of its parameters will be migrated.
Number of occurrences: Unlimited
Parent elements:<rules>
Child elements:<objectSet>
Syntax:
<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
PA RA M ET ER REQ UIRED? VA L UE
Example:
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates My Video files -->
<component type="System" context="System">
<displayName>System Data</displayName>
<role role="Data">
<rules>
<!-- Include all of the text files, which are immediately in the drive where the operating system is
installed -->
<include>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [*.txt]</pattern>
</objectSet>
</include>
<!-- Exclude the time stamps from the text file starting with the letter a -->
<excludeAttributes attributes="TimeFields">
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [a*.txt]</pattern>
</objectSet>
</excludeAttributes>
<!-- include the time stamps from the text file aa.txt -->
<includeAttributes attributes="TimeFields">
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [aa.txt]</pattern>
</objectSet>
</includeAttributes>
<!-- Logoff the user after loadstate successfully completed. -->
<externalProcess when="post-apply">
<commandLine>
logoff
</commandLine>
</externalProcess>
</rules>
</role>
<!-- Migrate
all doc files from the system
all power point files
all visio design files
all my c++ program files -->
<extensions>
<extension>DOC</extension>
<extension>PPT</extension>
<extension>VXD</extension>
<extension>PST</extension>
<extension>CPP</extension>
</extensions>
</component>
</migration>
<extensions>
The <extensions> element is a container for one or more <extension> elements.
Number of occurrences: zero or one
Parent elements:<component>
Required child elements:<extension>
Syntax:
<extensions>
</extensions>
<extension>
You can use the <extension> element to specify documents of a specific extension.
Number of occurrences: unlimited
Parent elements:<extensions>
Child elements: none
Syntax:
<extension>FilenameExtension</extension>
For example, if you want to migrate all *.doc files from the source computer, specifying the following code under
the <component> element:
<extensions>
<extension>doc</extension>
<extensions>
is the same as specifying the following code below the <rules> element:
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
</objectSet>
</include>
For another example of how to use the <extension> element, see the example for <excludeAttributes>.
<externalProcess>
You can use the <externalProcess> element to run a command line during the migration process. For example,
you may want to run a command after the LoadState process completes.
Number of occurrences: Unlimited
Parent elements:<rules>
Required child elements:<commandLine>
Syntax:
<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
For an example of how to use the <externalProcess> element, see the example for <excludeAttributes>.
<icon>
This is an internal USMT element. Do not use this element.
<include>
The <include> element determines what to migrate, unless there is a more specific <exclude> rule. You can
specify a script to be more specific to extend the definition of what you want to collect. For each <include>
element there can be multiple <objectSet> elements.
Number of occurrences: Unlimited
Parent elements:<rules>
Required child element:<objectSet>
Helper functions: You can use the following <include> filter functions with this element:
CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, and NeverRestore.
Syntax:
<include filter="ScriptInvocation">
</include>
IgnoreIrrelevantLinks
This filter screens out the .lnk files that point to an object that is not valid on the destination computer.
Note that the screening takes place on the destination computer, so all .lnk files will be saved to the store
during ScanState. Then they will be screened out when you run the LoadState tool.
Syntax: IgnoreIrrelevantLinks ()
For example:
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern>
</objectSet>
</include>
NeverRestore
You can use this function to collect the specified objects from the source computer but then not migrate
the objects to the destination computer. When run with the ScanState tool, this function evaluates to
TRUE. When run with the LoadState tool, this function evaluates to FALSE. You may want to use this
function when you want to check an object's value on the destination computer but do not intend to
migrate the object to the destination.
Syntax: NeverRestore()
In the following example, HKCU\Control Panel\International [Locale] will be included in the store, but it
will not be migrated to the destination computer:
<include filter="MigXmlHelper.NeverRestore()">
<objectSet>
<pattern type="Registry">HKCU\Control Panel\International [Locale]</pattern>
</objectSet>
</include>
<includeAttributes>
You can use the <includeAttributes> element to determine whether certain parameters associated with an
object will be migrated along with the object itself. If there are conflicts between the <includeAttributes> and
<excludeAttributes> elements, the most specific pattern will determine which parameters will be migrated. If an
object does not have an <includeAttributes> or <excludeAttributes> element, then all of its parameters will be
migrated.
Number of occurrences: unlimited
Parent elements:<rules>
Child elements:<objectSet>
Syntax:
<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
<library>
This is an internal USMT element. Do not use this element.
<location>
The <location> element defines the location of the <object> element.
Number of occurrences: once for each <object>
Parent elements:<object>
Child elements:<script>
Syntax:
<location type="typeID">ObjectLocation</location>
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office
[UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]
</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<locationModify>
You can use the <locationModify> element to change the location and name of an object before it is migrated to
the destination computer. The <locationModify> element is processed only when the LoadState tool is run on
the destination computer. In other words, this element is ignored by the ScanState tool. The <locationModify>
element will create the appropriate folder on the destination computer if it does not already exist.
Number of occurrences: Unlimited
Parent elements:<rules>
Required child element:<objectSet>
Helper functions: You can use the following <locationModify> functions with this element: ExactMove,
RelativeMove, and Move.
Syntax:
<locationModify script="ScriptInvocation">
</locationModify>
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Office','%CSIDL_APPDATA%')">
<objectSet>
<pattern type="File">%CSIDL_APPDATA%\Microsoft\Office\ [Access10.pip]</pattern>
</objectSet>
</locationModify>
<locationModify> functions
The following functions change the location of objects as they are migrated when using the <locationModify>
element. These functions are called for every object that the parent <ObjectSet> element is enumerating. The
<locationModify> element will create the appropriate folder on the destination computer if it does not already
exist.
ExactMove
The ExactMove function moves all of the objects that are matched by the parent <ObjectSet> element
into the given ObjectEncodedLocation. You can use this function when you want to move a single file to a
different location on the destination computer. If the destination location is a node, all of the matching
source objects will be written to the node without any subdirectories. If the destination location is a leaf,
the migration engine will migrate all of the matching source objects to the same location. If a collision
occurs, the normal collision algorithms will apply.
Syntax: ExactMove(ObjectEncodedLocation)
``` xml
<locationModify script="MigXmlHelper.ExactMove('HKCU\Keyboard Layout\Toggle [HotKey]')">
<objectSet>
<pattern type="Registry">HKCU\Keyboard Layout\Toggle []</pattern>
</objectSet>
</locationModify>
```
Move
The Move function moves objects to a different location on the destination computer. In addition, this
function creates subdirectories that were above the longest CSIDL in the source object name.
Syntax: Move(DestinationRoot)
RelativeMove
You can use the RelativeMove function to collect and move data. Note that you can use environment
variables in source and destination roots, but they may be defined differently on the source and
destination computers.
Syntax: RelativeMove(SourceRoot,DestinationRoot)
``` xml
<include>
<objectSet>
<pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
<objectSet>
</include>
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_COMMON_FAVORITES%','%CSIDL_COMMON_FAVORITES%')">
<objectSet>
<pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
</objectSet>
</locationModify>
```
<_locDefinition>
This is an internal USMT element. Do not use this element.
<manufacturer>
The <manufacturer> element defines the manufacturer for the component, but does not affect the migration.
Number of occurrences: zero or one
Parent elements:<component>
Child elements: none
Syntax:
<manufacturer>Name</manufacturer>
<merge>
The <merge> element determines what will happen when a collision occurs. A collision is when an object that is
migrated is already present on the destination computer. If you do not specify this element, the default behavior
for the registry is for the source object to overwrite the destination object. The default behavior for files is for
the source file to be renamed to "OriginalFileName(1).OriginalExtension". This element specifies only what
should be done when a collision occurs. It does not include objects. Therefore, for your objects to migrate, you
must specify <include> rules along with the <merge> element. When an object is processed and a collision is
detected, USMT will select the most specific merge rule and apply it to resolve the conflict. For example, if you
have a <merge> rule C:\* [*] set to <sourcePriority> and a <merge> rule C:\subfolder\* [*] set to
<destinationPriority>, then USMT would use the <destinationPriority> rule because it is the more specific.
For an example of this element, see Conflicts and Precedence.
Number of occurrences: Unlimited
Parent elements:<rules>
Required child element:<objectSet>
Helper functions: You can use the following <merge> functions with this element: SourcePriority,
DestinationPriority, FindFilePlaceByPattern, LeafPattern, NewestVersion, HigherValue(), and LowerValue().
Syntax:
<merge script="ScriptInvocation">
</merge>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
<merge> functions
These functions control how collisions are resolved.
DestinationPriority
Specifies to keep the object that is on the destination computer and not migrate the object from the
source computer.
For example:
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="Registry">HKCU\Software\Microsoft\Office\9.0\PhotoDraw\ [MyPictures]
</pattern>
<pattern type="Registry">HKCU\Software\Microsoft\Office\9.0\PhotoDraw\Settings\
[PicturesPath]</pattern>
<pattern type="Registry">HKCU\Software\Microsoft\Office\9.0\PhotoDraw\Settings\
[AdditionalPlugInPath]</pattern>
</objectSet>
</merge>
FindFilePlaceByPattern
The FindFilePlaceByPattern function saves files with an incrementing counter when a collision occurs. It is
a string that contains one of each constructs: <F>, <E>, <N> in any order.
Syntax: FindFilePlaceByPattern(FilePattern)
NewestVersion
The NewestVersion function will resolve conflicts on the destination computer based on the version of
the file.
Syntax: NewestVersion(VersionTag)
HigherValue()
You can use this function for merging registry values. The registry values will be evaluated as numeric
values, and the one with the higher value will determine which registry values will be merged.
LowerValue()
You can use this function for merging registry values. The registry values will be evaluated as numeric
values and the one with the lower value will determine which registry values will be merged.
SourcePriority
Specifies to migrate the object from the source computer, and to delete the object that is on the
destination computer.
For example:
<merge script="MigXmlHelper.SourcePriority()">
<objectSet>
<pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Publisher
[UpgradeVersion]</pattern>
<pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\11.0\Common\Migration\Publisher
[UpgradeVersion]</pattern>
<pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\10.0\Common\Migration\Publisher
[UpgradeVersion]</pattern>
</objectSet>
</merge>
<migration>
The <migration> element is the single root element of a migration .xml file and is required. Each .xml file must
have a unique migration urlid. The urlid of each file that you specify on the command line must be unique. This
is because USMT uses the urlid to define the components within the file. For example, you must specify the
following at the beginning of each file: <CustomFileName> is the name of the file; for example, "CustomApp".
Number of occurrences: one
Parent elements: none
Required child elements:<component>
Optional child elements:<library>, <namedElements>
Syntax:
<migration urlid="UrlID/Name">
</migration>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>
MigXMLHelper.FileProperties
This filter helper function can be used to filter the migration of files based on file size and date attributes.
<rules>
<include filter='MigXmlHelper.FileProperties("dateAccessed","range","2008/05/15-2008/05/17")'>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
<namedElements>
You can use the <namedElements> element to define named elements. You can use these elements in any
component throughout your .xml file. For an example of how to use this element, see the MigApp.xml file.
Syntax:
<namedElements>
</namedElements>
Number of occurrences: Unlimited
Parent elements:<migration>
Child elements:<environment>, <rules>, <conditions>, <detection>, <detects>, <detect>
For an example of this element, see the MigApp.xml file.
<object>
The <object> element represents a file or registry key.
Number of occurrences: Unlimited
Parent elements:<addObjects>
Required child elements:<location>, <attributes>
Optional child elements:<bytes>
Syntax:
<object>
</object>
The following example is from the MigApp.xml file:
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office
[UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]
</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<objectSet>
The <objectSet> element contains a list of object patterns ; for example, file paths, registry locations, and so on.
Any child <conditions> elements will be evaluated first. If all child <conditions> elements return FALSE, the
<objectSet> element will evaluate to an empty set. For each parent element, there can be only multiple
<objectSet> elements.
Number of occurrences: Unlimited
Parent elements:<variable>, <content>, <include>, <exclude>, <merge>, <contentModify>,
<locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>,
<unconditionalExclude>, <detect>
Required child elements: either <script> or <pattern>
Optional child elements:<content>, conditions, <condition>
Syntax:
<objectSet>
</objectSet>
The following example is from the MigUser.xml file:
<component type="Documents" context="User">
<displayName _locID="miguser.mymusic">My Music</displayName>
<paths>
<path type="File">%CSIDL_MYMUSIC%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<path>
This is an internal USMT element. Do not use this element.
<paths>
This is an internal USMT element. Do not use this element.
<pattern>
You can use this element to specify multiple objects. You can specify multiple <pattern> elements for each
<objectSet> element and they will be combined. If you are specifying files, you may want to use
GenerateDrivePatterns with <script> instead. GenerateDrivePatterns is basically the same as a <pattern> rule,
without the drive letter specification. For example, the following two lines of code are similar:
For example:
To migrate a single registry key:
To migrate the EngineeringDrafts folder and any subfolders from the C: drive:
To migrate only the EngineeringDrafts folder, excluding any subfolders, from the C: drive:
Reroute Files and Settings
To migrate the Sample.doc file from C:\EngineeringDrafts:
To migrate the Sample.doc file from where ever it exists on the C: drive use pattern in the following way. If
multiple files exist with the same name on the C: drive, then all of these files will be migrated.
For more examples of how to use this element, see Exclude Files and Settings, Reroute Files and Settings,
Include Files and Settings, and Custom XML Examples.
<processing>
You can use this element to run a script during a specific point within the migration process. Return values are
not expected from the scripts that you specify, and if there are return values, they will be ignored.
Number of occurrences: unlimited
Parent elements:<rules>
Required child element:<script>
Syntax:
<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
<plugin>
This is an internal USMT element. Do not use this element.
<role>
The <role> element is required in a custom .xml file. By specifying the <role> element, you can create a
concrete component. The component will be defined by the parameters specified at the <component> level, and
with the role that you specify here.
Number of occurrences: Each <component> can have one, two or three child <role> elements.
Parent elements:<component>, <role>
Required child elements:<rules>
Optional child elements:<environment>, <detection>, <component>, <role>, <detects>, <plugin>,
Syntax:
<role role="Container|Binaries|Settings|Data">
</role>
The following example is from the MigUser.xml file. For more examples, see the MigApp.xml file:
<rules>
The <rules> element is required in a custom .xml file. This element contains rules that will run during the
migration if the parent <component> element is selected, unless the child <conditions> element, if present,
evaluates to FALSE. For each <rules> element there can be multiple child <rules> elements.
Number of occurrences: unlimited
Parent elements:<role>, <rules>, <namedElements>
Required child elements:<include>
Optional child elements:<rules>, <exclude>, <unconditionalExclude>,<merge>, <contentModify>,
<locationModify>, <destinationCleanup>, <addObjects>, <externalProcess>, <processing>,
<includeAttributes>, <excludeAttributes>, conditions, <detects>
Syntax:
<rules name="ID" context="User|System|UserAndSystem">
</rules>
<script>
The return value that is required by <script> depends on the parent element.
Number of occurrences: Once for <variable>, unlimited for <objectSet> and <processing>
Parent elements:<objectSet>, <variable>, <processing>
Child elements: none
Syntax and helper functions:
General Syntax: <script>ScriptWithArguments</script>
You can use GetStringContent when <script> is within <variable>.
Syntax: <script>MigXmlHelper.GetStringContent("ObjectType","EncodedLocationPattern",
"ExpandContent")</script>
Example:
<script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
Examples:
To migrate the Sample.doc file from any drive on the source computer, use <script> as follows. If multiple files
exist with the same name, all such files will get migrated.
For more examples of how to use this element, see Exclude Files and Settings, Reroute Files and Settings, and
Custom XML Examples.
<script> functions
You can use the following functions with the <script> element
String and pattern generating functions
Simple executing scripts
String and pattern generating functions
These functions return either a string or a pattern.
GetStringContent
You can use GetStringContent with <script> elements that are within <variable> elements. If possible,
this function returns the string representation of the given object. Otherwise, it returns NULL. For file
objects this function always returns NULL.
Syntax: GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")
For example:
``` xml
<variable name="MSNMessengerInstPath">
<script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger
[InstallationDirectory]")</script>
</variable>
```
GenerateDrivePatterns
The GenerateDrivePatterns function will iterate all of the available drives and select the ones that match
the requested drive type. It will then concatenate the selected drives with the end part of PatternSegment
to form a full encoded file pattern. For example, if PatternSegment is Path [file.txt] and DriveType is
Fixed , then the function will generate C:\Path [file.txt] , and other patterns if there are fixed drives
other than C:. You cannot specify environment variables with this function. You can use
GenerateDrivePatterns with <script> elements that are within <objectSet> that are within
<include>/<exclude>.
Syntax: GenerateDrivePatterns("PatternSegment","DriveType")
See the last component in the MigUser.xml file for an example of this element.
GenerateUserPatterns
The function will iterate through all users that are being migrated, excluding the currently processed user
if <ProcessCurrentUser> is FALSE, and will expand the specified pattern in the context of each user. For
example, if users A, B and C have profiles in C:\Documents and Settings), by calling
GenerateUserPattens('File','%userprofile% [*.doc]','TRUE') , the helper function will generate the
following three patterns:
"C:\Documents and Settings\A\* [*.doc]"
"C:\Documents and Settings\B\* [*.doc]"
"C:\Documents and Settings\C\* [*.doc]"
Syntax:GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")
The following is example code for this scenario. The first <rules> element migrates all.doc files on
the source computer with the exception of those inside C:\\Documents and Settings. The second <rules>
elements will migrate all .doc files from C:\\Documents and Settings with the exception of the .doc files in
the profiles of the other users. Because the second <rules> element will be processed in each migrated
user context, the end result will be the desired behavior. The end result is the one we expected.
``` xml
<rules context="System">
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
</objectSet>
</include>
<exclude>
<objectSet>
<pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
</objectSet>
</exclude>
</rules>
<rules context="User">
<include>
<objectSet>
<pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
</objectSet>
</include>
<exclude>
<objectSet>
<script>MigXmlHelper.GenerateUserPatterns ("File","%userprofile%\* [*.doc]", "FALSE")</script>
</objectSet>
</exclude>
</rules>
```
MigXmlHelper.GenerateDocPatterns
This helper function invokes the document finder to scan the system for all files that can be migrated. It can be
invoked in either System or User context to focus the scan.
<processing when="apply-success">
<script>MigXmlHelper.AskForLogoff()</script>
</processing>
<processing when="pre-apply">
<script>MigXmlHelper.KillExplorer()</script>
</processing>
RegisterFonts(FileEncodedLocation) . Registers the given font or all of the fonts in the given directory.
For example:
<processing when="apply-success">
<script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
</processing>
<processing when="post-apply">
<script>MigXmlHelper.RestartExplorer()</script>
</processing>
Star tSer vice (Ser viceName, OptionalParam1, OptionalParam2,…). Starts the service identified by
ServiceName. ServiceName is the subkey in HKLM\System\CurrentControlSet\Services that holds the
data for the given service. The optional parameters, if any, will be passed to the StartService API. For
more information, see this Microsoft Web site.
StopSer vice (Ser viceName) . Stops the service that is identified by ServiceName. ServiceName is the
subkey in HKLM\System\CurrentControlSet\Services that holds the data for the given service.
SyncSCM(Ser viceShor tName). Reads the Start type value from the registry
(HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) after it is changed by the
migration engine, and then synchronizes Service Control Manager (SCM) with the new value.
<text>
You can use the <text> element to set a value for any environment variables that are inside one of the migration
.xml files.
Number of occurrences: Once in each <variable> element.
Parent elements:<variable>
Child elements: None.
Syntax:
<text>NormalText</text>
SET T IN G VA L UE
For example:
<variable name="QuickTime5or6DataSys">
<text>%CSIDL_COMMON_APPDATA%\QuickTime</text>
</variable>
<unconditionalExclude>
The <unconditionalExclude> element excludes the specified files and registry values from the migration,
regardless of the other include rules in any of the migration .xml files or in the Config.xml file. The objects
declared here will not be migrated because this element takes precedence over all other rules. For example, even
if there are explicit <include> rules to include .mp3 files, if you specify to exclude them with this option, then
they will not be migrated.
Use this element if you want to exclude all .mp3 files from the source computer. Or, if you are backing up
C:\UserData using another method, you can exclude the entire folder from the migration. Use this element with
caution, however, because if an application needs a file that you exclude, the application may not function
properly on the destination computer.
Number of occurrences: Unlimited.
Parent elements:<rules>
Child elements:<objectSet>
Syntax:
<unconditionalExclude></unconditionalExclude>
The following .xml file excludes all .mp3 files from migration. For additional examples of how to use this
element, see the Exclude Files and Settings.
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
<component context="System" type="Documents">
<displayName>Test</displayName>
<role role="Data">
<rules>
<unconditionalExclude>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
<variable>
The <variable> element is required in an <environment> element. For each <variable> element there must be
one <objectSet>, <script>, or <text> element. The content of the <variable> element assigns a text value to the
environment variable. This element has the following three options:
1. If the <variable> element contains a <text> element, then the value of the variable element will be the
value of the <text> element.
2. If the <variable> element contains a <script> element and the invocation of the script produces a non-
null string, then the value of the <variable> element will be the result of the script invocation.
3. If the <variable> element contains an <objectSet> element and the evaluation of the <objectSet>
element produces at least one object pattern, then the value of the first object to match the resulting
object pattern will be the value of the variable element.
Number of occurrences: Unlimited
Parent elements:<environment>
Required child elements: either <text>, or <script>, or <objectSet>
Syntax:
<variable name="ID" remap=TRUE|FALSE>
</variable>
<environment>
<variable name="HklmWowSoftware">
<text>HKLM\Software</text>
</variable>
<variable name="WinZip8or9or10Exe">
<script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\Windows\CurrentVersion\App
Paths\winzip32.exe []")</script>
</variable>
</environment>
<version>
The <version> element defines the version for the component, but does not affect the migration.
Number of occurrences: zero or one
Parent elements:<component>
Child elements: none
Syntax:
<version>ComponentVersion</version>
<version>4.*</version>
<windowsObjects>
The <windowsObjects> element is for USMT internal use only. Do not use this element.
Appendix
Specifying locations
Specifying encoded locations . The encoded location used in all of the helper functions is an
unambiguous string representation for the name of an object. It is composed of the node part, optionally
followed by the leaf enclosed in square brackets. This makes a clear distinction between nodes and
leaves.
For example, specify the file C:\Windows\Notepad.exe like this: c:\Windows[Notepad.exe] . Similarly,
specify the directory C:\Windows\System32 like this: c:\Windows\System32 . (Notice the absence of the []
construct.)
Representing the registry is very similar. The default value of a registry key is represented as an empty []
construct. For example, the default value for the HKLM\SOFTWARE\MyKey registry key will be
HKLM\SOFTWARE\MyKey[] .
Specifying location patterns . You specify a location pattern in a way that is similar to how you specify
an actual location. The exception is that both the node and leaf part accept patterns. However, a pattern
from the node does not extend to the leaf.
For example, the pattern c:\Windows\* will match the Windows directory and all subdirectories. But it will
not match any of the files in those directories. To match the files as well, you must specify
c:\Windows\*[*] .
Related topics
USMT XML Reference
Offline Migration Reference
3/26/2021 • 5 minutes to read • Edit Online
Offline migration enables the ScanState tool to run inside a different Windows® operating system than the
Windows operating system from which ScanState is gathering files and settings. There are two primary offline
scenarios:
Windows PE. The ScanState tool can be run from within Windows PE, gathering files and settings from
the offline Windows operating system on that machine.
Windows.old. The ScanState tool can now gather files and settings from the Windows.old directory that
is created during Windows installation on a partition that contains a previous installation of Windows.
For example, the ScanState tool can run in Windows 10, gathering files from a previous Windows 7or
Windows 8 installation contained in the Windows.old directory.
When you use User State Migration Tool (USMT) 10.0 to gather and restore user state, offline migration reduces
the cost of deployment by:
Reducing complexity. In computer-refresh scenarios, migrations from the Windows.old directory
reduce complexity by eliminating the need for the ScanState tool to be run before the operating system is
deployed. Also, migrations from the Windows.old directory enable ScanState and LoadState to be run
successively.
Improving performance. When USMT runs in an offline Windows Preinstallation Environment (WinPE)
environment, it has better access to the hardware resources. This may increase performance on older
machines with limited hardware resources and numerous installed software applications.
New recover y scenario. In scenarios where a machine no longer restarts properly, it might be possible
to gather user state with the ScanState tool from within WinPE.
In This topic
What Will Migrate Offline?
What Offline Environments are Supported?
User-Group Membership and Profile Control
Command-Line Options
Environment Variables
Offline.xml Elements
WinPE 5.0 or greater, with the MSXML library Windows Vista, Windows 7, Windows 8, Windows 10
Note It is possible to run the ScanState tool while the drive remains encrypted by suspending
Windows BitLocker Drive Encryption before booting into WinPE. For more information, see this Microsoft site.
<Configuration>
<ProfileControl>
<localGroups>
<mappings>
<changeGroup from="*" to="Users" appliesTo="MigratedUsers">
<include>
<pattern>*</pattern>
</include>
</changeGroup>
</mappings>
</localGroups>
</ProfileControl>
</Configuration>
For information about the format of a Config.xml file, see Config.xml File.
Command-Line Options
An offline migration can either be enabled by using a configuration file on the command line, or by using one of
the following command line options:
C O M P O N EN T O P T IO N DESC RIP T IO N
You can use only one of the /offline ,/offlineWinDir , or /OfflineWinOld command-line options at a time;
USMT does not support using more than one together.
Environment Variables
The following system environment variables are necessary in the scenarios outlined below.
VA RIA B L E VA L UE SC EN A RIO
USMT_WORKING_DIR Full path to a working directory Required when USMT binaries are
located on read-only media, which
does not support the creation of
log files or temporary storage. To
set the system environment
variable, at a command prompt
type the following:
Set USMT_WORKING_DIR=[path
to working directory]
VA RIA B L E VA L UE SC EN A RIO
Set
MIG_OFFLINE_PLATFORM_ARCH=32
Offline.xml Elements
Use an offline.xml file when running the ScanState tool on a computer that has multiple Windows directories.
The offline.xml file specifies which directories to scan for windows files. An offline.xml file can be used with the
/offline option as an alternative to specifying a single Windows directory path with the /offlineDir option.
<offline>
This element contains other elements that define how an offline migration is to be performed.
Syntax: <offline> </offline>
<winDir>
This element is a required child of <offline> and contains information about how the offline volume can be
selected. The migration will be performed from the first element of <winDir> that contains a valid Windows
system volume.
Syntax: < winDir > </ winDir >
<path>
This element is a required child of <winDir> and contains a file path pointing to a valid Windows directory.
Relative paths are interpreted from the ScanState tool's working directory.
Syntax: <path> c:\windows </path>
-or-
Syntax, when used with the <mappings> element: <path> C:\, D:\ </path>
<mappings>
This element is an optional child of <offline> . When specified, the <mappings> element will override the
automatically detected WinPE drive mappings. Each child <path> element will provide a mapping from one
system volume to another. Additionally, mappings between folders can be provided, since an entire volume can
be mounted to a specific folder.
Syntax: <mappings> </mappings>
<failOnMultipleWinDir>
This element is an optional child of <offline> . The <failOnMultipleWinDir> element allows the user to
specify that the migration should fail when USMT detects that there are multiple instances of Windows installed
on the source machine. When the <failOnMultipleWinDir> element isn't present, the default behavior is that
the migration does not fail.
Syntax: <failOnMultipleWinDir>1</failOnMultipleWinDir> or Syntax:
<failOnMultipleWinDir>0</failOnMultipleWinDir>
Offline .xml Example
The following XML example illustrates some of the elements discussed earlier in this topic.
<offline>
<winDir>
<path>C:\Windows</path>
<path>D:\Windows</path>
<path>E:\</path>
</winDir>
<failOnMultipleWinDir>1</failOnMultipleWinDir>
</offline>
Related topics
Plan Your Migration
SUA User's Guide
3/5/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
You can use Standard User Analyzer (SUA) to test your applications and monitor API calls to detect compatibility
issues related to the User Account Control (UAC) feature in Windows.
You can use SUA in either of the following ways:
Standard User Analyzer Wizard. A wizard that guides you through a step-by-step process to locate
and fix issues, without options for additional analysis.
Standard User Analyzer Tool. A full-function tool in which you can perform in-depth analysis and fix
issues.
In this section
TO P IC DESC RIP T IO N
Using the SUA Wizard The Standard User Analyzer (SUA) Wizard works much
like the SUA tool to evaluate User Account Control
(UAC) issues. However, the SUA Wizard does not offer
detailed analysis, and it cannot disable virtualization or
elevate your permissions.
Using the SUA Tool By using the Standard User Analyzer (SUA) tool, you can
test your applications and monitor API calls to detect
compatibility issues with the User Account Control
(UAC) feature.
Using the SUA Wizard
1/3/2020 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
The Standard User Analyzer (SUA) Wizard works much like the SUA tool to evaluate User Account Control (UAC)
issues. However, the SUA Wizard does not offer detailed analysis, and it cannot disable virtualization or elevate
your permissions.
For information about the SUA tool, see Using the SUA Tool.
Related topics
SUA User's Guide
Using the SUA Tool
12/23/2019 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
By using the Standard User Analyzer (SUA) tool, you can test your applications and monitor API calls to detect
compatibility issues with the User Account Control (UAC) feature.
The SUA Wizard also addresses UAC-related issues. In contrast to the SUA tool, the SUA Wizard guides you
through the process step by step, without the in-depth analysis of the SUA tool. For information about the SUA
Wizard, see Using the SUA Wizard.
In the SUA tool, you can turn virtualization on and off. When you turn virtualization off, the tested application
may function more like the way it does in earlier versions of Windows®.
In the SUA tool, you can choose to run the application as Administrator or as Standard User . Depending on
your selection, you may locate different types of UAC-related issues.
Related topics
Tabs on the SUA Tool Interface
Showing Messages Generated by the SUA Tool
Applying Filters to Data in the SUA Tool
Fixing Applications by Using the SUA Tool
Tabs on the SUA Tool Interface
11/2/2020 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
The tabs in the Standard User Analyzer (SUA) tool show the User Account Control (UAC) issues for the
applications that you analyze.
The following table provides a description of each tab on the user interface for the SUA tool.
TA B N A M E DESC RIP T IO N
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
On the user interface for the Standard User Analyzer (SUA) tool, you can show the messages that the tool has
generated.
To show the messages that the SUA tool has generated
1. Use the SUA tool to test an application. For more information, see Using the SUA Tool.
2. After you finish testing, in the SUA tool, click the App Info tab.
3. On the View menu, click the command that corresponds to the messages that you want to see. The
following table describes the commands.
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
On the user interface for the Standard User Analyzer (SUA) tool, you can apply filters to the issues that the tool
has found so that you can view only the information that interests you.
To apply filters to data in the SUA tool
1. Use the SUA tool to test an application. For more information, see Using the SUA Tool.
2. After you finish testing, in the SUA tool, click a tab that shows issues that the SUA tool has found. All tabs
except the App Info tab can show issues.
3. On the Options menu, click a command that corresponds to the filter that you want to apply. The
following table describes the commands.
O P T IO N S M EN U C O M M A N D DESC RIP T IO N
Load Noise Filter File Opens the Open Noise Filter File dialog box, in
which you can load an existing noise filter (.xml) file.
Expor t Noise Filter File Opens the Save Noise Filter File dialog box, in
which you can save filter settings as a noise filter
(.xml) file.
Only Display Records with Application Name Filters out records that do not have the application
in StackTrace name in the stack trace.
However, because the SUA tool captures only the
first 32 stack frames, this command can also filter
out real issues with the application where the call
stack is deeper than 32 frames.
Show More Details in StackTrace Shows additional stack frames that are related to the
SUA tool, but not related to the diagnosed
application.
O P T IO N S M EN U C O M M A N D DESC RIP T IO N
Warn Before Deleting AppVerifier Logs Displays a warning message before the SUA tool
deletes all of the existing SUA-related log files on the
computer.
This command is selected by default.
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
On the user interface for the Standard User Analyzer (SUA) tool, you can apply fixes to an application.
To fix an application by using the SUA tool
1. Use the SUA tool to test an application. For more information, see Using the SUA Tool.
2. After you finish testing, open the SUA tool.
3. On the Mitigation menu, click the command that corresponds to the action that you want to take. The
following table describes the commands.
Undo Mitigations Removes the application fixes that you just applied.
This option is available only after you apply an
application fix and before you close the SUA tool.
Alternatively, you can manually remove application
fixes by using Programs and Features in Control
Panel.
Expor t Mitigations as Windows Installer file Exports your application fixes as a Windows®
Installer (.msi) file, which can then be deployed to
other computers that are running the application.
Compatibility Fixes for Windows 10, Windows 8,
Windows 7, and Windows Vista
3/26/2021 • 28 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
You can fix some compatibility issues that are due to the changes made between Windows operating system
versions. These issues can include User Account Control (UAC) restrictions.
IMPORTANT
The Application Compatibility Toolkit (ACT) installs a 32-bit and a 64-bit version of the Compatibility Administrator. You
must use the 32-bit version for 32-bit applications and the 64-bit version to work for 64-bit applications. You will receive
an error message if you try to use the wrong version.
If you start the Compatibility Administrator as an Administrator (with elevated privileges), all repaired
applications can run successfully; however, virtualization and redirection might not occur as expected. To verify
that a compatibility fix addresses an issue, you must test the repaired application by running it under the
destination user account.
Compatibility Fixes
The following table lists the known compatibility fixes for all Windows operating systems that have been
released from Windows Vista through Windows 10. The fixes are listed in alphabetical order.
F IX F IX DESC RIP T IO N
8And16BitGDIRedraw This fix repairs applications that use GDI and that work
in 8-bit color mode. The application is forced to repaint
its window on RealizePalette.
F IX F IX DESC RIP T IO N
AccelGdipFlush This fix increases the speed of GdipFlush, which has perf
issues in DWM.
AoaMp4Converter This fix resolves a display issue for the AoA Mp4
Converter.
Note
For more detailed information about this application
fix, see Using the BlockRunAsInteractiveUser Fix.
Note
For more detailed information about this application
fix, see Using the CopyHKCUSettingsFromOtherUsers
Fix.
Note
For more detailed information about the
CorrectFilePaths application fix, see Using the
CorrectFilePaths Fix. We recommend that you use this
fix together with the CorrectFilePathsUninstall fix if you
are applying it to a setup installation file.
F IX F IX DESC RIP T IO N
Note
For more detailed information about this fix, see Using
the CorrectFilePathsUninstall Fix. We recommend that
you use this fix together with the CorrectFilePaths fix if
you are applying it to a setup installation file.
Note
For more detailed information about the
CorrectShellExecuteHWND application fix, see Using
the CorrectShellExecuteHWND Fix.
CustomNCRender This fix instructs DWM to not render the non-client area,
thereby forcing the application to do its own NC
rendering. This often gives windows an XP look.
Note
The PROCESS flag type can have a 32-bit length only.
You can separate multiple entries with a backslash ().
F IX F IX DESC RIP T IO N
Note
If you do not provide an App_Service name, the
deprecated service will be removed from all newly
created services.
Note
You can separate multiple entries with a forward slash
(/).
DisableDWM The problem occurs when some objects are not drawn
or object artifacts remain on the screen in an application.
The fix temporarily disables the Windows Aero menu
theme functionality for unsupported applications.
Note
For more detailed information about this application
fix, see Using the DisableDWM Fix.
Note
For more detailed information about this application
fix, see Using the ElevateCreateProcess Fix.
Note
For more detailed information about this application
fix, see Using the EmulateGetDiskFreeSpace Fix.
Note
For more detailed information about this e application
fix, see Using the EmulateSorting Fix.
Note
For more detailed information about this application
fix, see Using the EnableRestarts Fix.
Note
You can type FailAll=1 at the command prompt to
suppress the function implementation and force all
functions to fail.
Note
For more detailed information about the
FakeLunaTheme application fix, see Using the
FakeLunaTheme Fix.
Note
For more detailed information about this application
fix, see Using the ForceAdminAccess Fix.
ForceInvalidateOnClose The fix invalidates any windows that exist under a closing
or hiding window for applications that rely on the
invalidation messages.
ForceLoadMirrorDrvMitigation The fix loads the Windows 8 mirror driver mitigation for
applications where the mitigation is not automatically
applied.
Note
For more detailed information about this application
fix, see Using the IgnoreAltTab Fix.
F IX F IX DESC RIP T IO N
Note
Symbolic links appear starting in Windows Vista.
Important
You should use this compatibility fix only if you are
certain that it is acceptable to ignore the exception.
You might experience additional compatibility issues if
you choose to incorrectly ignore an exception.
Note
For more detailed information about this application
fix, see Using the IgnoreException Fix.
Note
For more detailed information about this application
fix, see Using the IgnoreMessageBox Fix.
InstallComponent The fix prompts the user to install.Net 3.5 or .Net 2.0
because .Net is not included with Windows 8.
Note
For more detailed information about this application
fix, see Using the LocalMappedObject Fix.
F IX F IX DESC RIP T IO N
Note
For more detailed information about this application
fix, see Using the MakeShortcutRunas Fix
Note
For more detailed information about this application
fix, see Using the OpenDirectoryACL Fix.
Note
This issue seems to occur most frequently with .NET
applications.
RedirectCRTTempFile The fix intercepts failing CRT calls that try to create a
temporary file at the root of the volume, thereby
redirecting the calls to a temporary file in the user's
temporary directory.
F IX F IX DESC RIP T IO N
RedirectMP3Codec This problem occurs when you cannot play MP3 files.
The fix intercepts the CoCreateInstance call for the
missing filter and then redirects it to a supported
version.
Note
For more detailed information about this application
fix, see Using the RelaunchElevated Fix.
F IX F IX DESC RIP T IO N
Note
For more detailed information about this
application fix, see Using the
RetryOpenSCManagerwithReadAccess Fix.
Note
For more detailed information about this application
fix, see Using the RetryOpenServiceWithReadAccess
Fix.
Note
For more detailed information about this application
fix, see Using the RunAsAdmin Fix.
F IX F IX DESC RIP T IO N
Note
For more detailed information about this application
fix, see Using the RunAsHighest Fix.
Note
For more detailed information about this application
fix, see Using the RunAsInvoker Fix.
SessionShim The fix intercepts API calls from applications that are
trying to interact with services that are running in
another session, by using the terminal service name
prefix (Global or Local) as the parameter.
At the command prompt, you can supply a list of objects
to modify, separating the values by a double backslash
(). Or, you can choose not to include any parameters, so
that all of the objects are modified.
Important
Users cannot log in as Session 0 (Global Session) in
Windows Vista and later. Therefore, applications that
require access to Session 0 automatically fail.
Note
For more detailed information about this application
fix, see Using the SessionShim Fix.
F IX F IX DESC RIP T IO N
Note
Only the mail client and the mailto protocol are
supported. You can separate multiple clients by using
a backslash ().
Note
For more information about this application fix, see
Using the ShimViaEAT Fix.
Note
For more detailed information about this application
fix, see Using the SpecificInstaller Fix.
Note
For more detailed information about this application
fix, see Using the SpecificNonInstaller Fix.
TrimDisplayDeviceNames The fix trims the names of the display devices that are
returned by the EnumDisplayDevices API.
Note
Multiple message strings must be separated by
spaces. For more detailed information about this
application fix, see Using the UIPIEnableCustomMsgs
Fix.
Note
Multiple messages can be separated by spaces. For
more detailed information about this application fix,
see Using the UIPIEnableStandardMsgs Fix [act].
Note
For more detailed information about this application
fix, see Using the VirtualizeDeleteFile Fix.
Note
For more detailed information about this application
fix, see Using the VirtualizeRegisterTypelib Fix.
F IX F IX DESC RIP T IO N
WerDisableReportException The fix turns off the silent reporting of exceptions to the
Windows Error Reporting tool, including those that are
reported by Object Linking and Embedding-Database
(OLE DB). The fix intercepts the RtlReportException API
and returns a STATUS_NOT_SUPPORTED error message.
Important
The application must have Administrator privileges for
this fix to work.
WinSrv08R2RTM
F IX F IX DESC RIP T IO N
Note
For more information about the
WinXPSP2VersionLie application fix, see Using
the WinXPSP2VersionLie Fix.
Note
For more detailed information about this application
fix, see Using the WRPDllRegister Fix.
F IX F IX DESC RIP T IO N
Note
For more detailed information about WRPMitigation,
see Using the WRPMitigation Fix.
Compatibility Modes
The following table lists the known compatibility modes.
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
The Compatibility Administrator tool helps you resolve potential application-compatibility issues before
deploying a new version of Windows to your organization. Compatibility Administrator provides the following:
Compatibility fixes, compatibility modes, and AppHelp messages that you can use to resolve specific
compatibility issues.
Tools for creating customized compatibility fixes, compatibility modes, AppHelp messages, and
compatibility databases.
A query tool that you can use to search for installed compatibility fixes on your local computers.
The following flowchart shows the steps for using the Compatibility Administrator tool to create your
compatibility fixes, compatibility modes, and AppHelp messages.
IMPORTANT
Application Compatibility Toolkit (ACT) installs a 32-bit and a 64-bit version of the Compatibility Administrator tool. You
must use the 32-bit version to create and work with custom databases for 32-bit applications, and the 64-bit version to
create and work with custom databases for 64-bit applications.
In this section
TO P IC DESC RIP T IO N
Using the Compatibility Administrator Tool This section provides information about using the
Compatibility Administrator tool.
TO P IC DESC RIP T IO N
Managing Application-Compatibility Fixes and Custom This section provides information about managing your
Fix Databases application-compatibility fixes and custom-compatibility
fix databases. This section explains the reasons for using
compatibility fixes and how to deploy custom-
compatibility fix databases.
Using the Sdbinst.exe Command-Line Tool You must deploy your customized database (.sdb) files to
other computers in your organization before your
compatibility fixes, compatibility modes, and AppHelp
messages are applied. You can deploy your customized
database files in several ways, including by using a logon
script, by using Group Policy, or by performing file copy
operations.
Using the Compatibility Administrator Tool
11/2/2020 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
This section provides information about using the Compatibility Administrator tool.
In this section
TO P IC DESC RIP T IO N
Available Data Types and Operators in Compatibility The Compatibility Administrator tool provides a way to
Administrator query your custom-compatibility databases.
Searching for Fixed Applications in Compatibility With the search functionality in Compatibility
Administrator Administrator, you can locate specific executable (.exe)
files with previously applied compatibility fixes,
compatibility modes, or AppHelp messages. This is
particularly useful if you are trying to identify
applications with a specific compatibility fix or identifying
which fixes are applied to a specific application.
Searching for Installed Compatibility Fixes with the You can access the Query tool from within Compatibility
Query Tool in Compatibility Administrator Administrator. The Query tool provides the same
functionality as using the Search feature.
Creating a Custom Compatibility Fix in Compatibility The Compatibility Administrator tool uses the term fix to
Administrator describe the combination of compatibility information
added to a customized database for a specific
application. This combination can include single
application fixes, groups of fixes that work together as a
compatibility mode, and blocking and non-blocking
AppHelp messages.
Creating a Custom Compatibility Mode in Compatibility Windows® provides several compatibility modes,
Administrator groups of compatibility fixes found to resolve many
common application-compatibility issues. While working
with Compatibility Administrator, you might decide to
group some of your individual compatibility fixes into a
custom-compatibility mode, which you can then deploy
and use on any of your compatibility databases.
TO P IC DESC RIP T IO N
Creating an AppHelp Message in Compatibility The Compatibility Administrator tool enables you to
Administrator create an AppHelp text message. This is a blocking or
non-blocking message that appears when a user starts
an application that you know has major functionality
issues on the Windows® operating system.
Viewing the Events Screen in Compatibility The Events screen enables you to record and to view
Administrator your activities in the Compatibility Administrator tool,
provided that the screen is open while you perform the
activities.
Enabling and Disabling Compatibility Fixes in You can disable and enable individual compatibility fixes
Compatibility Administrator in your customized databases for testing and
troubleshooting purposes.
Installing and Uninstalling Custom Compatibility The Compatibility Administrator tool enables the
Databases in Compatibility Administrator creation and the use of custom-compatibility and
standard-compatibility databases. Both the custom
databases and the standard databases store the known
compatibility fixes, compatibility modes, and AppHelp
messages. They also store the required application-
matching information for installation on your local
computers.
Available Data Types and Operators in
Compatibility Administrator
11/2/2020 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
The Compatibility Administrator tool provides a way to query your custom-compatibility databases.
Available Attributes
The following table shows the attributes you can use for querying your customized-compatibility databases in
Compatibility Administrator.
Available Operators
The following table shows the operators that you can use for querying your customized-compatibility databases
in the Compatibility Administrator.
Right-hand operand .
String
Related topics
Using the Compatibility Administrator Tool
Searching for Fixed Applications in Compatibility
Administrator
12/30/2019 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
With the search functionality in Compatibility Administrator, you can locate specific executable (.exe) files with
previously applied compatibility fixes, compatibility modes, or AppHelp messages. This is particularly useful if
you are trying to identify applications with a specific compatibility fix or identifying which fixes are applied to a
specific application.
The Quer y Compatibility Databases tool provides additional search options. For more information, see
Searching for Installed Compatibility Fixes with the Query Tool in Compatibility Administrator.
Related topics
Compatibility Administrator User's Guide
Searching for Installed Compatibility Fixes with the
Query Tool in Compatibility Administrator
12/6/2019 • 5 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
You can access the Query tool from within Compatibility Administrator. The Query tool provides the same
functionality as using the Search feature.
For information about the Search feature, see Searching for Fixed Applications in Compatibility Administrator.
However, the Query tool provides more detailed search criteria, including tabs that enable you to search the
program properties, the compatibility fix properties, and the fix description. You can perform a search by using
SQL SELECT and WHERE clauses, in addition to searching specific types of databases.
IMPORTANT
You must perform your search with the correct version of the Compatibility Administrator tool. To use the Query tool to
search for a 32-bit custom database, you must use the 32-bit version of Compatibility Administrator. To use the Query
tool to search for a 64-bit custom database, you must use the 64-bit version of Compatibility Administrator.
IMPORTANT
If you do not select any of the check boxes, the search will look for all types of compatibility fixes. Do not select
multiple check boxes because only applications that match all of the requirements will appear.
NOTE
You can use the percent (%) symbol as a wildcard in your fix-properties query, as a substitute for any string of
zero or more characters
5. Select the check box for either Search in Compatibility Fixes or Search in Compatibility Modes .
IMPORTANT
Your text must match the type of compatibility fix or mode for which you are performing the query. For example,
entering the name of a compatibility fix and selecting the compatibility mode check box will not return any results.
Additionally, if you select both check boxes, the query will search for the fix by compatibility mode and
compatibility fix. Only applications that match both requirements appear.
IMPORTANT
You cannot use wildcards as part of the Fix Description search query because the default behavior is to search for
any entry that meets your search criteria.
5. Refine your search by selecting Match any word or Match all words from the drop-down list.
6. Click Find Now .
The query runs and the results of the query are displayed in the lower pane.
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
The Compatibility Administrator tool uses the term fix to describe the combination of compatibility information
added to a customized database for a specific application. This combination can include single application fixes,
groups of fixes that work together as a compatibility mode, and blocking and non-blocking AppHelp messages.
IMPORTANT
Fixes apply to a single application only; therefore, you must create multiple fixes if you need to fix the same issue in
multiple applications.
IMPORTANT
Application Compatibility Toolkit (ACT) installs a 32-bit and a 64-bit version of the Compatibility Administrator tool. You
must use the 32-bit version to create custom databases for 32-bit applications and the 64-bit version to create custom
databases for 64-bit applications.
Related topics
Compatibility Administrator User's Guide
Creating a Custom Compatibility Mode in
Compatibility Administrator
12/3/2019 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
Windows® provides several compatibility modes, groups of compatibility fixes found to resolve many
common application-compatibility issues. While working with Compatibility Administrator, you might decide to
group some of your individual compatibility fixes into a custom-compatibility mode, which you can then deploy
and use on any of your compatibility databases.
IMPORTANT
Application Compatibility Toolkit (ACT) installs a 32-bit and a 64-bit version of the Compatibility Administrator tool. You
must use the 32-bit version to create custom databases for 32-bit applications and the 64-bit version to create custom
databases for 64-bit applications.
IMPORTANT
A compatibility mode includes a set of compatibility fixes and must be deployed as a group. Therefore, you should include
only fixes that you intend to deploy together to the database.
IMPORTANT
If you are unsure which compatibility fixes to add, you can click Copy Mode . The Select Compatibility Mode
dialog box appears and enables you to select from the preloaded compatibility modes. After you select a
compatibility mode and click OK , any compatibility fixes that are included in the preloaded compatibility mode will
be automatically added to your custom-compatibility mode. If you have any compatibility fixes that require
additional parameters, you can select the fix, and then click Parameters . The Options for
<Compatibility_Fix_Name> dialog box appears, enabling you to update the parameter fields.
4. After you are done selecting the compatibility fixes to include, click OK .
The compatibility mode is added to your custom database.
Related topics
Compatibility Administrator User's Guide
Creating an AppHelp Message in Compatibility
Administrator
12/20/2019 • 3 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
The Compatibility Administrator tool enables you to create an AppHelp text message. This is a blocking or non-
blocking message that appears when a user starts an application that you know has major functionality issues
on the Windows® operating system.
IMPORTANT
Application Compatibility Toolkit (ACT) installs a 32-bit and a 64-bit version of the Compatibility Administrator tool. You
must use the 32-bit version to create custom databases for 32-bit applications and the 64-bit version to create custom
databases for 64-bit applications.
Related topics
Compatibility Administrator User's Guide
Viewing the Events Screen in Compatibility
Administrator
1/3/2020 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
The Events screen enables you to record and to view your activities in the Compatibility Administrator tool,
provided that the screen is open while you perform the activities.
IMPORTANT
The Events screen only records your activities when the screen is open. If you perform an action before opening the
Events screen, the action will not appear in the list.
Related topics
Creating a Custom Compatibility Mode in Compatibility Administrator
Compatibility Administrator User's Guide
Enabling and Disabling Compatibility Fixes in
Compatibility Administrator
3/5/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
You can disable and enable individual compatibility fixes in your customized databases for testing and
troubleshooting purposes.
IMPORTANT
Application Compatibility Toolkit (ACT) installs a 32-bit and a 64-bit version of the Compatibility Administrator tool. You
must use the 32-bit version to work with custom databases for 32-bit applications and the 64-bit version to work with
custom databases for 64-bit applications.
Related topics
Compatibility Administrator User's Guide
Installing and Uninstalling Custom Compatibility
Databases in Compatibility Administrator
12/3/2019 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
The Compatibility Administrator tool enables the creation and the use of custom-compatibility and standard-
compatibility databases. Both the custom databases and the standard databases store the known compatibility
fixes, compatibility modes, and AppHelp messages. They also store the required application-matching
information for installation on your local computers.
By default, the Windows® operating system installs a System Application Fix database for use with the
Compatibility Administrator. This database can be updated through Windows Update, and is stored in the
%WINDIR% \AppPatch directory. Your custom databases are automatically stored in the
%WINDIR% \AppPatch\Custom directory and are installed by using the Sdbinst.exe tool provided with the
Compatibility Administrator.
IMPORTANT
Application Compatibility Toolkit (ACT) installs a 32-bit and a 64-bit version of the Compatibility Administrator tool. You
must use the 32-bit version to work with custom databases for 32-bit applications and the 64-bit version to work with
custom databases for 64-bit applications.
In addition, you must deploy your databases to your organization’s computers before the included fixes will
have any effect on the application issue. For more information about deploying your database, see Using the
Sdbinst.exe Command-Line Tool.
Related topics
Compatibility Administrator User's Guide
Managing Application-Compatibility Fixes and
Custom Fix Databases
12/24/2019 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
This section provides information about managing your application-compatibility fixes and custom-
compatibility fix databases. This section explains the reasons for using compatibility fixes and how to deploy
custom-compatibility fix databases.
In this section
TO P IC DESC RIP T IO N
Understanding and Using Compatibility Fixes As the Windows operating system evolves to support
new technology and functionality, the implementations
of some functions may change. This can cause problems
for applications that relied upon the original
implementation. You can avoid compatibility issues by
using the Microsoft Windows Application Compatibility
(Compatibility Fix) infrastructure to create a specific
application fix for a particular version of an application.
Compatibility Fix Database Management Strategies and After you determine that you will use compatibility fixes
Deployment in your application-compatibility mitigation strategy, you
must define a strategy to manage your custom
compatibility-fix database. Typically, you can use one of
two approaches:
Testing Your Application Mitigation Packages This topic provides details about testing your
application-mitigation packages, including
recommendations about how to report your information
and how to resolve any outstanding issues.
Related topics
Compatibility Administrator User's Guide
Using the Compatibility Administrator Tool
Understanding and Using Compatibility Fixes
9/5/2019 • 4 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
As the Windows operating system evolves to support new technology and functionality, the implementations of
some functions may change. This can cause problems for applications that relied upon the original
implementation. You can avoid compatibility issues by using the Microsoft Windows Application Compatibility
(Compatibility Fix) infrastructure to create a specific application fix for a particular version of an application.
Specifically, the process modifies the address of the affected Windows function in the IAT to point to the
compatibility fix code, as shown in the following figure.
NOTE
For statically linked DLLs, the code redirection occurs as the application loads. You can also fix dynamically linked DLLs by
hooking into the GetProcAddress API.
NOTE
Some antivirus, firewall, and anti-spyware code runs in kernel mode.
Related topics
Managing Application-Compatibility Fixes and Custom Fix Databases
Compatibility Fix Database Management Strategies
and Deployment
3/5/2021 • 6 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
After you determine that you will use compatibility fixes in your application-compatibility mitigation strategy,
you must define a strategy to manage your custom compatibility-fix database. Typically, you can use one of two
approaches:
Deploying your compatibility fixes as part of an application-installation package.
Deploying your compatibility fixes through a centralized compatibility-fix database.
Regardless of which approach you decide to use in your organization, Microsoft provides the following general
recommendations for improving the management of your custom compatibility-fix databases:
Define standards for when you will apply compatibility fixes.
You must define the standards and scenarios for using compatibility fixes, based on your specific business
and technology needs.
Define standards for your custom compatibility-fix databases.
You must define how to associate your compatibility fixes to particular applications. For example, you
might want to ensure that your compatibility fixes always include a version check, so that a fix will not be
applied to newer versions of your applications.
Define your resources responsible for addressing questions and enforcing your standards.
You must determine who will be responsible for staying current with the technology and standards
related to your compatibility fixes and custom compatibility-fix databases. As your databases are
managed over time, you must ensure that someone in your organization stays current with the relevant
technology.
NOTE
Custom DB1 contains a unique GUID that makes updating the database easier. For example, if you install a new
version of the custom compatibility-fix database that uses the same GUID as the previous version, the computer
will automatically uninstall the old version.
6. The centralized management team then redeploys the new version of Custom DB1 to all of the end users
in your organization.
Deploying Your Custom Compatibility-Fix Databases
Deploying your custom compatibility-fix database into your organization requires you to perform the following
actions:
1. Store your custom compatibility-fix database (.sdb file) in a location that is accessible to all of your
organization's computers.
2. Use the Sdbinst.exe command-line tool to install the custom compatibility-fix database locally.
In order to meet the two requirements above, we recommend that you use one of the following two methods:
Using a Windows Installer package and a custom script
You can package your .sdb file and a custom deployment script into an .msi file, and then deploy the .msi
file into your organization.
IMPORTANT
You must ensure that you mark your custom script so that it does not impersonate the calling user. For example, if
you use Microsoft® Visual Basic® Scripting Edition (VBScript), the custom action type would be:
msidbCustomActionTypeVBScript + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate
= 0x0006 + 0x0400 + 0x0800 = 0x0C06 = 3078 decimal)
IMPORTANT
You must ensure that you call the script at a time when it will receive elevated rights. For example, you should call the
script by using computer startup scripts instead of a user logon script. You must also ensure that the installation of the
custom compatibility-fix database occurs with Administrator rights.
Example Script for an Installation of the .sdb File based on an .msi File
The following examples show an installation of a custom compatibility-fix database based on an .msi file.
'InstallSDB.vbs
Function Install
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "sdbinst.exe -q " & CHR(34) & "%ProgramFiles%\MyOrganizationSDB\MyOrg.sdb" & CHR(34), 0, true
WshShell.Run "cmd.exe /c " & CHR(34) & "del " & CHR(34) & "%ProgramFiles%\MyOrganizationSDB\MyOrg.sdb" &
CHR(34) & CHR(34), 0
WshShell.Run "reg.exe delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
{guidFromMyOrgsSdb}.sdb /f", 0
End Function
Function UnInstall
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "sdbinst.exe -q -u -g {guidFromMyOrgsSdb}", 0
End Function
Related topics
Managing Application-Compatibility Fixes and Custom Fix Databases
Testing Your Application Mitigation Packages
12/30/2019 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012
Windows Server 2008 R2
This topic provides details about testing your application-mitigation packages, including recommendations
about how to report your information and how to resolve any outstanding issues.
NOTE
For more information about using Compatibility Administrator to apply compatibility fixes and compatibility
modes, see Using the Compatibility Administrator Tool.
Related topics
Managing Application-Compatibility Fixes and Custom Fix Databases
Using the Sdbinst.exe Command-Line Tool
1/2/2020 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2016
Windows Server 2012
Windows Server 2008 R2
You must deploy your customized database (.sdb) files to other computers in your organization before your
compatibility fixes, compatibility modes, and AppHelp messages are applied. You can deploy your customized
database files in several ways, including by using a logon script, by using Group Policy, or by performing file
copy operations.
After you deploy and store the customized databases on each of your local computers, you must register the
database files. Until you register the database files, the operating system is unable to identify the available
compatibility fixes when starting an application.
C:\Windows\system32>Sdbinst.exe /?
Usage: Sdbinst.exe [-?] [-q] [-u] [-g] [-p] [-n[:WIN32|WIN64]] myfile.sdb | {guid} | "name"
C:\Windows\system32>_
O P T IO N DESC RIP T IO N
O P T IO N DESC RIP T IO N
Related topics
Compatibility Administrator User's Guide
Volume Activation for Windows 10
3/26/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows Server 2012 R2
Windows Server 2012
Windows Server 2016
Windows Server 2019
Additional information
Plan for volume activation
Activate using Key Management Service
Activate using Active Directory-based activation
Activate clients running Windows 10
Monitor activation
Use the Volume Activation Management Tool
Appendix: Information sent to Microsoft during activation
Plan for volume activation
3/26/2021 • 18 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Looking for retail activation?
Get Help Activating Microsoft Windows
Product activation is the process of validating software with the manufacturer after it has been installed on a
specific computer. Activation confirms that the product is genuine—not a fraudulent copy—and that the product
key or serial number is valid and has not been compromised or revoked. Activation also establishes a link or
relationship between the product key and the particular installation.
During the activation process, information about the specific installation is examined. For online activations, this
information is sent to a server at Microsoft. This information may include the software version, the product key,
the IP address of the computer, and information about the device. The activation methods that Microsoft uses
are designed to help protect user privacy, and they cannot be used to track back to the computer or user. The
gathered data confirms that the software is a legally licensed copy, and this data is used for statistical analysis.
Microsoft does not use this information to identify or contact the user or the organization.
NOTE
The IP address is used only to verify the location of the request, because some editions of Windows (such as “Starter”
editions) can only be activated within certain geographical target markets.
Activation models
For a user or IT department, there are no significant choices about how to activate products that are acquired
through retail or OEM channels. The OEM performs the activation at the factory, and the user or the IT
department need take no activation steps.
With a retail product, the Volume Activation Management Tool (VAMT), which is discussed later in this guide,
helps you track and manage keys. For each retail activation, you can choose:
Online activation
Telephone activation
VAMT proxy activation
Telephone activation is primarily used in situations where a computer is isolated from all networks. VAMT proxy
activation (with retail keys) is sometimes used when an IT department wants to centralize retail activations or
when a computer with a retail version of the operating system is isolated from the Internet but connected to the
LAN. For volume-licensed products, however, you must determine the best method or combination of methods
to use in your environment. For Windows 10 Pro and Enterprise, you can choose from three models:
MAKs
KMS
Active Directory-based activation
Note Token-based activation is available for specific situations when approved customers rely on a public key
infrastructure in an isolated and high-security environment. For more information, contact your Microsoft
Account Team or your service representative. Token-based Activation option is available for Windows 10
Enterprise LTSB editions (Version 1507 and 1607).
Multiple activation key
A Multiple Activation Key (MAK) is commonly used in small- or mid-sized organizations that have a volume
licensing agreement, but they do not meet the requirements to operate a KMS or they prefer a simpler
approach. A MAK also allows permanent activation of computers that are isolated from the KMS or are part of
an isolated network that does not have enough computers to use the KMS.
To use a MAK, the computers to be activated must have a MAK installed. The MAK is used for one-time activation
with the Microsoft online hosted activation services, by telephone, or by using VAMT proxy activation. In the
simplest terms, a MAK acts like a retail key, except that a MAK is valid for activating multiple computers. Each
MAK can be used a specific number of times. The VAMT can assist in tracking the number of activations that
have been performed with each key and how many remain.
Organizations can download MAK and KMS keys from the Volume Licensing Service Center website. Each MAK
has a preset number of activations, which are based on a percentage of the count of licenses the organization
purchases; however, you can increase the number of activations that are available with your MAK by calling
Microsoft.
Key Management Service
With the Key Management Service (KMS), IT pros can complete activations on their local network, eliminating
the need for individual computers to connect to Microsoft for product activation. The KMS is a lightweight
service that does not require a dedicated system and can easily be cohosted on a system that provides other
services.
Volume editions of Windows 10 and Windows Server 2012 R2 (in addition to volume editions of operating
system editions since Windows Vista and Windows Server 2008) automatically connect to a system that hosts
the KMS to request activation. No action is required from the user.
The KMS requires a minimum number of computers (physical computers or virtual machines) in a network
environment. The organization must have at least five computers to activate Windows Server 2012 R2 and at
least 25 computers to activate client computers that are running Windows 10. These minimums are referred to
as activation thresholds.
Planning to use the KMS includes selecting the best location for the KMS host and how many KMS hosts to have.
One KMS host can handle a large number of activations, but organizations will often deploy two KMS hosts to
ensure availability. Only rarely will more than two KMS hosts be used. The KMS can be hosted on a client
computer or on a server, and it can be run on older versions of the operating system if proper configuration
steps are taken. Setting up your KMS is discussed later in this guide.
Active Directory-based activation
Active Directory-based activation is the newest type of volume activation, and it was introduced in Windows 8.
In many ways, Active Directory-based activation is similar to activation by using the KMS, but the activated
computer does not need to maintain periodic connectivity with the KMS host. Instead, a domain-joined
computer running Windows 10, Windows 8.1, Windows 8, Windows Server 2012 R2, or Windows
Server 2012 R2 queries AD DS for a volume activation object that is stored in the domain. The operating system
checks the digital signatures that are contained in the activation object, and then activates the device.
Active Directory-based activation allows enterprises to activate computers through a connection to their
domain. Many companies have computers at remote or branch locations, where it is impractical to connect to a
KMS, or would not reach the KMS activation threshold. Rather than use MAKs, Active Directory-based activation
provides a way to activate computers running Windows 10, Windows 8.1, Windows 8, Windows
Server 2012 R2, or Windows Server 2012 R2 as long as the computers can contact the company’s domain.
Active Directory-based activation offers the advantage of extending volume activation services everywhere you
already have a domain presence.
Number of computers in the core network that will connect KMS (central)
(directly or through a VPN) at least every 180 days
Note
The core network must meet the KMS activation
threshold.
Number of computers that do not have a retail volume Retail (online or phone)
license
Number of computers that do not have an OEM volume OEM (at factory)
license
See also
Volume Activation for Windows 10
Activate using Key Management Service
3/26/2021 • 5 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Looking for retail activation?
Get Help Activating Microsoft Windows 10
Get Help Activating Microsoft Windows 7 or Windows 8.1
There are three possible scenarios for volume activation of Windows 10 or Windows Server 2012 R2 by using a
Key Management Service (KMS) host:
Host KMS on a computer running Windows 10
Host KMS on a computer running Windows Server 2012 R2
Host KMS on a computer running an earlier version of Windows
Check out Windows 10 Volume Activation Tips.
NOTE
You cannot install a client KMS key into the KMS in Windows Server.
This scenario is commonly used in larger organizations that do not find the overhead of using a server a burden.
NOTE
If you receive error 0xC004F015 when trying to activate Windows 10 Enterprise, see KB 3086418.
NOTE
If you configured Active Directory-based activation before configuring KMS activation, you must use a client computer
that will not first try to activate itself by using Active Directory-based activation. You could use a workgroup computer
that is not joined to a domain or a computer running Windows 7 or Windows Server 2008 R2.
To verify that KMS volume activation works, complete the following steps:
1. On the KMS host, open the event log and confirm that DNS publishing is successful.
2. On a client computer, open a Command Prompt window, type Slmgr.vbs /ato , and then press ENTER.
The /ato command causes the operating system to attempt activation by using whichever key has been
installed in the operating system. The response should show the license state and detailed Windows
version information.
3. On a client computer or the KMS host, open an elevated Command Prompt window, type Slmgr.vbs
/dlv , and then press ENTER.
The /dlv command displays the detailed licensing information. The response should return an error that
states that the KMS activation count is too low. This confirms that KMS is functioning correctly, even
though the client has not been activated.
For more information about the use and syntax of slmgr.vbs, see Slmgr.vbs Options.
Key Management Service in earlier versions of Windows
If you have already established a KMS infrastructure in your organization for an earlier version of Windows, you
may want to continue using that infrastructure to activate computers running Windows 10 or Windows
Server 2012 R2. Your existing KMS host must be running Windows 7 or later. To upgrade your KMS host,
complete the following steps:
1. Download and install the correct update for your current KMS host operating system. Restart the computer
as directed.
2. Request a new KMS host key from the Volume Licensing Service Center.
3. Install the new KMS host key on your KMS host.
4. Activate the new KMS host key by running the slmgr.vbs script.
For detailed instructions, see Update that enables Windows 8.1 and Windows 8 KMS hosts to activate a later
version of Windows and Update that enables Windows 7 and Windows Server 2008 R2 KMS hosts to activate
Windows 10.
See also
Volume Activation for Windows 10
Activate using Active Directory-based activation
3/26/2021 • 4 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows Server 2012 R2
Windows Server 2012
Windows Server 2016
Windows Server 2019
Office 2013*
Office 2016*
Office 2019*
To configure Active Director y-based activation on Windows Ser ver 2012 R2 or higher, complete
the following steps:
1. Use an account with Domain Administrator and Enterprise Administrator credentials to sign in to a
domain controller.
2. Launch Server Manager.
3. Add the Volume Activation Services role, as shown in Figure 11.
Figure 11 . Adding the Volume Activation Services role
4. Click the link to launch the Volume Activation Tools (Figure 12).
NOTE
To activate a KMS Host Key (CSVLK) for Microsoft Office, you need to install the version-specific Office Volume
License Pack on the server where the Volume Activation Server Role is installed.
Office 2013 VL pack
Office 2016 VL pack
Office 2019 VL pack
8. After activating the key, click Commit , and then click Close .
See also
Volume Activation for Windows 10
Activate clients running Windows 10
11/2/2020 • 11 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Looking for retail activation?
Get Help Activating Microsoft Windows
After you have configured Key Management Service (KMS) or Active Directory-based activation on your
network, activating a client running Windows 10 is easy. If the computer has been configured with a Generic
Volume License Key (GVLK), neither IT nor the user need take any action. It just works. Enterprise edition images
and installation media should already be configured with the GVLK. When the client computer starts, the
Licensing service examines the current licensing condition of the computer. If activation or reactivation is
required, the following sequence occurs:
1. If the computer is a member of a domain, it asks a domain controller for a volume activation object. If Active
Directory-based activation is configured, the domain controller returns the object. If the object matches the
edition of the software that is installed and the computer has a matching GVLK, the computer is activated (or
reactivated), and it will not need to be activated again for 180 days, although the operating system will
attempt reactivation at much shorter, regular intervals.
2. If the computer is not a member of a domain or if the volume activation object is not available, the computer
will issue a DNS query to attempt to locate a KMS server. If a KMS server can be contacted, activation occurs
if the KMS has a key that matches the computer’s GVLK.
3. The computer tries to activate against Microsoft servers if it is configured with a MAK.
If the client is not able to activate itself successfully, it will periodically try again. The frequency of the retry
attempts depends on the current licensing state and whether the client computer has been successfully activated
in the past. For example, if the client computer had been previously activated by Active Directory-based
activation, it will periodically try to contact the domain controller at each restart.
See also
Volume Activation for Windows 10
Monitor activation
3/26/2021 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Looking for retail activation?
Get Help Activating Microsoft Windows
You can monitor the success of the activation process for a computer running Windows in several ways. The
most popular methods include:
Using the Volume Licensing Service Center website to track use of MAK keys.
Using the Slmgr /dlv command on a client computer or on the KMS host. (For a full list of options, see
Slmgr.vbs Options.)
Viewing the licensing status, which is exposed through Windows Management Instrumentation (WMI);
therefore, it is available to non-Microsoft or custom tools that can access WMI. (Windows PowerShell can
also access WMI information.)
Most licensing actions and events are recorded in the Event log (ex: Application Log events 12288-12290).
Microsoft System Center Operations Manager and the KMS Management Pack can provide insight and
information to users of System Center Operations Manager.
See Troubleshooting activation error codes for information about troubleshooting procedures for Multiple
Activation Key (MAK) or the Key Management Service (KMS).
The VAMT provides a single site from which to manage and monitor volume activations. This is explained in
the next section.
See also
Volume Activation for Windows 10
Use the Volume Activation Management Tool
3/26/2021 • 3 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Looking for retail activation?
Get Help Activating Microsoft Windows
The Volume Activation Management Tool (VAMT) provides several useful features, including the ability to
perform VAMT proxy activation and to track and monitor several types of product keys.
By using the VAMT, you can automate and centrally manage the volume, retail, and MAK activation process for
Windows, Office, and select other Microsoft products. The VAMT can manage volume activation by using MAKs
or KMS. It is a standard Microsoft Management Console snap-in, and it can be installed on any computer
running Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2012 R2, Windows Server 2012,
or Windows Server 2008 R2.
The VAMT is distributed as part of the Windows Assessment and Deployment Kit (Windows ADK), which is a free
download available from Microsoft Download Center. For more information, see Windows Assessment and
Deployment Kit (Windows ADK) for Windows 10.
In Windows Server 2012 R2, you can install the VAMT directly from Server Manager without downloading the
Windows ADK by selecting the Volume Activation Services role or the Remote Server Administration Tools/Role
Administration Tools/Volume Activation Tools feature.
See also
Volume Activation for Windows 10
Appendix: Information sent to Microsoft during
activation
11/2/2020 • 2 minutes to read • Edit Online
Applies to
Windows 10
Windows 8.1
Windows 8
Windows 7
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Looking for retail activation?
Get Help Activating Microsoft Windows
When you activate a computer running Windows 10, the following information is sent to Microsoft:
The Microsoft product code (a five-digit code that identifies the Windows product you are activating)
A channel ID or site code that identifies how the Windows product was originally obtained
For example, a channel ID or site code identifies whether the product was originally purchased from a
retail store, obtained as an evaluation copy, obtained through a volume licensing program, or preinstalled
by a computer manufacturer.
The date of installation and whether the installation was successful
Information that helps confirm that your Windows product key has not been altered
Computer make and model
Version information for the operating system and software
Region and language settings
A unique number called a globally unique identifier, which is assigned to your computer
Product key (hashed) and product ID
BIOS name, revision number, and revision date
Volume serial number (hashed) of the hard disk drive
The result of the activation check
This includes error codes and the following information about any activation exploits and related
malicious or unauthorized software that was found or disabled:
The activation exploit’s identifier
The activation exploit’s current state, such as cleaned or quarantined
Computer manufacturer’s identification
The activation exploit’s file name and hash in addition to a hash of related software components that
may indicate the presence of an activation exploit
The name and a hash of the contents of your computer’s startup instructions file
If your Windows license is on a subscription basis, information about how your subscription works
Standard computer information is also sent, but your computer’s IP address is only retained temporarily.
Use of information
Microsoft uses the information to confirm that you have a licensed copy of the software. Microsoft does not use
the information to contact individual consumers. For additional details, see Windows 10 Privacy Statement.
See also
Volume Activation for Windows 10
How to install fonts that are missing after upgrading
to Windows 10
11/2/2020 • 3 minutes to read • Edit Online
When you upgrade from the Windows 7, Windows 8, or Windows 8.1 operating system to Windows 10, certain
fonts are no longer available by default post-upgrade. To reduce the operating system footprint, improve
performance, and optimize disk space usage, we moved many of the fonts that were previously shipped with
prior versions of Windows to the optional features of Windows 10. If you install a fresh instance of Windows 10,
or upgrade an older version of Windows to Windows 10, these optional features are not enabled by default. As a
result, these fonts appear to be missing from the system.
If you have documents created using the missing fonts, these documents might display differently on Windows
10.
For example, if you have an English (or French, German, or Spanish) version of Windows 10 installed, you might
notice that fonts such as the following are appear to be missing:
Gautami
Meiryo
Narkism/Batang
BatangChe
Dotum
DotumChe
Gulim
GulimChe
Gungsuh
GungsuhChe
If you want to use these fonts, you can enable the optional feature to add these back to your system. Be aware
that this is a permanent change in behavior for Windows 10, and it will remain this way in future releases.
Note: The optional features are installed by Windows Update. You need to be online for the Windows Update
service to work.
Related Topics
Download the list of all available language FODs
Features On Demand V2 (Capabilities)
Add Language Packs to Windows