

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# WorkSpaces 在 WorkSpaces 个人版中升级 Windows BYOL
<a name="upgrade-windows-10-byol-workspaces"></a>

在 Windows 自带许可证 (BYOL) 上 WorkSpaces，你可以使用就地升级过程升级到较新版本的 Windows。为此，请按照本主题中的说明操作。

就地升级过程仅适用于 Windows 10 和 11 BY WorkSpaces OL。

**重要**  
不要在升级后的版本上运行 Sysprep。 WorkSpace如果这样做，可能会发生阻止 Sysprep 完成的错误。如果您计划运行 Sysprep，请仅在尚未升级的上执行 WorkSpace 此操作。

**注意**  
你可以使用此过程将 Windows 10 和 11 升级 WorkSpaces 到更新的版本。但是，此过程不能用于将你的 Windows 10 升级 WorkSpaces 到 Windows 11。

**Topics**
+ [前提条件](#upgrade_byol_prerequisites)
+ [注意事项](#upgrade_byol_important_considerations)
+ [已知限制条件](#byol-known-limitations)
+ [注册表项设置摘要](#upgrade_byol_registry_summary)
+ [执行就地升级](#upgrade_byol_procedure)
+ [问题排查](#byol-troubleshooting)
+ [使用 PowerShell 脚本更新您的 WorkSpace 注册表](#update-windows-10-byol-script)

## 前提条件
<a name="upgrade_byol_prerequisites"></a>
+ 如果您使用组策略或系统中心配置管理器 (SCCM) 推迟或暂停 Windows 10 和 11 升级，请为 Windows 10 和 11 启用操作系统升级。 WorkSpaces
+ 如果 WorkSpace 是 AutoStop WorkSpace，则将其更改为就地升级过程 AlwaysOn WorkSpace之前的，这样在应用更新时它就不会自动停止。有关更多信息，请参阅 [修改运行模式](running-mode.md#modify-running-mode)。如果您希望将 WorkSpace 设置保留为 AutoStop，请在升级进行 AutoStop 时将时间更改为三小时或更长时间。
+ 就地升级过程通过制作名为 Default User (`C:\Users\Default`) 的特殊配置文件的副本来重新创建用户配置文件。请勿使用此默认用户配置文件进行自定义。我们建议改为通过组策略对象 (GPOs) 对用户配置文件进行任何自定义。通过进行的自定义 GPOs 可以很容易地修改或回滚，并且不易出错。
+ 就地升级过程只能备份和重新创建一个用户配置文件。如果您在驱动器 D 上有多个用户配置文件，请删除除所需配置文件之外的所有用户配置文件。

## 注意事项
<a name="upgrade_byol_important_considerations"></a>

就地升级过程使用两个注册表脚本（`enable-inplace-upgrade.ps1`和`update-pvdrivers.ps1`）对您的注册表脚本进行必要的更改 WorkSpaces ，从而使 Windows 更新进程能够运行。这些更改涉及在驱动器 C 而不是驱动器 D 上创建（临时）用户配置文件。如果驱动器 D 上已存在用户配置文件，则该原始用户配置文件中的数据保留在驱动器 D 上。

默认情况下，在中 WorkSpaces 创建用户配置文件`D:\Users\%USERNAME%`。`enable-inplace-upgrade.ps1` 脚本会将 Windows 配置为在 `C:\Users\%USERNAME%` 中创建新的用户配置文件，并将用户 Shell 文件夹重定向到 `D:\Users\%USERNAME%`。这个新的用户配置文件是在用户首次登录时创建的。

就地升级后，您可以选择将用户配置文件保留在驱动器 C 上，以允许用户在将来使用 Windows 更新进程升级其计算机。但是，请注意 WorkSpaces ，如果配置文件存储在驱动器 C 上，则无法在不丢失用户配置文件中的所有数据的情况下重建或迁移，除非您自己备份和恢复这些数据。如果您决定将配置文件保留在驱动器 C 上，则可以使用**UserShellFoldersRedirection**注册表项将用户 shell 文件夹重定向到驱动器 D，如本主题后面所述。

为确保您可以重建或迁移您的 shell， WorkSpaces 并避免用户 shell 文件夹重定向出现任何潜在问题，我们建议您在就地升级后选择将用户配置文件还原到驱动器 D。您可以使用 **PostUpgradeRestoreProfileOnD** 注册表项来执行此操作，如本主题后面所述。

## 已知限制条件
<a name="byol-known-limitations"></a>
+ 在 WorkSpace 重建或迁移过程中，用户配置文件位置不会从驱动器 D 更改为驱动器 C。如果您在 Windows 10 或 11 BYOL 上执行就地升级， WorkSpace 然后对其进行重建或迁移，则新版本 WorkSpace 将在驱动器 D 上保存用户配置文件。
**警告**  
如果在就地升级后将用户配置文件保留在驱动器 C 上，则在重建或迁移过程中存储在驱动器 C 上的用户配置文件数据将丢失，除非您在重建或迁移之前手动备份用户配置文件数据，并在运行重建或迁移过程后手动还原用户配置文件数据。
+ 如果您的默认 BYOL 包包含基于 Windows 10 和 11 早期版本的映像，则必须在重建或迁移后再次执行就 WorkSpace 地升级。

## 注册表项设置摘要
<a name="upgrade_byol_registry_summary"></a>

要启用就地升级过程并指定您要在升级后放置用户配置文件的位置，您必须设置多个注册表项。


**注册表路径：**HKL M:\$1Software\$1Amazon\$1WorkSpacesConfig\$1 .ps1 enable-inplace-upgrade****  

| 注册表项 | Type | 值 | 
| --- | --- | --- | 
| Enabled (已启用) | DWORD |  **0** –（默认值）禁用就地升级 **1** – 启用就地升级  | 
| PostUpgradeRestoreProfileOnD | DWORD |  **0** –（默认值）在就地升级后，不尝试还原用户配置文件路径 **1**-就地升级后恢复用户配置文件路径 (**ProfileImagePath**)  | 
| UserShellFoldersRedirection | DWORD |  **0** – 不对用户 Shell 文件夹进行重定向 **1** –（默认值）在用户配置文件在 `C:\Users\%USERNAME%` 上重新生成后，将用户 Shell 文件夹重定向到 `D:\Users\%USERNAME%`  | 
| NoReboot | DWORD |  **0** –（默认值）允许您控制在修改用户配置文件的注册表后何时重启 **1** — 不允许脚本 WorkSpace 在修改用户配置文件的注册表后重新启动  | 


**注册表路径：**HKL M:\$1Software\$1Amazon\$1WorkSpacesConfig\$1 up** date-pvdrivers.ps1**  

| 注册表项 | Type | 值 | 
| --- | --- | --- | 
| Enabled (已启用) | DWORD |  **0** —（默认）禁用 AWS PV 驱动程序更新 **1** — 启用 AWS PV 驱动程序更新  | 

## 执行就地升级
<a name="upgrade_byol_procedure"></a>

要在 BYOL 上启用就地升级 Windows WorkSpaces，必须设置某些注册表项，如以下过程所述。您还必须设置某些注册表项，以指示您希望在完成就地升级后在其中放置用户配置文件的驱动器（C 或 D）。

您可以手动进行这些注册表更改。如果您有多个 WorkSpaces 要更新，则可以使用组策略或 SCCM 来推送脚本。 PowerShell 有关示例 PowerShell脚本，请参阅[使用 PowerShell 脚本更新您的 WorkSpace 注册表](#update-windows-10-byol-script)。

**执行 Windows 10 和 11 就地升级**

1. 记下你正在更新的 Windows 10 和 11 BYOL WorkSpaces 上当前运行的是哪个版本的 Windows，然后重新启动它们。

1. 更新以下 Windows 系统注册表项，将 **Enabled (启用)** 的数值数据从 **0** 更改为 **1**。这些注册表更改允许就地升级。 WorkSpace
   + **HKEY\$1LOCAL\$1MACHINE\$1 SOFTWARE\$1 亚马逊\$1\$1 .ps1 WorkSpacesConfig enable-inplace-upgrade**
   + **HKEY\$1LOCAL\$1MACHINE\$1 SOFTWARE\$1 亚马逊\$1\$1 update-pvdrivers.ps1 WorkSpacesConfig**
**注意**  
如果这些密钥不存在，请重新启动 WorkSpace。重新启动系统时，应该会添加这些键。

   （可选）如果您使用诸如 SCCM 任务序列之类的托管工作流来执行升级，请将以下键值设置为 **1** 以防止计算机重新启动：

   **HKEY\$1LOCAL\$1MACHINE\$1 SOFTWARE\$1 Amazon\$1\$1 .ps1\$1 WorkSpacesConfig enable-inplace-upgrade NoReboot**

1. 决定您希望在就地升级过程后将用户配置文件放在哪个驱动器上（有关详细信息，请参阅[注意事项](#upgrade_byol_important_considerations)），并按以下方式设置注册表项：
   + 如果您希望在升级后用户配置文件位于驱动器 C 上，请设置：

     **HKEY\$1LOCAL\$1MACHINE\$1 SOFTWARE\$1 亚马逊\$1\$1 .ps1 WorkSpacesConfig enable-inplace-upgrade**

     密钥名称：**PostUpgradeRestoreProfileOnD**

     键值：**0**

     密钥名称：**UserShellFoldersRedirection**

     键值：**1**
   + 如果您希望在升级后用户配置文件位于驱动器 D 上，请设置：

     **HKEY\$1LOCAL\$1MACHINE\$1 SOFTWARE\$1 亚马逊\$1\$1 .ps1 WorkSpacesConfig enable-inplace-upgrade**

     密钥名称：**PostUpgradeRestoreProfileOnD**

     键值：**1**

     密钥名称：**UserShellFoldersRedirection**

     键值：**0**

1. 将更改保存到注册表后， WorkSpace 再次重新启动以应用更改。
**注意**  
重新启动后，登录到会 WorkSpace 创建新的用户配置文件。您可能会在**开始**菜单中看到占位符图标。此问题在就地升级完成后会自动解决。
等待 10 分钟以确保畅通 WorkSpace 无阻。

   （可选）确认将以下密钥值设置为 **1**，这将解除 WorkSpace 对更新的阻止：

   **HKEY\$1LOCAL\$1MACHINE\$1 SOFTWARE\$1 Amazon\$1\$1 .ps1\$1 已删除 WorkSpacesConfig enable-inplace-upgrade profileImagePath**

1. 执行就地升级。您可以使用任何您喜欢的方法，例如 SCCM、ISO 或 Windows Update (WU)。根据您的原始 Windows 10 和 11 版本及安装的应用程序数量，此过程可能需要 40-120 分钟。
**注意**  
就地升级过程可能至少需要一个小时。 WorkSpace 实例状态可能显示为升级`UNHEALTHY`期间。

1. 更新过程结束后，请确认 Windows 版本已更新。
**注意**  
如果就地升级失败，则 Windows 会自动回滚以使用开始升级之前已安装的 Windows 10 和 11 版本。有关疑难解答的更多信息，请参阅 [Microsoft 文档](https://docs.microsoft.com/en-us/windows/deployment/upgrade/resolve-windows-10-upgrade-errors)。

   （可选）要确认更新脚本已成功执行，请验证以下键值是否设置为 **1**：

   **HKEY\$1LOCAL\$1MACHINE\$1 SOFTWARE\$1 Amazon\$1\$1 .ps1\$1 WorkSpacesConfig enable-inplace-upgrade scriptExecutionComplete**

1. 如果您 WorkSpace 通过将运行模式设置为 AlwaysOn 或更改 AutoStop 时间段来修改运行模式，以便就地升级过程可以不间断地运行，请将运行模式重新设置为原始设置。有关更多信息，请参阅 [修改运行模式](running-mode.md#modify-running-mode)。

如果您尚未将 **PostUpgradeRestoreProfileOnD** 注册表项设置为 **1**，则用户配置文件将由 Windows 重新生成并在就地升级`C:\Users\%USERNAME%`后放入，这样将来的 Windows 10 和 11 就地升级就不必再次执行上述步骤。默认情况下，`enable-inplace-upgrade.ps1` 脚本将以下 Shell 文件夹重定向到驱动器 D：
+ `D:\Users\%USERNAME%\Downloads`
+ `D:\Users\%USERNAME%\Desktop`
+ `D:\Users\%USERNAME%\Favorites`
+ `D:\Users\%USERNAME%\Music`
+ `D:\Users\%USERNAME%\Pictures`
+ `D:\Users\%USERNAME%\Videos`
+ `D:\Users\%USERNAME%\Documents`
+ `D:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Network Shortcuts`
+ `D:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Printer Shortcuts`
+ `D:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs`
+ `D:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent`
+ `D:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\SendTo`
+ `D:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu`
+ `D:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`
+ `D:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Templates`

如果您将 shell 文件夹重定向到您的其他位置 WorkSpaces，请在就地升级 WorkSpaces 之后对执行必要的操作。

## 问题排查
<a name="byol-troubleshooting"></a>

如果您在更新过程中遇到任何问题，可以查看以下各项以帮助排除故障：
+ Windows 日志，默认情况下位于以下位置：

  `C:\Program Files\Amazon\WorkSpacesConfig\Logs\`

  `C:\Program Files\Amazon\WorkSpacesConfig\Logs\TRANSMITTED`
+ Windows 事件查看器

  Windows 日志 > 应用程序 > 来源：亚马逊 WorkSpaces

**提示**  
在就地升级过程中，如果您看到桌面上的某些图标快捷方式不再起作用，那是因为 WorkSpaces 将驱动器 D 上的所有用户配置文件移至驱动器 C 以准备升级。升级完成后，快捷方式将正常工作。

### Windows 11 24H2 升级使用 ISO 错误解析
<a name="upgrade-iso-resolution"></a>

Windows 11 24H2 升级过程可能会在第二个启动阶段遇到严重的启动故障，具体而言会出现错误代码 0xC1900101 - 0x40017。出现此错误的原因通常是系统驱动程序文件丢失或损坏，导致安装无法在启动操作阶段成功完成。

*错误代码：*0xC1900101 - 0x40017

*错误描述：*在 SECOND\$1BOOT 阶段安装失败，出现 BOOT 操作错误

1. 确保您有 Windows 11 24H2 ISO 文件。

1. 以管理员身份打开命令提示符。

1. 使用以下命令复制所需的系统文件：

   ```
   copy "ISO-Drive:\Sources\WinSetupMon.sys" "C:\Windows\System32\Drivers\"
   ```

   将 **ISO-Drive** 替换为 ISO 驱动程序信息。

1. 使用以下路径验证文件副本：

   ```
   C:\Windows\System32\Drivers\
   ```

1. 使用 ISO 文件启动 Windows 11 24H2 升级。

## 使用 PowerShell 脚本更新您的 WorkSpace 注册表
<a name="update-windows-10-byol-script"></a>

您可以使用以下示例 PowerShell 脚本更新您的注册表 WorkSpaces 以启用就地升级。请按照[执行就地升级](#upgrade_byol_procedure)，但使用此脚本更新每个注册表 WorkSpace。

```
# AWS WorkSpaces 1.28.20
# Enable In-Place Update Sample Scripts
# These registry keys and values will enable scripts to run on the next reboot of the WorkSpace.
 
$scriptlist = ("update-pvdrivers.ps1","enable-inplace-upgrade.ps1")
$wsConfigRegistryRoot="HKLM:\Software\Amazon\WorkSpacesConfig"
$Enabled = 1
$script:ErrorActionPreference = "Stop"
 
foreach ($scriptName in $scriptlist)
{
    $scriptRegKey = "$wsConfigRegistryRoot\$scriptName"
    
    try
    {
        if (-not(Test-Path $scriptRegKey))
        {        
            Write-Host "Registry key not found. Creating registry key '$scriptRegKey' with 'Update' enabled."
            New-Item -Path $wsConfigRegistryRoot -Name $scriptName | Out-Null
            New-ItemProperty -Path $scriptRegKey -Name Enabled -PropertyType DWord -Value $Enabled | Out-Null
            Write-Host "Value created. '$scriptRegKey' Enabled='$((Get-ItemProperty -Path $scriptRegKey).Enabled)'"
        }
        else
        {
            Write-Host "Registry key is already present with value '$scriptRegKey' Enabled='$((Get-ItemProperty -Path $scriptRegKey).Enabled)'"
            if((Get-ItemProperty -Path $scriptRegKey).Enabled -ne $Enabled)
            {
                Set-ItemProperty -Path $scriptRegKey -Name Enabled -Value $Enabled
                Write-Host "Value updated. '$scriptRegKey' Enabled='$((Get-ItemProperty -Path $scriptRegKey).Enabled)'"
            }
        }
    }
    catch
    {
        write-host "Stopping script, the following error was encountered:" `r`n$_ -ForegroundColor Red
        break
    }
}
```