請務必確定您組織內的使用者可以使用您的 Azure 虛擬桌面部署。 這就是為什麼您可以自定義用於虛擬機的 Windows 11 企業版 映像, (VM) 有不同的語言套件。 從 Windows 11 開始,非系統管理員用戶帳戶現在可以新增顯示語言及其對應的語言功能。 這項功能表示您不需要為個人主機集區中的用戶預安裝語言套件。 對於集區主機集區,我們仍建議您將計劃新增的語言新增至自定義映像。 您可以針對單一會話和多重工作階段版本的 Windows 11 企業版 使用本文中的指示。
當您的組織包含具有多種不同語言的使用者時,您有兩個選項:
- 使用每個語言的自定義映像建立一個專用主機集區。
- 在同一個主機集區中有多個不同語言的使用者。
第二個選項在資源和成本方面更有效率,但需要一些額外的步驟。 幸運的是,本文將協助您瞭解如何建置可容納所有語言和當地語系化需求使用者的映像。
必要條件
您必須先備妥下列專案,才能將語言新增至 Windows 11 企業版 VM:
- 已安裝 Windows 11 企業版的 Azure VM
- 映像所使用 OS 版本的語言和選擇性功能 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 Necessary 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 Languages and Features on Demand] 數據表作為 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市集應用程式 中的指示來針對您的設定進行疑難解答。
如果安裝成功,請停止 VM,然後依照在 Azure 中建立一般化 VM 的受控映射中的指示,將其擷取到受控映射中。
您現在可以使用自定義映像來部署 Azure 虛擬桌面主機集區。 若要瞭解如何部署主機集區,請參閱教學課程:使用 Azure 入口網站 建立主機集區。
注意事項
當使用者變更其顯示語言時,他們必須註銷其 Azure 虛擬桌面會話,然後重新登入。 他們必須從 [開始] 功能表註銷。
後續步驟
瞭解如何安裝 Windows 10 多重會話 VM 的語言套件,請參閱將語言套件新增至 Windows 10 多重會話映像。
如需已知問題的清單,請參閱在 Windows 10 中新增語言:已知問題。