SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

カスタムスクリプトを使用して仮想マシンをギャラリーから展開時に日本語 UI を設定

leave a comment

先日のアップデートで仮想マシンでカスタムスクリプトを実行して展開ができるようになりました。
image
カスタムスクリプトでは PowerShell が実行できるようなので仮想マシンを作成する際に日本語 UI を同時に設定するスクリプトを実行してみたいと思います。
基本的な内容は Azure VM の日本語 UI を PowerShell で設定 と同じです。
私の投稿は荒いですが、ぎたぱそさんの投稿でとても詳しく解説して下さっていますのでこちらもご参照いただければと思います。
AWS や Azure の英語UI をPowerShellで日本語UIにする

カスタムスクリプトの詳細をクリックすると Manage Extensions へリンクが貼られています。
カスタムスクリプトは拡張機能として実装されているようで、[C:PackagesPluginsMicrosoft.Compute.CustomScriptExtension1.0.1] のコンポーネントが使用されています。
このディレクトリにカスタムスクリプトして設定した内容が [scriptFile.ps1] としてコピーされ、ログが [status] フォルダの [0.status] に出力されているようです。
# ざっとしか見れていませんので違っていたらすみません…。
今回使用したスクリプトがこちらです。

param
(
[parameter(mandatory = 1)]
[ValidateSet("WindowsServer2012","WindowsServer2012R2","Windows8.1")]
$OS,
[parameter(mandatory = 1)]
$AdminUser,
[parameter(mandatory = 1)]
$AdminPassword
)
switch ($OS)
{
    "WindowsServer2012"   {
        $lpurl = "http://fg.v4.download.windowsupdate.com/msdownload/update/software/updt/2012/10"
        $lpfile = "windowsserver2012-kb2607607-x64-jpn_d079f61ac6b2bab923f14cd47c68c4af0835537f.cab"
    }
    "WindowsServer2012R2" {
        $lpurl = "http://fg.v4.download.windowsupdate.com/d/msdownload/update/software/updt/2013/09"
        $lpfile = "lp_3d6c75e45f3247f9f94721ea8fa1283392d36ea2.cab"
    }
    "Windows8.1" {
        $lpurl = "http://fg.v4.download.windowsupdate.com/d/msdownload/update/software/updt/2013/09"
        $lpfile = "lp_da2ecd336d37c67ffaf9158a8ba4d10c15b00abe.cab"
    }
}
$wintemp = "C:\Windows\Temp"
$RunOncePath = "registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce"
$AutoLogonPath = "registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
a
$runonce = @"
tzutil.exe /s "Tokyo Standard Time"
Set-WinUILanguageOverride ja-JP
Set-WinSystemLocale 1041
Set-WinHomeLocation 0x7A
Set-ItemProperty -Path "$AutoLogonPath" -Name "AutoAdminLogon" -Value "0"
Remove-ItemProperty -Path "$AutoLogonPath" -Name "DefaultUserName"
Remove-ItemProperty -Path "$AutoLogonPath" -Name "DefaultPassword"
restart-computer -Force
"@
Set-WinUserLanguageList ja-jp,en-US -Force
Start-BitsTransfer -Source $lpurl/$lpfile -Destination $wintemp
Add-WindowsPackage -Online -PackagePath $wintemp\$lpfile
$runonce | Out-File -FilePath C:\Windows\Temp\SetupLang.ps1 -Encoding ascii
Set-ItemProperty -Path $RunOncePath -Name "SetupLang" -Value "powershell.exe -ExecutionPolicy RemoteSigned -file C:\Windows\Temp\SetupLang.ps1"
Set-ItemProperty -Path $AutoLogonPath -Name "AutoAdminLogon" -Value "1"
Set-ItemProperty -Path $AutoLogonPath -Name "DefaultUserName" -Value $AdminUser
Set-ItemProperty -Path $AutoLogonPath -Name "DefaultPassword" -Value $AdminPassword
restart-computer -Force

 
以前の投稿とほとんど同じなのですが、タイムゾーンと OS の選択 (Windows Server 2012 / R2 / Windows 8.1) 管理者ユーザーの情報が引数として設定できるようにしています。
カスタムスクリプトでは実行時の引数を指定できるので、ここで OS のバージョンと管理者ユーザー/パスワードを指定します。
カスタムスクリプトに上記の PowerShell を記述した PS1 ファイルを指定して、引数には

-OS WindowsServer2012R2 -AdminUser <管理者ユーザー> -AdminPassword <左記ユーザーのパスワード>

というような引数を設定し、ギャラリーからイメージを作成して、展開終了後に30分程度待つと日本語 UI がインストールされた状態で再起動されます。
image
実行するスクリプトの取得をストレージ / ソース管理 / 構成管理の仕組みを組み合わせて使って実行できるようにするといろいろと面白そうですね。
# この辺はまだまだ勉強が必要なので全然試せていないですが…。

Share

Written by Masayuki.Ozawa

5月 16th, 2014 at 11:29 pm

Leave a Reply