將語言新增至 Windows 11 企業版 映像

請務必確定來自世界各地組織內的使用者可以使用您的 Azure 虛擬桌面部署。 這就是為什麼您可以自定義您用於虛擬機 (VM) 的 Windows 11 企業版 映射,以擁有不同的語言套件。 從 Windows 11 開始,非系統管理員用戶帳戶現在可以新增顯示語言及其對應的語言功能。 此功能表示您不需要在個人主機集區中預先安裝使用者的語言套件。 針對集區主機集區,我們仍建議您新增計劃新增至自定義映像的語言。 您可以針對單一會話和多會話版本的 Windows 11 企業版,使用本文中的指示。

當您的組織包含多種語言的使用者時,您有兩個選項:

  • 使用每個語言的自定義映像建立一個專用主機集區。
  • 在相同的主機集區中有多個具有不同語言的使用者。

第二個選項在資源和成本方面更有效率,但需要一些額外的步驟。 幸運的是,本文將協助您逐步解說如何建置映像,以容納所有語言和當地語系化需求的使用者。

必要條件

您必須先備妥下列專案,才能將語言新增至 Windows 11 企業版 VM:

注意

檔案共用存放庫必須可從您將用來建立自定義映像的 Azure VM 存取。

隨需建立語言套件和功能的內容存放庫

若要建立內容存放庫,您將用來將語言和功能新增至 VM:

  1. 開啟您想要在 Azure 中新增語言的 VM。

  2. 開啟並掛接您在 VM 上必要條件一節中下載的 ISO 檔案。

  3. 在檔案共用上建立資料夾。

  4. ISO 中 LanguagesAndOptionalFeatures 資料夾中的所有內容複製到您建立的資料夾。

    注意

    如果您使用有限的記憶體,您可以使用掛接的「語言和選擇性功能」ISO 作為存放庫。 若要瞭解如何建立存放庫,請參閱 建置自定義FOD和語言套件存放庫

    重要

    某些語言需要附屬套件中包含的其他字型,以遵循不同的命名慣例。 例如,日文字型檔名包括 「Jpan」。

    An example of the Japanese language packs with the

  5. 設定語言內容存放庫共用的權限,以便您在將用來建置自訂映像的 VM 中具有讀取權限。

手動建立自定義 Windows 11 企業版 映像

