先日、Windows Server用のWebベースの管理ツール「Windows Admin Center」を操作していて、おかしな表示に気が付きました。「概要」ページにある「ログインしているユーザー」が「-1」だというのです。サーバに1人以上のユーザーがログオンしている場合、今度は「0」だというのです。一体どういうことでしょうか。なぜこんな凡ミスにこれまで誰も気が付かなかったのかと疑問に思っていたら、実は日本語環境特有の「Shift-JIS」の呪いだったのです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Windows Admin Center」の「概要」ページにある「ログインしているユーザー」の数が実際とは異なる問題に気が付いたのは、2021年5月末にリリースされた最新バージョン「2103.2」に更新してすぐのことでした。
管理対象のサーバにログオン中のユーザーがいないときには「-1」と報告し(画面1)、1人のユーザーがログオン中のときには「0」を報告します。さらに、ローカルログオンとリモートデスクトップ接続で同時に複数のユーザーでログオンしてみても、「0」を報告するのです(画面2)。
まだ最新版に更新していないバージョン「2103」で確認しても同様です。UIの言語設定の問題かと思い、「設定」の「言語/地域」を「日本語/日本語(日本)」から「English/English(United States)」に変更してみましたが、状況は変わりません。
Azureポータルに統合された「Windows Admin Center(プレビュー)」でも確認してみました。管理対象のサーバにログオン中のユーザーがいないときに「-1」と報告するのは同じでしたが(画面3)、1人以上のユーザーのログオン数は正しく報告しているように見えます(画面4)。
ログオン中のユーザーがいないときに「-1」を報告するのは、どうやら仕様のようです。1人以上のログオンユーザーがいる場合に「0」を報告する問題の原因は、管理対象のサーバの言語環境、それも日本語環境固有の問題のようです。
オンプレミスのWindows Admin Centerの接続先は日本語版「Windows Server 2019評価版」でシステムロケールはそれぞれ「日本語(日本)」、AzureポータルのWindows Admin Center(プレビュー)の接続先は英語版「Windows Server 2019 Datacenter:Azure Edition」でシステムロケールは「English(United States)」という違いがあります。
Windows Admin Centerには現在、表示中のツール(ページ)で使用されているPowerShellスクリプトを表示する機能があります(※Azureポータルに統合されたWindows Admin Center《プレビュー》にこの機能はありません)。
「概要」ページの「ログオンしているユーザー」の情報は、「Get-NumberOfLoggedOnUsers」ファンクションとして実装されていました(画面5)。コードを追いかけてみると、システムにログオンしているユーザーの情報を表示する「quser.exe」コマンドを実行し、その標準出力の行数からヘッダ行の「1」を引いたものをログオン中のユーザー数としていました。
Copyright © ITmedia, Inc. All Rights Reserved.