愛伊米

批次設定Azure虛擬機器時區等

批次設定Azure虛擬機器時區等

對於Azure的虛擬機器,很多時候我們都是從Azure Marketplace的作業系統映像直接部署的。一般來說透過Azure Portal嚮導或者ARM Template直接部署完了就可以使用了,沒有什麼大的問題。

最近強哥在給一個客戶部署了若干臺Windows虛擬機器,並將這些虛擬機器加入了客戶本地的AD域。本來以為這樣就完事兒了,後續的配置以及Oracle資料庫以及應用程式的部署等等就是客戶自己的事情了。

別問我為啥不使用Marketplace上帶Oracle的映像,這個位於澳洲的客戶,選擇了一家來自美國的應用開發商,這家應用開發商堅持在Windows上使用Oracle資料庫,強哥也明白這並不是一個好主意,也跟微軟的支援工程師討論過,雖然建議的是使用Azure Marketplace上的Oracle映像,但是這些映像都是機遇Oracle Linux的,不符合開發商的要求。當然Azure也是支援在Windows虛擬機器上執行Oracle資料庫的。

也別問我為啥一個澳洲的公司要一個來自美國的應用開發商,而且他們在澳洲還沒有本地工程師。每次開會都只能早上,不然人家就得睡覺了。。。

言歸正傳,部署好虛擬機器並交付後,客戶再次聯絡我說沒辦法更改Windows的時區和語言偏好設定,而且聲稱他們配置的域組策略GPO中包含了這些設定但是在Azure虛擬機器上就是不生效,據負責他們本地AD的MSP說這肯定是Azure的問題。

好吧,既然你說GPO不生效,那應該去除錯GPO呀,往Azure上扯啥呢?雖然這已經不是強哥負責的專案的範疇,但是作為一名負責任的工程師,還是先嚐試解決問題,而不是像客戶的另外一個MSP工程師一樣甩鍋,互相指責。

GPO不生效,那咱就先試試直接上虛擬機器試試唄。但是Windows告訴我日期時間的設定由組織管理,這。。。是不是就意味著GPO其實是生效了?

批次設定Azure虛擬機器時區等

好吧,客戶說啥就是啥,咱也先不爭論了,而且一個個虛擬機器登陸上去改時區這個明顯太Low了,不符咱雲計算工程師的氣質,得找一個更騷的解決辦法。

OK,各位想騷的雲計算工程師,強哥這裡總結了幾個方法可以快速地達到這個目的,下面分別一一解釋。

方法一,PowerShell命令

直接呼叫PowerShell命令,不但可以設定時區,還可以設定區域,語言偏好等等。

PowerShell 命令如下(請自行更換相應的語言和時區程式碼):

Set-WinSystemLocale en-AU

Set-WinUserLanguageList -LanguageList en-AU -Force

Set-Culture -CultureInfo en-AU

Set-WinHomeLocation -GeoId 12

Set-TimeZone -Name “E。 Australia Standard Time”

# restart virtual machine to apply regional settings to current user。

# You could also do a logoff and login。

Start-sleep -Seconds 40

Restart-Computer

好學的你可能會問了,執行這些命令還是要登陸到Windows啊?這不是脫了褲子放屁嗎?

還真不是。首先,如果你的Windows Server打開了PowerShell遠端管理的話,可以遠端提交這些命令。對於Azure虛擬機器來說,你還可以透過Azure Portal的“Run command”在Azure 虛擬機器上執行這些命令。

批次設定Azure虛擬機器時區等

當然,這還是需要登陸到Azure Portal一個個開啟虛擬機器來執行,如果你想再騷一點,可以使用Azure PowerShell或者Azure CLI,加上一個for迴圈,就更騷了。

程式碼如下:

Azure CLI

az vm run-command invoke ——command-id RunPowerShellScript \

——name win-vm -g my-resource-group \

——scripts ‘param([string]$arg1,[string]$arg2)’ \