您可以遵循下列步驟來建立自訂映像:

  1. 部署 Azure VM,然後移至 Azure 資源庫,然後選取您目前使用的 Windows 11 企業版 版本。

  2. 部署 VM 之後,請使用 RDP 做為本機系統管理員來連線到 VM。

  3. 連線 至您在 中建立的檔案共用存放庫視需要建立語言套件和功能的內容存放庫,並將它掛接至字母磁碟驅動器(例如磁碟驅動器 E)。

  4. 從提升許可權的 PowerShell 工作階段執行下列 PowerShell 腳本,以在 Windows 11 企業版 上安裝語言套件和附屬套件:

    ########################################################
    ## Add Languages to running Windows Image for Capture##
    ########################################################
    ##Disable Language Pack Cleanup##
    Disable-ScheduledTask -TaskPath "\Microsoft\Windows\AppxDeploymentClient\" -TaskName "Pre-staged app cleanup"
    Disable-ScheduledTask -TaskPath "\Microsoft\Windows\MUI\" -TaskName "LPRemove"
    Disable-ScheduledTask -TaskPath "\Microsoft\Windows\LanguageComponentsInstaller" -TaskName "Uninstallation"
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Control Panel\International" /v "BlockCleanupOfUnusedPreinstalledLangPacks" /t REG_DWORD /d 1 /f
    
    ##Set Language Pack Content Stores##
    $LIPContent = "E:"
    
    ##Set Path of CSV File##
    $CSVFile = "Windows-10-1809-FOD-to-LP-Mapping-Table.csv"
    $filePath = (Get-Location).Path + "\$CSVFile"
    
    ##Import Necesarry CSV File##
    $FODList = Import-Csv -Path $filePath -Delimiter ";"
    
    ##Set Language (Target)##
    $targetLanguage = "es-es"
    
    $sourceLanguage = (($FODList | Where-Object {$_.'Target Lang' -eq $targetLanguage}) | Where-Object {$_.'Source Lang' -ne $targetLanguage} | Select-Object -Property 'Source Lang' -Unique).'Source Lang'
    if(!($sourceLanguage)){
        $sourceLanguage = $targetLanguage
    }
    
    $langGroup = (($FODList | Where-Object {$_.'Target Lang' -eq $targetLanguage}) | Where-Object {$_.'Lang Group:' -ne ""} | Select-Object -Property 'Lang Group:' -Unique).'Lang Group:'
    
    ##List of additional features to be installed##
    $additionalFODList = @(
        "$LIPContent\Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35~amd64~~.cab", 
        "$LIPContent\Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~amd64~$sourceLanguage~.cab",
        "$LIPContent\Microsoft-Windows-SnippingTool-FoD-Package~31bf3856ad364e35~amd64~$sourceLanguage~.cab",
        "$LIPContent\Microsoft-Windows-Lip-Language_x64_$sourceLanguage.cab" ##only if applicable##
    )
    
    $additionalCapabilityList = @(
     "Language.Basic~~~$sourceLanguage~0.0.1.0",
     "Language.Handwriting~~~$sourceLanguage~0.0.1.0",
     "Language.OCR~~~$sourceLanguage~0.0.1.0",
     "Language.Speech~~~$sourceLanguage~0.0.1.0",
     "Language.TextToSpeech~~~$sourceLanguage~0.0.1.0"
     )
    
     ##Install all FODs or fonts from the CSV file###
     Dism /Online /Add-Package /PackagePath:$LIPContent\Microsoft-Windows-Client-Language-Pack_x64_$sourceLanguage.cab
     Dism /Online /Add-Package /PackagePath:$LIPContent\Microsoft-Windows-Lip-Language-Pack_x64_$sourceLanguage.cab
     foreach($capability in $additionalCapabilityList){
        Dism /Online /Add-Capability /CapabilityName:$capability /Source:$LIPContent
     }
    
     foreach($feature in $additionalFODList){
     Dism /Online /Add-Package /PackagePath:$feature
     }
    
     if($langGroup){
     Dism /Online /Add-Capability /CapabilityName:Language.Fonts.$langGroup~~~und-$langGroup~0.0.1.0 
     }
    
     ##Add installed language to language list##
     $LanguageList = Get-WinUserLanguageList
     $LanguageList.Add("$targetlanguage")
     Set-WinUserLanguageList $LanguageList -force
    

    注意

    此範例文本會使用西班牙文 (es-es) 語言代碼。 若要為不同的語言自動安裝適當的檔案,請將 $targetLanguage 參數變更為正確的語言程序代碼。 如需語言代碼的清單,請參閱 適用於 Windows 的可用語言套件。

    視您需要安裝的語言數目而定,腳本可能需要一些時間才能完成。 您也可以使用不同的 $targetLanguage 參數再次執行腳本,在初始設定之後安裝其他語言

  5. 若要自動選取適當的安裝檔案,請將可用的 Windows 10 1809 語言和功能隨選數據表下載並儲存為 CSV 檔案,然後將它儲存在與 PowerShell 腳本相同的資料夾中。

  6. 腳本執行完成之後,請移至 [開始>]設定、>[時間] 和 [語言語言>],檢查以確定正確安裝的語言套件。 如果語言檔案在那裡,您全都已設定。

  7. 最後,如果 VM 在安裝語言時連線到因特網,您必須執行清除程式,以移除任何不必要的語言體驗套件。 若要清除檔案,請執行下列命令:

    ##Cleanup to prepare sysprep##
    Remove-AppxPackage -Package Microsoft.LanguageExperiencePackes-ES_22000.8.13.0_neutral__8wekyb3d8bbwe
    
    Remove-AppxPackage -Package Microsoft.OneDriveSync_22000.8.13.0_neutral__8wekyb3d8bbwe
    

    若要清除不同的語言套件,請使用不同的語言程式代碼取代 「es-ES」。。

  8. 完成清除之後,請中斷共享的連線。

完成自訂映像

安裝語言套件之後,您可以安裝您要新增至自訂映像的任何其他軟體。

完成自訂映像之後,您必須執行系統準備工具 (Sysprep)。

若要執行 sysprep:

  1. 開啟提高權限的命令提示字元,並執行下列命令將映像一般化:

    C:\Windows\System32\Sysprep\sysprep.exe /oobe /generalize /shutdown
    
  2. 如果您遇到任何問題,請檢查 Windows>System32>Sysprep>Panther C 磁碟驅動器中的SetupErr.log檔案。 之後,請遵循 Sysprep 中的 指示與 Microsoft Store 應用程式 失敗,以針對您的設定進行疑難解答。

  3. 如果設定成功,請停止 VM,然後遵循在 Azure 中建立一般化 VM 的受控映射中的指示,以在受控映像中擷取 VM。

  4. 您現在可以使用自訂映像來部署 Azure 虛擬桌面主機集區。 若要瞭解如何部署主機集區,請參閱教學課程:使用 Azure 入口網站 建立主機集區

注意

當使用者變更其顯示語言時,他們必須註銷其 Azure 虛擬桌面會話,然後重新登入。 他們必須註銷 [開始] 功能表。

下一步

瞭解如何在 將語言套件新增至 Windows 10 多會話映射時,安裝 Windows 10 多會話 VM 的語言套件。

如需已知問題的清單,請參閱 在 Windows 10 中新增語言:已知問題