mirror of
https://github.com/MicrosoftDocs/windows-itpro-docs.git
synced 2025-06-21 21:33:38 +00:00
conflicts
This commit is contained in:
@ -55,4 +55,4 @@
|
||||
##### [Activate clients running Windows 10](volume-activation/activate-windows-10-clients-vamt.md)
|
||||
##### [Monitor activation [client]](volume-activation/monitor-activation-client.md)
|
||||
##### [Use the Volume Activation Management Tool [client]](volume-activation/use-the-volume-activation-management-tool-client.md)
|
||||
##### [Appendix: Information sent to Microsoft during activation [client]](volume-activation/appendix-information-sent-to-microsoft-during-activation-client.md)
|
||||
##### [Appendix: Information sent to Microsoft during activation [client]](volume-activation/appendix-information-sent-to-microsoft-during-activation-client.md)
|
||||
|
@ -45,7 +45,7 @@ When preparing for the computer replace, you need to create a folder in which to
|
||||
2. Create and share the **E:\\MigData** folder by running the following three commands in an elevated Windows PowerShell prompt:
|
||||
``` powershell
|
||||
New-Item -Path E:\MigData -ItemType directory
|
||||
New-SmbShare ?Name MigData$ ?Path E:\MigData
|
||||
New-SmbShare -Name MigData$ -Path E:\MigData
|
||||
-ChangeAccess EVERYONE
|
||||
icacls E:\MigData /grant '"MDT_BA":(OI)(CI)(M)'
|
||||
```
|
||||
|
BIN
windows/deployment/update/images/update-catalog.png
Normal file
BIN
windows/deployment/update/images/update-catalog.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 151 KiB |
453
windows/deployment/update/media-dynamic-update.md
Normal file
453
windows/deployment/update/media-dynamic-update.md
Normal file
@ -0,0 +1,453 @@
|
||||
---
|
||||
title: Update Windows 10 media with Dynamic Update
|
||||
description: Learn how to deploy feature updates to your mission critical devices
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: manage
|
||||
audience: itpro
|
||||
itproauthor: jaimeo
|
||||
author: SteveDiAcetis
|
||||
ms.localizationpriority: medium
|
||||
ms.author: jaimeo
|
||||
ms.reviewer:
|
||||
manager: laurawi
|
||||
ms.collection: M365-modern-desktop
|
||||
ms.topic: article
|
||||
---
|
||||
|
||||
# Update Windows 10 media with Dynamic Update
|
||||
|
||||
**Applies to**: Windows 10
|
||||
|
||||
This topic explains how to acquire and apply Dynamic Update packages to existing Windows 10 images <em>prior to deployment</em> and includes Windows PowerShell scripts you can use to automate this process.
|
||||
|
||||
Volume-licensed media is available for each release of Windows 10 in the Volume Licensing Service Center (VLSC) and other relevant channels such as Windows Update for Business, Windows Server Update Services (WSUS), and Visual Studio Subscriptions. You can use Dynamic Update to ensure that Windows 10 devices have the latest feature update packages as part of an in-place upgrade while preserving language pack and Features on Demand (FODs) that might have been previously installed. Dynamic Update also eliminates the need to install a separate quality update as part of the in-place upgrade process.
|
||||
|
||||
## 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 10 Setup contacts a Microsoft endpoint to fetch Dynamic Update packages, and then applies those updates to your operating system installation media. The update packages includes 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](servicing-stack-updates.md) 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.
|
||||
|
||||
## Acquire Dynamic Update packages
|
||||
|
||||
You can obtain Dynamic Update packages from the [Microsoft Update Catalog](https://www.catalog.update.microsoft.com/Home.aspx). At that site, use the search bar in the upper right to find the Dynamic Update packages for a particular release. For example, you could enter *1809 Dynamic Update x64*, which would return results like this:
|
||||
|
||||

|
||||
|
||||
The various Dynamic Update packages might not all be present in the results from a single search, so you might have to search with different keywords to find all of the s. And you'll need to check various parts of the results to be sure you've identified the needed files. This table shows in <em>bold</em> the key items to search for or look for in the results. For example, to find the relevant "Setup Dynamic Update," you'll have to check the detailed description for the download by selecting the link in the **Title** column of the search results.
|
||||
|
||||
|
||||
|To find this Dynamic Update packages, search for or check the results here--> |Title |Product |Description (select the **Title** link to see **Details**) |
|
||||
|---------|---------|---------|---------|
|
||||
|Safe OS Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update,Windows **Safe OS Dynamic Update** | ComponentUpdate: |
|
||||
|Setup Dynamic Update | 2019-08 Dynamic Update... | Windows 10 Dynamic Update | **SetupUpdate** |
|
||||
|Latest cumulative update | 2019-08 **Cumulative Update for Windows 10** | Windows 10 | Install this update to resolve issues in Windows... |
|
||||
|Servicing stack Dynamic Update | 2019-09 **Servicing Stack Update for Windows 10** | Windows 10... | Install this update to 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](https://www.microsoft.com/licensing/servicecenter/default.aspx). 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.
|
||||
|
||||
## Update Windows 10 installation media
|
||||
|
||||
Properly updating the installation media involves a large number of actions operating on several different targets (image files). Some actions are repeated on different targets. The target images files include:
|
||||
|
||||
- Windows Preinstallation Environment (WinPE): a small operating system used to install, deploy, and repair Windows operating systems
|
||||
- Windows Recovery Environment (WinRE): repairs common causes of unbootable operating systems. WinRE is based on WinPE and can be customized with additional drivers, languages, optional packages, and other troubleshooting or diagnostic tools.
|
||||
- Windows operating system: one or more editions of Windows 10 stored in \sources\install.wim
|
||||
- Windows installation media: the complete collection of files and folders in the Windows 10 installation media. For example, \sources folder, \boot folder, Setup.exe, and so on.
|
||||
|
||||
This table shows the correct sequence for applying the various tasks to the files. For example, the full sequence starts with adding the servicing stack update to WinRE (1) and concludes with adding the Dynamic Update for Setup to the new media (26).
|
||||
|
||||
|Task |WinRE (winre.wim) |WinPE (boot.wim) |Operating system (install.wim) | New media |
|
||||
|---------|---------|---------|---------|------|
|
||||
|Add servicing stack Dynamic Update | 1 | 9 | 18 |
|
||||
|Add language pack | 2 | 10 | 19 |
|
||||
|Add localized optional packages | 3 | 11 | |
|
||||
|Add font support | 4 | 12 | |
|
||||
|Add text-to-speech | 5 | 13 | |
|
||||
|Update Lang.ini | | 14 | |
|
||||
|Add Features on Demand | | | 20 |
|
||||
|Add Safe OS Dynamic Update | 6 | | |
|
||||
|Add Setup Dynamic Update | | | | 26
|
||||
|Add latest cumulative update | | 15 | 21 |
|
||||
|Clean up the image | 7 | 16 | 22 |
|
||||
|Add Optional Components | | | 23 |
|
||||
|Add .Net and .Net cumulative updates | | | 24 |
|
||||
|Export image | 8 | 17 | 25 |
|
||||
|
||||
### Multiple Windows editions
|
||||
|
||||
The main operating system file (install.wim) contains multiple editions of Windows 10. It’s possible that only an update for a given edition is required to deploy it, based on the index. Or, it might be that all editions need an update. Further, ensure that languages are installed before Features on Demand, and the latest cumulative update is always applied last.
|
||||
|
||||
### Additional languages and features
|
||||
|
||||
You don't have to add more languages and features to the image to accomplish the updates, but it's an opportunity to customize the image with more languages, Optional Components, and Features on Demand beyond what is in your starting image. To do this, it's important to make these changes in the correct order: first apply servicing stack updates, followed by language additions, then by feature additions, and finally the latest cumulative update. The provided sample script installs a second language (in this case Japanese (ja-JP)). Since this language is backed by an lp.cab, there's no need to add a Language Experience Pack. Japanese is added to both the main operating system and to the recovery environment to allow the user to see the recovery screens in Japanese. This includes adding localized versions of the packages currently installed in the recovery image.
|
||||
|
||||
Optional Components, along with the .Net feature, can be installed offline, however doing so creates pending operations that require the device to restart. As a result, the call to perform image cleanup would fail. There are two options to avoid this. One option is to skip the image cleanup step, though that will result in a larger install.wim. Another option is to install the .Net and Optional Components in a step after cleanup but before export. This is the option in the sample script. By doing this, you will have to start with the original install.wim (with no pending actions) when you maintain or update the image the next time (for example, the next month).
|
||||
|
||||
## Windows PowerShell scripts to apply Dynamic Updates to an existing image
|
||||
|
||||
These examples are for illustration only, and therefore lack error handling. The script assumes that the following packages is stored locally in this folder structure:
|
||||
|
||||
|
||||
|Folder |Description |
|
||||
|---------|---------|
|
||||
|C:\mediaRefresh | Parent folder that contains the PowerShell script |
|
||||
|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.
|
||||
|
||||
```
|
||||
function Get-TS { return "{0:HH:mm:ss}" -f (Get-Date) }
|
||||
|
||||
Write-Host "$(Get-TS): Starting media refresh"
|
||||
|
||||
# Declare media for FOD and LPs
|
||||
$FOD_ISO_PATH = "C:\mediaRefresh\packages\FOD-PACKAGES_OEM_PT1_amd64fre_MULTI.iso"
|
||||
$LP_ISO_PATH = "C:\mediaRefresh\packages\CLIENTLANGPACKDVD_OEM_MULTI.iso"
|
||||
|
||||
# Declare language for showcasing adding optional localized components
|
||||
$LANG = "ja-jp"
|
||||
$LANG_FONT_CAPABILITY = "jpan"
|
||||
|
||||
# Declare Dynamic Update packages
|
||||
$LCU_PATH = “C:\mediaRefresh\packages\LCU.msu”
|
||||
$SSU_PATH = “C:\mediaRefresh\packages\SSU_DU.msu”
|
||||
$SETUP_DU_PATH = "C:\mediaRefresh\packages\Setup_DU.cab"
|
||||
$SAFE_OS_DU_PATH = “C:\mediaRefresh\packages\SafeOS_DU.cab”
|
||||
$DOTNET_CU_PATH = "C:\mediaRefresh\packages\DotNet_CU.msu”
|
||||
|
||||
# Declare folders for mounted images and temp files
|
||||
$WORKING_PATH = "C:\mediaRefresh\temp"
|
||||
$MEDIA_OLD_PATH = "C:\mediaRefresh\oldMedia"
|
||||
$MEDIA_NEW_PATH = "C:\mediaRefresh\newMedia"
|
||||
$MAIN_OS_MOUNT = $WORKING_PATH + "\MainOSMount”
|
||||
$WINRE_MOUNT = $WORKING_PATH + "\WinREMount”
|
||||
$WINPE_MOUNT = $WORKING_PATH + "\WinPEMount”
|
||||
|
||||
# Mount the language pack ISO
|
||||
Write-Host "$(Get-TS): Mounting LP ISO"
|
||||
$LP_ISO_DRIVE_LETTER = (Mount-DiskImage -ImagePath $LP_ISO_PATH -ErrorAction stop | Get-Volume).DriveLetter
|
||||
|
||||
# Declare language related cabs
|
||||
$WINPE_OC_PATH = Join-Path $LP_ISO_DRIVE_LETTER":" -ChildPath "Windows Preinstallation Environment" | Join-Path -ChildPath "x64" | Join-Path -ChildPath "WinPE_OCs"
|
||||
$WINPE_OC_LANG_PATH = Join-Path $WINPE_OC_PATH $LANG
|
||||
$WINPE_OC_LANG_CABS = Get-ChildItem $WINPE_OC_LANG_PATH -name
|
||||
$WINPE_OC_LP_PATH = Join-Path $WINPE_OC_LANG_PATH "lp.cab"
|
||||
$WINPE_FONT_SUPPORT_PATH = Join-Path $WINPE_OC_PATH "WinPE-FontSupport-$LANG.cab"
|
||||
$WINPE_SPEECH_TTS_PATH = Join-Path $WINPE_OC_PATH "WinPE-Speech-TTS.cab"
|
||||
$WINPE_SPEECH_TTS_LANG_PATH = Join-Path $WINPE_OC_PATH "WinPE-Speech-TTS-$LANG.cab"
|
||||
$OS_LP_PATH = $LP_ISO_DRIVE_LETTER + ":\x64\langpacks\" + "Microsoft-Windows-Client-Language-Pack_x64_" + $LANG + ".cab"
|
||||
|
||||
# Mount the Features on Demand ISO
|
||||
Write-Host "$(Get-TS): Mounting FOD ISO"
|
||||
$FOD_ISO_DRIVE_LETTER = (Mount-DiskImage -ImagePath $FOD_ISO_PATH -ErrorAction stop | Get-Volume).DriveLetter
|
||||
$FOD_PATH = $FOD_ISO_DRIVE_LETTER + ":\"
|
||||
|
||||
# Create folders for mounting images and storing temporary files
|
||||
New-Item -ItemType directory -Path $WORKING_PATH -ErrorAction Stop | Out-Null
|
||||
New-Item -ItemType directory -Path $MAIN_OS_MOUNT -ErrorAction stop | Out-Null
|
||||
New-Item -ItemType directory -Path $WINRE_MOUNT -ErrorAction stop | Out-Null
|
||||
New-Item -ItemType directory -Path $WINPE_MOUNT -ErrorAction stop | Out-Null
|
||||
|
||||
# Keep the original media, make a copy of it for the new, updateed media.
|
||||
Write-Host "$(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 s are used for updating other s. 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.
|
||||
|
||||
> [!NOTE]
|
||||
> Skip adding the latest cumulative update to Winre.wim because it contains unnecessary s in the recovery environment. The s that are updated and applicable are contained in the safe operating system Dynamic Update package. This also helps to keep the image small.
|
||||
|
||||
```
|
||||
# Mount the main operating system, used throughout the script
|
||||
Write-Host "$(Get-TS): Mounting main OS"
|
||||
Mount-WindowsImage -ImagePath $MEDIA_NEW_PATH"\sources\install.wim” -Index 1 -Path $MAIN_OS_MOUNT -ErrorAction stop| Out-Null
|
||||
|
||||
#
|
||||
# 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-Host "$(Get-TS): Mounting WinRE"
|
||||
Mount-WindowsImage -ImagePath $WORKING_PATH"\winre.wim” -Index 1 -Path $WINRE_MOUNT -ErrorAction stop | Out-Null
|
||||
|
||||
# Add servicing stack update
|
||||
Write-Host "$(Get-TS): Adding package $SSU_PATH"
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
#
|
||||
# Optional: Add the language to recovery environment
|
||||
#
|
||||
# Install lp.cab cab
|
||||
Write-Host "$(Get-TS): Adding package $WINPE_OC_LP_PATH"
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_OC_LP_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Install language cabs for each optional package installed
|
||||
$WINRE_INSTALLED_OC = Get-WindowsPackage -Path $WINRE_MOUNT
|
||||
Foreach ($PACKAGE in $WINRE_INSTALLED_OC) {
|
||||
|
||||
if ( ($PACKAGE.PackageState -eq "Installed") `
|
||||
-and ($PACKAGE.PackageName.startsWith("WinPE-")) `
|
||||
-and ($PACKAGE.ReleaseType -eq "FeaturePack") ) {
|
||||
|
||||
$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-Host "$(Get-TS): Adding package $OC_CAB_PATH"
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $OC_CAB_PATH -ErrorAction stop | Out-Null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Add font support for the new language
|
||||
if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) ) {
|
||||
Write-Host "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH"
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_FONT_SUPPORT_PATH -ErrorAction stop | Out-Null
|
||||
}
|
||||
|
||||
# Add TTS support for the new language
|
||||
if (Test-Path -Path $WINPE_SPEECH_TTS_PATH) {
|
||||
if ( (Test-Path -Path $WINPE_SPEECH_TTS_LANG_PATH) ) {
|
||||
|
||||
Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH"
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_SPEECH_TTS_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_LANG_PATH"
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $WINPE_SPEECH_TTS_LANG_PATH -ErrorAction stop | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
# Add Safe OS
|
||||
Write-Host "$(Get-TS): Adding package $SAFE_OS_DU_PATH"
|
||||
Add-WindowsPackage -Path $WINRE_MOUNT -PackagePath $SAFE_OS_DU_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Perform image cleanup
|
||||
Write-Host "$(Get-TS): Performing image cleanup on WinRE"
|
||||
DISM /image:$WINRE_MOUNT /cleanup-image /StartComponentCleanup | Out-Null
|
||||
|
||||
# Dismount
|
||||
Dismount-WindowsImage -Path $WINRE_MOUNT -Save -ErrorAction stop | Out-Null
|
||||
|
||||
# Export
|
||||
Write-Host "$(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)
|
||||
#
|
||||
|
||||
# Get the list of images contained within WinPE
|
||||
$WINPE_IMAGES = Get-WindowsImage -ImagePath $MEDIA_NEW_PATH“\sources\boot.wim”
|
||||
|
||||
Foreach ($IMAGE in $WINPE_IMAGES) {
|
||||
|
||||
# update WinPE
|
||||
Write-Host "$(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
|
||||
Write-Host "$(Get-TS): Adding package $SSU_PATH"
|
||||
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Install lp.cab cab
|
||||
Write-Host "$(Get-TS): Adding package $WINPE_OC_LP_PATH"
|
||||
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_OC_LP_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Install language cabs for each optional package installed
|
||||
$WINPE_INSTALLED_OC = Get-WindowsPackage -Path $WINPE_MOUNT
|
||||
Foreach ($PACKAGE in $WINPE_INSTALLED_OC) {
|
||||
|
||||
if ( ($PACKAGE.PackageState -eq "Installed") `
|
||||
-and ($PACKAGE.PackageName.startsWith("WinPE-")) `
|
||||
-and ($PACKAGE.ReleaseType -eq "FeaturePack") ) {
|
||||
|
||||
$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-Host "$(Get-TS): Adding package $OC_CAB_PATH"
|
||||
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $OC_CAB_PATH -ErrorAction stop | Out-Null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Add font support for the new language
|
||||
if ( (Test-Path -Path $WINPE_FONT_SUPPORT_PATH) ) {
|
||||
Write-Host "$(Get-TS): Adding package $WINPE_FONT_SUPPORT_PATH"
|
||||
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_FONT_SUPPORT_PATH -ErrorAction stop | Out-Null
|
||||
}
|
||||
|
||||
# Add TTS support for the new language
|
||||
if (Test-Path -Path $WINPE_SPEECH_TTS_PATH) {
|
||||
if ( (Test-Path -Path $WINPE_SPEECH_TTS_LANG_PATH) ) {
|
||||
|
||||
Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_PATH"
|
||||
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_SPEECH_TTS_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
Write-Host "$(Get-TS): Adding package $WINPE_SPEECH_TTS_LANG_PATH"
|
||||
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $WINPE_SPEECH_TTS_LANG_PATH -ErrorAction stop | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
# 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-Host "$(Get-TS): Updating lang.ini"
|
||||
DISM /image:$WINPE_MOUNT /Gen-LangINI /distribution:$WINPE_MOUNT | Out-Null
|
||||
}
|
||||
|
||||
# Add latest cumulative update
|
||||
Write-Host "$(Get-TS): Adding package $LCU_PATH"
|
||||
Add-WindowsPackage -Path $WINPE_MOUNT -PackagePath $LCU_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Perform image cleanup
|
||||
Write-Host "$(Get-TS): Performing image cleanup on WinPE"
|
||||
DISM /image:$WINPE_MOUNT /cleanup-image /StartComponentCleanup | Out-Null
|
||||
|
||||
# Dismount
|
||||
Dismount-WindowsImage -Path $WINPE_MOUNT -Save -ErrorAction stop | Out-Null
|
||||
|
||||
#Export WinPE
|
||||
Write-Host "$(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
|
||||
|
||||
}
|
||||
|
||||
Move-Item -Path $WORKING_PATH"\boot2.wim" -Destination $MEDIA_NEW_PATH“\sources\boot.wim” -Force -ErrorAction stop | Out-Null
|
||||
```
|
||||
### Update the main operating system
|
||||
|
||||
For this next phase, there is no need to mount the main operating system, since it was already mounted in the previous scripts. This script starts by applying the servicing stack Dynamic Update. Then, it adds Japanese language support and then the Japanese language features. Unlike the Dynamic Update packages, it leverages `Add-WindowsCapability` to add these features. For a full list of such features, and their associated capability name, see [Available Features on Demand](https://docs.microsoft.com/windows-hardware/manufacture/desktop/features-on-demand-non-language-fod).
|
||||
|
||||
Now is the time to enable other Optional Components or add other Features on Demand. If such a feature has an associated cumulative update (for example, .Net), this is the time to apply those. The script then proceeds with applying the latest cumulative update. Finally, the script cleans and exports the image.
|
||||
|
||||
You can install Optional Components, along with the .Net feature, offline, but that will require the device to be restarted. This is why the script installs .Net and Optional Components after cleanup and before export.
|
||||
|
||||
```
|
||||
#
|
||||
# update Main OS
|
||||
#
|
||||
|
||||
# Add servicing stack update
|
||||
Write-Host "$(Get-TS): Adding package $SSU_PATH"
|
||||
Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $SSU_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Optional: Add language to main OS
|
||||
Write-Host "$(Get-TS): Adding package $OS_LP_PATH"
|
||||
Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $OS_LP_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Optional: Add a Features on Demand to the image
|
||||
Write-Host "$(Get-TS): Adding language FOD: Language.Fonts.Jpan~~~und-JPAN~0.0.1.0"
|
||||
Add-WindowsCapability -Name "Language.Fonts.$LANG_FONT_CAPABILITY~~~und-$LANG_FONT_CAPABILITY~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
Write-Host "$(Get-TS): Adding language FOD: Language.Basic~~~$LANG~0.0.1.0"
|
||||
Add-WindowsCapability -Name "Language.Basic~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
Write-Host "$(Get-TS): Adding language FOD: Language.OCR~~~$LANG~0.0.1.0"
|
||||
Add-WindowsCapability -Name "Language.OCR~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
Write-Host "$(Get-TS): Adding language FOD: Language.Handwriting~~~$LANG~0.0.1.0"
|
||||
Add-WindowsCapability -Name "Language.Handwriting~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
Write-Host "$(Get-TS): Adding language FOD: Language.TextToSpeech~~~$LANG~0.0.1.0"
|
||||
Add-WindowsCapability -Name "Language.TextToSpeech~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
Write-Host "$(Get-TS): Adding language FOD:Language.Speech~~~$LANG~0.0.1.0"
|
||||
Add-WindowsCapability -Name "Language.Speech~~~$LANG~0.0.1.0" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Note: If I wanted to enable additional Features on Demand, I'd add these here.
|
||||
|
||||
# Add latest cumulative update
|
||||
Write-Host "$(Get-TS): Adding package $LCU_PATH"
|
||||
Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $LCU_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# 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
|
||||
|
||||
# Perform image cleanup
|
||||
Write-Host "$(Get-TS): Performing image cleanup on main OS"
|
||||
DISM /image:$MAIN_OS_MOUNT /cleanup-image /StartComponentCleanup | 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.
|
||||
#
|
||||
|
||||
Write-Host "$(Get-TS): Adding NetFX3~~~~"
|
||||
Add-WindowsCapability -Name "NetFX3~~~~" -Path $MAIN_OS_MOUNT -Source $FOD_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Add .Net Cumulative Update
|
||||
Write-Host "$(Get-TS): Adding package $DOTNET_CU_PATH"
|
||||
Add-WindowsPackage -Path $MAIN_OS_MOUNT -PackagePath $DOTNET_CU_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
# Dismount
|
||||
Dismount-WindowsImage -Path $MAIN_OS_MOUNT -Save -ErrorAction stop | Out-Null
|
||||
|
||||
# Export
|
||||
Write-Host "$(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 media files
|
||||
|
||||
This part of the script updates the Setup files. It simply copies the individual files in the Setup Dynamic Update package to the new media. This step brings an updated Setup.exe as needed, along with the latest compatibility database, and replacement component manifests.
|
||||
|
||||
```
|
||||
#
|
||||
# update remaining files on media
|
||||
#
|
||||
|
||||
# Add Setup DU by copy the files from the package into the newMedia
|
||||
Write-Host "$(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
|
||||
#
|
||||
|
||||
# Remove our working folder
|
||||
Remove-Item -Path $WORKING_PATH -Recurse -Force -ErrorAction stop | Out-Null
|
||||
|
||||
# Dismount ISO images
|
||||
Write-Host "$(Get-TS): Dismounting ISO images"
|
||||
Dismount-DiskImage -ImagePath $LP_ISO_PATH -ErrorAction stop | Out-Null
|
||||
Dismount-DiskImage -ImagePath $FOD_ISO_PATH -ErrorAction stop | Out-Null
|
||||
|
||||
Write-Host "$(Get-TS): Media refresh completed!"
|
||||
```
|
||||
|
@ -23,7 +23,7 @@ ms.topic: article
|
||||
|
||||
## 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
|
||||
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](waas-servicing-strategy-windows-10-updates.md) 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**.
|
||||
|
||||
@ -42,10 +42,10 @@ Follow these steps on a device running the Remote Server Administration Tools or
|
||||
|
||||
### Set up a ring
|
||||
1. Start Group Policy Management Console (gpmc.msc).
|
||||
2. Expand **Forest > Domains > *\<your domain\>*.
|
||||
2. Expand **Forest > Domains > *\<your domain\>**.
|
||||
3. Right-click *\<your domain>* and select **Create a GPO in this domain and link it here**.
|
||||
4. In the **New GPO** dialog box, enter *Windows Update for Business - Group 1* as the name of the new Group Policy Object.
|
||||
5. Right-click the **Windows Update for Business - Group 1" object, and then select **Edit**.
|
||||
5. Right-click the **"Windows Update for Business - Group 1"** object, and then select **Edit**.
|
||||
6. In the Group Policy Management Editor, go to **Computer Configuration > Policies > Administrative Templates > Windows Components > Windows Update**. You are now ready to start assigning policies to this ring (group) of devices.
|
||||
|
||||
|
||||
|
@ -60,7 +60,7 @@ The Settings UI is talking to the Update Orchestrator service which in turn is t
|
||||
On computers running [Windows 10 1709 or higher](#BKMK_DCAT) configured to update from Windows Update (usually WUfB scenario) servicing and definition updates are being installed successfully, but feature updates are never offered.
|
||||
|
||||
Checking the WindowsUpdate.log reveals the following error:
|
||||
```
|
||||
```console
|
||||
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
|
||||
@ -85,7 +85,7 @@ YYYY/MM/DD HH:mm:ss:SSS PID TID Agent * END * Finding updates Caller
|
||||
```
|
||||
|
||||
The 0x80070426 error code translates to:
|
||||
```
|
||||
```console
|
||||
ERROR_SERVICE_NOT_ACTIVE - # The service has not been started.
|
||||
```
|
||||
|
||||
@ -98,7 +98,7 @@ Windows Update uses WinHttp with Partial Range requests (RFC 7233) to download u
|
||||
|
||||
To fix this issue, configure a proxy in WinHTTP by using the following netsh command:
|
||||
|
||||
```
|
||||
```console
|
||||
netsh winhttp set proxy ProxyServerName:PortNumber
|
||||
```
|
||||
|
||||
@ -128,15 +128,15 @@ The most common reasons for this error are described in the following table:
|
||||
|
||||
## Issues related to firewall configuration
|
||||
Error that may be seen in the WU logs:
|
||||
```
|
||||
```console
|
||||
DownloadManager Error 0x800706d9 occurred while downloading update; notifying dependent calls.
|
||||
```
|
||||
Or
|
||||
```
|
||||
```console
|
||||
[DownloadManager] BITS job {A4AC06DD-D6E6-4420-8720-7407734FDAF2} hit a transient error, updateId = {D053C08A-6250-4C43-A111-56C5198FE142}.200 <NULL>, error = 0x800706D9
|
||||
```
|
||||
Or
|
||||
```
|
||||
```console
|
||||
DownloadManager [0]12F4.1FE8::09/29/2017-13:45:08.530 [agent]DO job {C6E2F6DC-5B78-4608-B6F1-0678C23614BD} hit a transient error, updateId = 5537BD35-BB74-40B2-A8C3-B696D3C97CBA.201 <NULL>, error = 0x80D0000A
|
||||
```
|
||||
|
||||
@ -150,17 +150,17 @@ See [How to configure automatic updates by using Group Policy or registry settin
|
||||
## Device cannot access update files
|
||||
Check that your device can access these Windows Update endpoints:
|
||||
|
||||
- http://windowsupdate.microsoft.com
|
||||
- http://*.windowsupdate.microsoft.com
|
||||
- https://*.windowsupdate.microsoft.com
|
||||
- http://*.update.microsoft.com
|
||||
- https://*.update.microsoft.com
|
||||
- http://*.windowsupdate.com
|
||||
- http://download.windowsupdate.com
|
||||
- https://download.microsoft.com
|
||||
- http://*.download.windowsupdate.com
|
||||
- http://wustat.windows.com
|
||||
- http://ntservicepack.microsoft.com
|
||||
- `http://windowsupdate.microsoft.com`
|
||||
- `http://*.windowsupdate.microsoft.com`
|
||||
- `https://*.windowsupdate.microsoft.com`
|
||||
- `http://*.update.microsoft.com`
|
||||
- `https://*.update.microsoft.com`
|
||||
- `http://*.windowsupdate.com`
|
||||
- `http://download.windowsupdate.com`
|
||||
- `https://download.microsoft.com`
|
||||
- `http://*.download.windowsupdate.com`
|
||||
- `http://wustat.windows.com`
|
||||
- `http://ntservicepack.microsoft.com`
|
||||
|
||||
Whitelist these endpoints for future use.
|
||||
|
||||
@ -183,13 +183,13 @@ Check the output for the Name and OffersWindowsUPdates parameters, which you can
|
||||
## You have a bad setup in the environment
|
||||
If we look at the GPO being set through registry, the system is configured to use WSUS to download updates:
|
||||
|
||||
```
|
||||
```console
|
||||
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
|
||||
"UseWUServer"=dword:00000001 ===================================> it says use WSUS server.
|
||||
```
|
||||
|
||||
From the WU logs:
|
||||
```
|
||||
```console
|
||||
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
|
||||
@ -206,7 +206,7 @@ In the above log snippet, we see that the Criteria = "IsHidden = 0 AND Deploymen
|
||||
|
||||
Now if you look at the below logs, the Automatic update runs the scan and finds no update approved for it. So it reports there are 0 updates to install or download. This is due to bad setup or configuration in the environment. The WSUS side should approve the patches for WU so that it fetches the updates and installs it on the specified time according to the policy. Since this scenario doesn't include SCCM, there's no way to install unapproved updates. And that is the problem you are facing. You expect that the scan should be done by the operational insight agent and automatically trigger download and install but that won’t happen here.
|
||||
|
||||
```
|
||||
```console
|
||||
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
|
||||
@ -224,12 +224,12 @@ Users may see that Windows 10 is consuming all the bandwidth in the different of
|
||||
|
||||
The following group policies can help mitigate this:
|
||||
|
||||
- Blocking access to Windows Update servers: [Policy Turn off access to all Windows Update features](http://gpsearch.azurewebsites.net/#4728) (Set to enabled)
|
||||
- Driver search: [Policy Specify search order for device driver source locations](http://gpsearch.azurewebsites.net/#183) (Set to "Do not search Windows Update")
|
||||
- Windows Store automatic update: [Policy Turn off Automatic Download and Install of updates](http://gpsearch.azurewebsites.net/#10876) (Set to enabled)
|
||||
- Blocking access to Windows Update servers: [Policy Turn off access to all Windows Update features](https://gpsearch.azurewebsites.net/#4728) (Set to enabled)
|
||||
- Driver search: [Policy Specify search order for device driver source locations](https://gpsearch.azurewebsites.net/#183) (Set to "Do not search Windows Update")
|
||||
- Windows Store automatic update: [Policy Turn off Automatic Download and Install of updates](https://gpsearch.azurewebsites.net/#10876) (Set to enabled)
|
||||
|
||||
Other components that reach out to the internet:
|
||||
|
||||
- Windows Spotlight: [Policy Configure Windows spotlight on lock screen](http://gpsearch.azurewebsites.net/#13362) (Set to disabled)
|
||||
- Consumer experiences: [Policy Turn off Microsoft consumer experiences](http://gpsearch.azurewebsites.net/#13329) (Set to enabled)
|
||||
- Background traffic from Windows apps: [Policy Let Windows apps run in the background](http://gpsearch.azurewebsites.net/#13571)
|
||||
- Windows Spotlight: [Policy Configure Windows spotlight on lock screen](https://gpsearch.azurewebsites.net/#13362) (Set to disabled)
|
||||
- Consumer experiences: [Policy Turn off Microsoft consumer experiences](https://gpsearch.azurewebsites.net/#13329) (Set to enabled)
|
||||
- Background traffic from Windows apps: [Policy Let Windows apps run in the background](https://gpsearch.azurewebsites.net/#13571)
|
||||
|
@ -8,83 +8,58 @@ ms.author: greglin
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: deploy
|
||||
ms.sitesec: library
|
||||
audience: itpro
|
||||
author: greg-lindsay
|
||||
audience: itpro
|
||||
author: greg-lindsay
|
||||
ms.topic: article
|
||||
---
|
||||
|
||||
# Identify Users
|
||||
|
||||
|
||||
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](usmt-migrate-user-accounts.md).
|
||||
|
||||
## In This Topic
|
||||
|
||||
|
||||
|
||||
- [Migrating Local Accounts](#bkmk-8)
|
||||
|
||||
- [Migrating Domain Accounts](#bkmk-9)
|
||||
|
||||
- [Migrating Local Accounts](#bkmk-8)
|
||||
- [Migrating Domain Accounts](#bkmk-9)
|
||||
- [Command-Line Options](#bkmk-7)
|
||||
|
||||
## <a href="" id="bkmk-8"></a>Migrating Local Accounts
|
||||
|
||||
|
||||
Before migrating local accounts, note the following:
|
||||
|
||||
|
||||
- [You must explicitly specify that local accounts that are not on the destination computer should be migrated.](#bkmk-8) If you are migrating local accounts and the local account does not exist on the destination computer, you must use the **/lac** option when using the LoadState command. If the **/lac** option is not specified, no local user accounts will be migrated.
|
||||
|
||||
- [Consider whether to enable user accounts that are new to the destination computer.](#bkmk-8) The **/lae** option enables the account that was created with the **/lac** option. However, if you create a disabled local account by using only the **/lac** option, a local administrator must enable the account on the destination computer.
|
||||
|
||||
- [Be careful when specifying a password for local accounts.](#bkmk-8) If you create the local account with a blank password, anyone could log on to that account on the destination computer. If you create the local account with a password, the password is available to anyone with access to the USMT command-line tools.
|
||||
|
||||
|
||||
**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.
|
||||
|
||||
>[!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.
|
||||
|
||||
## <a href="" id="bkmk-9"></a>Migrating Domain Accounts
|
||||
|
||||
|
||||
The source and destination computers do not need to be connected to the domain for domain user profiles to be migrated.
|
||||
|
||||
## <a href="" id="bkmk-7"></a>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.](#bkmk-8) 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**
|
||||
>[!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.](#bkmk-8) You can move user accounts to another domain using the **/md** option with the LoadState command-line tool.
|
||||
|
||||
|
||||
- [Creating local accounts.](#bkmk-8) You can create and enable local accounts using the **/lac** and **/lae** options with the LoadState command-line tool.
|
||||
|
||||
|
||||
- [Renaming user accounts.](#bkmk-8) You can rename user accounts using the **/mu** option.
|
||||
|
||||
|
||||
- [Renaming user accounts.](#bkmk-8) 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.
|
||||
|
||||
>[!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](usmt-determine-what-to-migrate.md)
|
||||
|
||||
[ScanState Syntax](usmt-scanstate-syntax.md)
|
||||
[Determine What to Migrate](usmt-determine-what-to-migrate.md)<br>
|
||||
[ScanState Syntax](usmt-scanstate-syntax.md)<br>
|
||||
[LoadState Syntax](usmt-loadstate-syntax.md)
|
||||
[LoadState Syntax](usmt-loadstate-syntax.md)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -101,6 +101,9 @@ To provide needed Azure Active Directory (automatic MDM enrollment and company b
|
||||
- [Intune for Education subscriptions](https://docs.microsoft.com/intune-education/what-is-intune-for-education), which include all needed Azure AD and Intune features.
|
||||
- [Azure Active Directory Premium P1 or P2](https://azure.microsoft.com/services/active-directory/) and [Microsoft Intune subscriptions](https://www.microsoft.com/cloud-platform/microsoft-intune) (or an alternative MDM service).
|
||||
|
||||
> [!NOTE]
|
||||
> Even when using Microsoft 365 subscriptions, you still need to [assign Intune licenses to the users](https://docs.microsoft.com/intune/fundamentals/licenses-assign).
|
||||
|
||||
Additionally, the following are also recommended (but not required):
|
||||
- [Office 365 ProPlus](https://www.microsoft.com/p/office-365-proplus/CFQ7TTC0K8R0), which can be deployed easily via Intune (or other MDM services).
|
||||
- [Windows Subscription Activation](https://docs.microsoft.com/windows/deployment/windows-10-enterprise-subscription-activation), to automatically step up devices from Windows 10 Pro to Windows 10 Enterprise.
|
||||
|
Reference in New Issue
Block a user