將語言新增至 Windows 11 企業版 映像
請務必確定來自世界各地組織內的使用者可以使用您的 Azure 虛擬桌面部署。 這就是為什麼您可以自定義您用於虛擬機 (VM) 的 Windows 11 企業版 映射,以擁有不同的語言套件。 從 Windows 11 開始,非系統管理員用戶帳戶現在可以新增顯示語言及其對應的語言功能。 此功能表示您不需要在個人主機集區中預先安裝使用者的語言套件。 針對集區主機集區,我們仍建議您新增計劃新增至自定義映像的語言。 您可以針對單一會話和多會話版本的 Windows 11 企業版,使用本文中的指示。
當您的組織包含多種語言的使用者時,您有兩個選項:
- 使用每個語言的自定義映像建立一個專用主機集區。
- 在相同的主機集區中有多個具有不同語言的使用者。
第二個選項在資源和成本方面更有效率,但需要一些額外的步驟。 幸運的是,本文將協助您逐步解說如何建置映像,以容納所有語言和當地語系化需求的使用者。
必要條件
您必須先備妥下列專案,才能將語言新增至 Windows 11 企業版 VM:
- 已安裝 Windows 11 企業版的 Azure VM
- 映像所使用作業系統版本的語言和選擇性功能 ISO 和收件匣應用程式 ISO。 您可以在此下載:
- Windows 檔案伺服器 VM 上的 Azure 檔案儲存體 共用或檔案共用
注意
檔案共用存放庫必須可從您將用來建立自定義映像的 Azure VM 存取。
隨需建立語言套件和功能的內容存放庫
若要建立內容存放庫,您將用來將語言和功能新增至 VM:
開啟您想要在 Azure 中新增語言的 VM。
開啟並掛接您在 VM 上必要條件一節中下載的 ISO 檔案。
在檔案共用上建立資料夾。
將 ISO 中 LanguagesAndOptionalFeatures 資料夾中的所有內容複製到您建立的資料夾。
注意
如果您使用有限的記憶體,您可以使用掛接的「語言和選擇性功能」ISO 作為存放庫。 若要瞭解如何建立存放庫,請參閱 建置自定義FOD和語言套件存放庫。
重要
某些語言需要附屬套件中包含的其他字型,以遵循不同的命名慣例。 例如,日文字型檔名包括 「Jpan」。
設定語言內容存放庫共用的權限,以便您在將用來建置自訂映像的 VM 中具有讀取權限。
手動建立自定義 Windows 11 企業版 映像
您可以遵循下列步驟來建立自訂映像:
部署 Azure VM,然後移至 Azure 資源庫,然後選取您目前使用的 Windows 11 企業版 版本。
部署 VM 之後,請使用 RDP 做為本機系統管理員來連線到 VM。
連線 至您在 中建立的檔案共用存放庫視需要建立語言套件和功能的內容存放庫,並將它掛接至字母磁碟驅動器(例如磁碟驅動器 E)。
從提升許可權的 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 參數再次執行腳本,在初始設定之後安裝其他語言。
若要自動選取適當的安裝檔案,請將可用的 Windows 10 1809 語言和功能隨選數據表下載並儲存為 CSV 檔案,然後將它儲存在與 PowerShell 腳本相同的資料夾中。
腳本執行完成之後,請移至 [開始>]設定、>[時間] 和 [語言語言>],檢查以確定正確安裝的語言套件。 如果語言檔案在那裡,您全都已設定。
最後,如果 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」。。
完成清除之後,請中斷共享的連線。
完成自訂映像
安裝語言套件之後,您可以安裝您要新增至自訂映像的任何其他軟體。
完成自訂映像之後,您必須執行系統準備工具 (Sysprep)。
若要執行 sysprep:
開啟提高權限的命令提示字元,並執行下列命令將映像一般化:
C:\Windows\System32\Sysprep\sysprep.exe /oobe /generalize /shutdown
如果您遇到任何問題,請檢查 Windows>System32>Sysprep>Panther C 磁碟驅動器中的SetupErr.log檔案。 之後,請遵循 Sysprep 中的 指示與 Microsoft Store 應用程式 失敗,以針對您的設定進行疑難解答。
如果設定成功,請停止 VM,然後遵循在 Azure 中建立一般化 VM 的受控映射中的指示,以在受控映像中擷取 VM。
您現在可以使用自訂映像來部署 Azure 虛擬桌面主機集區。 若要瞭解如何部署主機集區,請參閱教學課程:使用 Azure 入口網站 建立主機集區。
注意
當使用者變更其顯示語言時,他們必須註銷其 Azure 虛擬桌面會話,然後重新登入。 他們必須註銷 [開始] 功能表。
下一步
瞭解如何在 將語言套件新增至 Windows 10 多會話映射時,安裝 Windows 10 多會話 VM 的語言套件。
如需已知問題的清單,請參閱 在 Windows 10 中新增語言:已知問題。