‘Write-Host This is a sample script with parameters $arg1 and $arg2’ \

——parameters ‘arg1=somefoo’ ‘arg2=somebar’

Azure PowerShell

Invoke-AzVMRunCommand -ResourceGroupName ‘rgname’`

-VMName ‘vmname’`

-CommandId ‘RunPowerShellScript’`

-ScriptPath ‘sample。ps1’`

-Parameter @{param1 = “var1”; param2 = “var2”}

方法二,使用Azure PowerShell

這裡涉及到兩個Azure PowerShell的命令,一個是在部署虛擬機器的時候使用,一個既可以在部署的時候使用,也可以對已經部署的虛擬機器使用。

程式碼如下:

Set-AzVMOperatingSystem

Set-AzVMOperatingSystem

[-VM]

[-Windows]

[-ComputerName]

[-Credential]

[[-CustomData] ]

[-ProvisionVMAgent]

[-EnableAutoUpdate]

[[-TimeZone] ]

[-WinRMHttp]

[-DefaultProfile ]

[]

Add-AzureProvisioningConfig

Add-AzureProvisioningConfig

-VM

[-DisableGuestAgent]

[-CustomDataFile ]

-AdminUsername

[-WindowsDomain]

[-Password ]

[-ResetPasswordOnFirstLogon]

[-DisableAutomaticUpdates]

[-NoRDPEndpoint]

[-TimeZone ]

[-Certificates ]

-JoinDomain

-Domain

-DomainUserName

-DomainPassword

[-MachineObjectOU ]

[-EnableWinRMHttp]

[-DisableWinRMHttps]

[-WinRMCertificate ]

[-X509Certificates ]

[-NoExportPrivateKey]

[-NoWinRMEndpoint]

[-Profile ]

[-InformationAction ]

[-InformationVariable ]

從命令列引數可以看出,Add-AzureProvisioningConfig除了可以設定時區,還可以自動將虛擬機器加入域。

方法三,ARM Template

作為一名雲計算工程師,有什麼能夠比Infrastructure as Code來得更騷呢?什麼PowerShell命令,Azure CLI都是浮雲,直接ARM Template裡面的幾行JSON程式碼搞定。

Talk is cheap,直接上template JSON程式碼:

“osProfile”: {

“computerName”: “string”,

“adminUsername”: “string”,

“adminPassword”: “string”,

“customData”: “string”,

“windowsConfiguration”: {

“provisionVMAgent”: “boolean”,

“enableAutomaticUpdates”: “boolean”,

“timeZone”: “string”,

“additionalUnattendContent”: [

{

“passName”: “OobeSystem”,

“componentName”: “Microsoft-Windows-Shell-Setup”,

“settingName”: “string”,

“content”: “string”

}

],

“winRM”: {

“listeners”: [

{

“protocol”: “string”,

“certificateUrl”: “string”

}

}

}

上面的JSON程式碼只是template中的一部分,而且最好配置引數檔案使用,而不是把配置直接寫到模版中去。具體關於ARM template怎麼使用,強哥後續會陸續寫相關的文章為大家介紹。

最後還有一種方式是使用PowerShell DSC(Desired State Configuration),有興趣的小夥伴可以自行研究,需要使用到的模組是ComputerManagementDsc。

怎麼樣,雲計算工程師的操作是不是夠騷氣呢?

批次設定Azure虛擬機器時區等

有你想看的精彩

批次設定Azure虛擬機器時區等

96秒破百億!雙十一背後的那個男人:阿里雲之父王堅

這家公開歧視中國程式設計師的美國公司,被自己員工狂懟!

任正非最新迴應華為胡玲實名舉報事件,力挺人力資源?!

兄弟們別信HR!華為HR五千字實名控訴引爆中外媒體

Google宣佈實現量子霸權 :一場網際網路新貴和傳統IT巨頭之間的戰爭

前HP / Oracle大老闆突然去世,員工紛紛叫好?!

批次設定Azure虛擬機器時區等