Bluemix IaaS (旧SoftLayer) で Windows Server 2016 の日本語化

# 目的
クラウドで払い出される Windows OS は、デフォルトで英語の UI になっているので、すぐ日本語で使えるようにしたいと思います。

# 手動で日本語化（Powershell）
## 言語 (日本語) の追加、優先順位を最上位に設定
```powershell:PowerShell
Set-WinUserLanguageList -LanguageList ja-JP,en-US -Force
```

## 言語パックの入手（インターネット接続が必要）

```powershell:PowerShell
$LpUrl = "http://fg.v4.download.windowsupdate.com/c/msdownload/update/software/updt/2016/09/lp_9a666295ebc1052c4c5ffbfa18368dfddebcd69a.cab"
$LpTemp = "C:\Users\Administrator\Desktop\lp_9a666295ebc1052c4c5ffbfa18368dfddebcd69a.cab"
Invoke-WebRequest $LpUrl -OutFile $LpTemp
```

## 言語パックのインストール

```powershell:PowerShell
Add-WindowsPackage -PackagePath $LpTemp -Online
```

## 再起動（必要）

```powershell:PowerShell
Restart-Computer -Force
```

## Windows の表示言語の上書き設定

```powershell:PowerShell
Set-WinUILanguageOverride ja-JP
```

## Unicode ではないプログラムの言語の設定

```powershell:PowerShell
Set-WinSystemLocale 1041
```

## [アプリウィンドウごとに異なる入力方式を設定する]にチェック

```powershell:PowerShell
Set-WinLanguageBarOption -UseLegacySwitchMode
```

## [主な使用場所]を日本にする

```powershell:PowerShell
Set-WinHomeLocation 0x7A
```

## 日付、時刻、および数値の形式を表示言語と一致

```powershell:PowerShell
Set-WinCultureFromLanguageListOptOut -OptOut $False
```

# [タイムゾーン]を日本にする
```powershell:PowerShell
Set-TimeZone -Id "Tokyo Standard Time"
```

## 再起動（必要）
```powershell:PowerShell
Restart-Computer -Force
```

# 自動で日本語化（プロビジョニングスクリプト）
仮想サーバー用に、こちらに作りましたので、ご活用ください。
<a href="https://gist.github.com/khayama/d5f32d1c5718692cd1af828907ab46d2" >Win2016_Japanese.bat</a>

## 使い方
- 注文時、OS リロード時に使用可能です
- プロビジョニングスクリプトは、Public Uplink 付きのサーバーで使用してください
- プロビジョニングスクリプトに上記リンクURLを指定してください
- 言語パック入手後、スクリプト内で Public Uplink を無効にします
- メタデータ（仮想サーバーのみ）に初期パスワードを入力してください
	- メタデータの設定がないと、パスワードなし、の状態になってしまいます

# 参考
- <a href="https://www.faqforge.com/windows-server-2016/configure-ntp-server-windows-server-2016/" >How to Configure NTP Server in Windows Server 2016</a>
- <a href="https://kogelog.com/2016/10/18/20161018-01/" >Azure IaaS 上に作成した Windows Server 2016 仮想マシンの UI を日本語化する | 焦げlog</a>
- <a href="http://nasunoblog.blogspot.jp/2014/06/windows-8-1-powershel-set-language-and-datetime.html" >Windows 8.1 の言語や時刻をPowerShell/コマンドから変更する～英語版Surface 2を日本語化 - 元「なんでもエンジニ屋」のダメ日記</a>
- <a href="http://codegists.com/snippet/powershell/install-japaneselanguagepackps1_masayukiozawa_powershell" >[powershell] Install-JapaneseLanguagePack.ps1 - CodeGist</a>
- <a href="https://gist.github.com/khayama/a32735d9ab067fdd769d7a35d58ef258" >Provisioning_Script_Japanese_Win2k12R2.bat</a>
- <a href="https://gist.github.com/khayama/ea2e4a4f29f760c800cd5b09f1d5f2b9" >Disable_Public_NIC_Windows.bat</a>

# 参考：NTP設定確認
```time.service.softlayer.com``` になっているか確認します。

```powershell:PowerShell
PS C:\Users\Administrator> w32tm /query /status
Leap Indicator: 3(last minute has 61 seconds)
Stratum: 0 (unspecified)
Precision: -6 (15.625ms per tick)
Root Delay: 0.1392917s
Root Dispersion: 20.8932259s
ReferenceId: 0x00000000 (unspecified)
Last Successful Sync Time: 8/12/2017 5:55:21 AM
Source: time.service.softlayer.com,0x9
Poll Interval: 6 (64s)
```

なっていない場合は、Powershellで以下のコマンドを打ちます。

```powershell:PowerShell
w32tm /config /manualpeerlist:time.service.softlayer.com /syncfromflags:MANUAL
Stop-Service w32time
Start-Service w32time
```