

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 升級 WorkSpaces Personal 中的 Windows BYOL WorkSpaces
<a name="upgrade-windows-10-byol-workspaces"></a>

在 Windows 自帶授權 (BYOL) WorkSpaces 上，您可以使用就地升級程序升級至較新版本的 Windows。若要這麼做，請遵循本主題中的指示。

就地升級程序僅適用於 Windows 10 和 11 BYOL WorkSpaces。

**重要**  
請勿在已升級的 WorkSpace 上執行 Sysprep。如果您這麼做，可能會發生阻止 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>
+ 如果您已使用群組政策或 System Center Configuration Manager (SCCM) 延遲或暫停 Windows 10 和 11 升級，請為您的 Windows 10 和 11 WorkSpaces 啟用作業系統升級。
+ 如果 WorkSpace 是 AutoStop WorkSpace，請在就地升級程序之前將其變更為 AlwaysOn WorkSpace，這樣在套用更新時就不會自動停止。如需詳細資訊，請參閱[修改執行模式](running-mode.md#modify-running-mode)。如果您希望讓 WorkSpace 保持設定為 AutoStop，請在升級期間將 AutoStop 時間變更為三小時或更長時間。
+ 就地升級程序會藉由複製名為預設使用者 (`C:\Users\Default`) 的特殊設定檔來重新建立使用者設定檔。請勿使用此預設使用者設定檔進行自訂。建議改為透過群組政策物件 (GPO) 對使用者設定檔進行任何自訂。透過 GPO 進行的自訂可輕鬆地修改或復原，而且不易發生錯誤。
+ 就地升級程序只能備份並重新建立一個使用者設定檔。如果磁碟機 D 上有多個使用者設定檔，請刪除您所需以外的其他設定檔。

## 考量事項
<a name="upgrade_byol_important_considerations"></a>

就地升級程序會使用兩個登錄指令碼 (`enable-inplace-upgrade.ps1` 和 `update-pvdrivers.ps1`) 來對您的 WorkSpaces 進行必要的變更，以便執行 Windows Update 程序。這些變更涉及在磁碟機 C (而非磁碟機 D) 上建立 (暫時) 使用者設定檔。如果磁碟機 D 上已存在使用者設定檔，則該原始使用者設定檔中的資料會保留在磁碟機 D 上。

依預設，WorkSpaces 會在 `D:\Users\%USERNAME%` 中建立使用者設定檔。`enable-inplace-upgrade.ps1` 指令碼會將 Windows 設為在 `C:\Users\%USERNAME%` 中建立新的使用者設定檔，並將使用者 Shell 資料夾重新導向至 `D:\Users\%USERNAME%`。這個新的使用者設定檔會在使用者第一次登入時建立。

就地升級之後，您可選擇將使用者設定檔保留在磁碟機 C 上，讓使用者未來使用 Windows Update 程序來升級其電腦。但請注意，除非您自己備份並還原資料，否則無法重新建置或遷移設定檔儲存在磁碟機 C 上的 WorkSpaces，而不會遺失使用者設定檔中的所有資料。如果您決定將設定檔保留在磁碟機 C 上，您可使用 **UserShellFoldersRedirection** 登錄機碼，將使用者 shell 資料夾重新導向至磁碟機 D，如本主題稍後所述。

為了確保您可以重新建置或遷移 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>

若要啟用就地升級程序，並指定升級後的使用者設定檔位置，您必須設定數個登錄機碼。


**登錄路徑：**HKLM:\$1Software\$1Amazon\$1WorkSpacesConfig\$1enable-inplace-upgrade.ps1****  

| 登錄機碼 | Type | 值 | 
| --- | --- | --- | 
| 已啟用 | 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  | 


**登錄路徑：**HKLM:\$1Software\$1Amazon\$1WorkSpacesConfig\$1update-pvdrivers.ps1****  

| 登錄機碼 | Type | 值 | 
| --- | --- | --- | 
| 已啟用 | DWORD |  **0** – （預設） 停用 AWS PV 驅動程式更新 **1** – 啟用 AWS PV 驅動程式更新  | 

## 執行就地升級
<a name="upgrade_byol_procedure"></a>

若要在 BYOL WorkSpaces 上啟用就地 Windows 升級，您必須設定某些登錄機碼，如下列程序所述。您也必須設定某些登錄機碼，以指出在就地升級完成後，您希望使用者設定檔所在的磁碟機 (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 系統登錄機碼，將**已啟用**的值資料從 **0** 變更為 **1**。這些登錄變更會啟用 WorkSpace 的就地升級。
   + **HKEY\$1LOCAL\$1MACHINE\$1SOFTWARE\$1Amazon\$1WorkSpacesConfig\$1enable-inplace-upgrade.ps1**
   + **HKEY\$1LOCAL\$1MACHINE\$1SOFTWARE\$1Amazon\$1WorkSpacesConfig\$1update-pvdrivers.ps1**
**注意**  
如果這些機碼不存在，請重新啟動 WorkSpace。當系統重新啟動時，應該新增這些機碼。

   (選用) 如果您使用受管的工作流程 (例如 SCCM 任務序列) 來執行升級，請將下列機碼值設定為 **1**，以防止電腦重新開機：

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

1. 決定使用者設定檔在就地升級程序後所在的磁碟機 (如需詳細資訊，請參閱 [考量事項](#upgrade_byol_important_considerations))，並依下列方式設定登錄機碼：
   + 如果您希望使用者設定檔在升級後位於磁碟機 C 上，則設定如下：

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

     機碼名稱：**PostUpgradeRestoreProfileOnD**

     機碼值：**0**

     機碼名稱：**UserShellFoldersRedirection**

     機碼值：**1**
   + 如果您希望使用者設定檔在升級後位於磁碟機 D 上，則設定如下：

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

     機碼名稱：**PostUpgradeRestoreProfileOnD**

     機碼值：**1**

     機碼名稱：**UserShellFoldersRedirection**

     機碼值：**0**

1. 將變更儲存至登錄之後，再次重新啟動 WorkSpace，以便套用變更。
**注意**  
重新啟動後，登入 WorkSpace 會建立新的使用者設定檔。您可能會在**開始**功能表中看到預留位置圖示。此行為會在就地升級完成後自動解決。
請等候 10 分鐘，確保 WorkSpace 解除封鎖。

   (選用) 確認下列機碼值設定為 **1**，將 WorkSpace 解除封鎖以進行更新：

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

1. 執行就地升級。您可以使用任何您喜歡的方法，例如 SCCM、ISO 或 Windows 更新 (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\$1SOFTWARE\$1Amazon\$1WorkSpacesConfig\$1enable-inplace-upgrade.ps1\$1scriptExecutionComplete**

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 日誌 > 應用程式 > 來源：Amazon WorkSpaces

**提示**  
在就地升級過程中，如果您看到桌面上的某些圖示捷徑不再有作用，這是因為 WorkSpaces 會將位於磁碟機 D 上的任何使用者設定檔移至磁碟機 C 以準備升級。升級完成後，捷徑就會如預期般運作。

### 使用 ISO 錯誤解析進行 Windows 11 24H2 升級
<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
    }
}
```