こんにちは。技術4課の伊藤Kです。 先日はハロウィンでした。日本の各所でイベントが行われていたようですが、 ハロウィンはいつごろから日本に定着したんでしょうか。 節分の「恵方巻」とともに謎に思っている関東人です。
ちなみにサーバーワークスでもハロウィンでささやかに盛り上がりました。 仕事の合間に無料でできる、仮装パーティーの始め方(1日限定!)
さて今回は小ネタです。
EC2インスタンスで英語版Windows Server 2012 R2のAMIから起動し、その後言語設定を日本語化しました。 最初から日本語版を使えればよかったのですが、特定のバージョン/エディションのSQL Serverを使用するためには英語版しか選択肢がなかったのです。 日本語化した後、OSの「リモート管理」機能が使えなくなりました。
言語設定の日本語化手順
OSはWindows Server 2012 R2 英語版です。以下のブログ過去記事の手順を実行しました。 サーバーワークスエンジニアブログ - Windows Server 2012 R2英語版の日本語表示
エラーが発生していた
しばらくは気づかずに使っていたのですが、あるときふとサーバーマネージャーを見ると、リモート管理の状態が「不明」になっています。 「不明」のリンクをクリックすると下図の画面が表示されました。 内部エラー:リモート処理の状態を読み取ることができませんでした: 指定されたファイルが見つかりません。
リモート管理を有効にする必要があったので「他のコンピューターからのこのサーバーのリモート管理を有効にする」にチェックを入れて[OK]ボタンをクリックしましたが、エラー表示(スクリーンショット取りそこないました)となり、有効にできません。
対応方法
コマンドプロンプトを「管理者として実行」で起動して、以下のコマンドを実行します。
netsh advfirewall firewall add rule name="Windows リモート管理 (HTTP 受信)" dir=in action=allow service=any enable=yes profile=any localport=5985 protocol=tcp
特にOS再起動も必要なく「有効」に戻りました。
原因は、言語設定を変更することで、OSがリモート管理の使用に必要な Windowsファイアウォールのルールを認識できなくなったためのようです。上記コマンドでそのルールを追加しています。 本事象はWindows ファイアウォールそのものを「無効」にしていても発生します。 (コマンド実行前にWindowsファイアウォールの管理コンソールを開くと同名のルールが一見存在するように見えるのですが、何かが違うのか、内部的にそれを認識できていない状態なのか、コマンドの実行が必要となります。)
おまけ
現象を元に検索すると、まず見つかるのが「winrm quickconfig」コマンドで解決する、という記事。 しかし、今回の現象では「winrm quickconfig」コマンドを実行すると以下のエラーメッセージが表示されて解決に至りませんでした。
Message = ファイアウォールの状態を確認できません。
エラー番号: -2147024894 0x80070002
指定されたファイルが見つかりません
おわりに
記事を書くために再現実験をしましたが、事象は必ず発生するわけではなく何らかがトリガーとなって発生するようです。(トリガーは特定できず) 本事象で困っている方の助けになれば幸いです。