[Azure]避開Windows Server 2016 Azure VM 無法安裝中文語言 ...

文章推薦指數: 80 %
投票人數:10人

先說結論好了「 目前最新版本Windows Server 2016 Azure VM (2021/05) 無法安裝中文語言套件,因此我們需要透過PowerShell 或CLI 選擇舊版本的Image, ... 目前最新版本的WindowsServer2016AzureVM無法安裝中文語言套件,透過PowerShell來測試和避開 先說結論好了「目前最新版本WindowsServer2016AzureVM(2021/05)無法安裝中文語言套件,因此我們需要透過PowerShell或CLI選擇舊版本的Image,才可以使用中文語言套件」話說這件事情的開始,本來是朋友詢問有關於如何比較經濟的來建立備援的環境,因此在了解他們的需求之後,建議他們可以使用AzureVM來使用,因此請他們可以先參考之前所寫的一篇文章「透過PowerShell快速大量的建立VM」。

本來想說應該萬無一失,但沒有想到朋友反映說WindowsServer2016沒有辦法安裝中文套件,因為他們的系統需要在繁體中文的環境下來執行,導致無法來使用?!當下聽到的時候,會想說是不是朋友不會安裝,還是臨時無法下載到語言包導致問題,因此就想說協助一下,用lpksetup來安裝,這下應該沒有問題吧,但事情總不能如人願:(一開始當我執行lpksetup來安裝,看起來都還蠻順利的在等了10多分鐘之後,沒有想到居然會出現「失敗」!!! 另外從系統的事件檢視器也可以看到如下的錯誤訊息,並沒有太多幫助知道哪裡出問題。

而從上面的Keyword去找相關的資料,所找到的相關文章也都沒有任何幫助因為之前已經安裝上百個以上的VM,都沒有類似的情況,因此想說寫一個Script來建立測試環境,看看是不是因為新版本的Image所導致的問題,因此我先用以下的語法透過CloudShell的介面來查詢看看,可以使用的WindowsServer2016的影像檔有哪些Get-AzVMImage-Location"EastAsia"-PublisherName"MicrosoftWindowsServer"-Offer"windowsserver"-Skus"2016-Datacenter"|Format-Table-PropertyOffer,Skus,Version從下圖中可以看出來有不少,特別是今年似乎每個月就有一個新的影像檔案出來,因此我決定拿最後面四個來測試因此我改了一下之前建立的PowerShell語法,改成以下的方式,這樣子我就可以建立好四個不同版本的VM$resourceGroup="LPTest" #資源群組 $location="EastAsia"#區域 $name="LPLab"#VM名稱 $vmadmin="vmadmin"#Admin帳號 $pwd='Pa$$w5rd3939889'|ConvertTo-SecureString-Force-AsPlainText#Admin密碼 $Version="14393.4225.2102030345","14393.4283.2103051830","14393.4350.2104091630","14393.4402.2105052108" $cred=New-ObjectPSCredential($vmadmin,$pwd) #建立資源群組 New-AzResourceGroup-ResourceGroupName$resourceGroup-Location$location #建立可允許連線規格 $rdpRule=New-AzNetworkSecurityRuleConfig-Namerdp-rule-Description"AllowRDP"` -AccessAllow-ProtocolTcp-DirectionInbound-Priority100` -SourceAddressPrefixInternet-SourcePortRange*` -DestinationAddressPrefix*-DestinationPortRange3389 #建立網路安全群組 $nsg=New-AzNetworkSecurityGroup-ResourceGroupName$resourceGroup` -Location$location-Name$resourceGroup"-nsg"-SecurityRules$rdpRule #建立子網路 $subnet=New-AzVirtualNetworkSubnetConfig-Name$resourceGroup"-vmSubnet"` -AddressPrefix"10.0.1.0/25"-NetworkSecurityGroup$nsg-WarningActionSilentlyContinue #建立虛擬網路網路 $vnet=New-AzVirtualNetwork-Name$resourceGroup"-vnet"-ResourceGroupName$resourceGroup` -Location$location-AddressPrefix"10.0.1.0/24"-Subnet$subnet` -WarningActionSilentlyContinue for($i=1;$i-le$Version.count;$i++) { $vmname=$name+([string]$i).PadLeft(2,'0') #產生公用IP,網域名稱要用小寫 $pip=New-AzPublicIpAddress-ResourceGroupName$resourceGroup-Location$location` -Name$vmname"-ip"-AllocationMethodStatic-DomainNameLabel$vmname.toLower() #產生虛擬網卡 $nic=New-AzNetworkInterface-ResourceGroupName$resourceGroup-Location$location` -Name$vmname"-nic"-SubnetId$vnet.Subnets[0].Id-PublicIpAddressId$pip.Id #建立虛擬機器的相關設定 $vmConfig=New-AzVMConfig-VMName$vmname"-vm"-VMSizeStandard_DS2_V2 $vmConfig|Set-AzVMOperatingSystem-Windows-ComputerName$vmname-Credential$cred-TimeZone"TaipeiStandardTime" $vmConfig|Set-AzVMSourceImage-PublisherNameMicrosoftWindowsServer-OfferWindowsServer-Skus2016-Datacenter-Version$Version[$i-1] $vmConfig|Add-AzVMNetworkInterface-Id$nic.Id $vmConfig|Set-AzVMBootDiagnostic-Disable $vmConfig|Set-AzVMOSDisk-Name$vmname"-osdisk"-CachingReadWrite-StorageAccountType"Standard_LRS"-CreateOptionFromImage #建立虛擬機器並放置到背景執行 New-AzVM-ResourceGroupName$resourceGroup-Location$location-VM$vmConfig-AsJob } Get-Job 以上我整理一下建立好的VM,並且透過Winver取得相關資訊,並且測試安裝中文語言包的狀況名稱LPLab01LPLab02LPLab03LPLab04影像檔版本14393.4225.210203034514393.4283.210305183014393.4350.210409163014393.4402.2105052108WinverVersion1607Version1607Version1607Version1607OSBuild14393.422514393.428314393.435014393.4402中文語言包成功成功失敗失敗從上表中可以看出來,在2021/04之後所使用的影像檔,安裝中文語言包是失敗的,因此如果您有需要使用中文的話,建議可以改用Windows10或者是WindowsServer2019的影像檔,但如果要用WindowsServer2016的話,建議可以改用14393.4283.2103051830這一個版本的,只是您可能無法透過AzurePortal的介面去找到那個影像檔來安裝,就需要自己手動修改我前面的範例,用PowerShell來建立VM,這樣就可以順利安裝了。

2021/05/31看來這個問題遇到的還不少人,剛好在測試其他的問題的時候,有看到網路上一個朋友icka'sHome也遇到這個問題(網址),透過他的方式進入到GuestVM裡面,利用systeminternals的工具程式movefile,將C:\Windows\System32\config\TxR的目錄下的檔案都清除,就可以順利安裝上LanguagePack了,如果有朋友遇到類似問題,可以參考他的文章,就可以順利解決了。

2021/06/21最近又再度測試,現在可以使用的Image版本已經是14363.4467,微軟已經修正這個問題了。

Azure 回首頁



請為這篇文章評分?