Why|なぜやるのか?
- 職場での新PCキッティング時に、最初にローカル管理者を作成して初期設定を行うことがあるかと思います
- PCをドメイン参加させ、ドメイン管理者をAdministratorsグループに追加したタイミングで、ローカル管理者は基本的には不要になるので、削除します
- ここで、手順漏れやその他の意図せぬ操作によって、ローカル管理者が残っているPCや、ドメインユーザがAdministratorsグループに所属しているPC(こちらはより宜しくない)、が存在していることがあり得るため、バッチファイルを用いた社内PCの一斉調査を行いました
How|どうやってやるのか?
-
net localgroup administrators
コマンドを使い、ローカルのAdministratorsグループに所属するアカウントの一覧を表示させるバッチファイルを作成します - グループポリシーにて「ログオフ」タイミングでスクリプトを実行させるよう設定し、ユーザごとに結果が出力されるようにします
-
find /v /c "" *.txt
コマンドを使い、取得したテキストファイルのファイル名と行数を出力。デフォルト設定のPCと異なる行数のファイルは異常値として、詳細を確認します
私自身「バッチファイル作成は初めて」でしたので、基本的な内容も含めて記載していきます!
What|なにをやるのか?
作成したスクリプト(バッチファイル)
getLocalAdministratorAccount.bat
@echo off
chcp 65001
REM ************************************************
REM ローカルのAdministratorsグループに所属するアカウントの取得
REM ************************************************
net localgroup administrators > \\hoge\fuga\スクリプト出力先\%COMPUTERNAME%.txt
スクリプトの解説
-
net localgroup administrators
- ローカルのAdministratorsグループに所属するアカウントの一覧を表示する
-
>
- 「大なり」、コマンドからの出力をファイルに書き込む
-
%COMPUTERNAME%
- 環境変数でコンピュータ名を取得する方法
- ログオンしているユーザー名を取得する場合は「%USERNAME%」
-
@echo off
- コマンド復唱を消して、実行内容の表示を減らす
備考
- バッチファイルの文字コードは「ANSI」か「S-JIS」に!
- 「メモ帳」で作成すればデフォルトが「ANSI」になっています
- 文字コード問題は初心者にあるあるかと思いますが、まさに私もサクラエディタで作成して実行されず「?」となりました
- ローカル管理者
- Administratorsというグループに所属したユーザ
- コンピュータ1台1台に「Administrators」というグループが初めからあり、そこに所属しているユーザがローカル管理者となります
- (参考)ドメイン管理者
- 「Domain Admins」というグループに所属したユーザ
- 「Domain Admins」は「ドメインコントローラー」内にしか存在しない
- 「Domain Admins」はドメイン内の全てのコンピュータのAdministrators権限を持っているので、言い換えるとドメイン内の全てのコンピュータの管理をする事ができる非常に強力な権限です
グループポリシーの設定
ユーザの「ログオフ」時に、指定のバッチファイルを実行させる設定を行います。
- グループポリシーの作成
- グループポリシーの「ログオフ プロパティ」へスクリプトを配置する
- 自分や関係者に限定したユーザにグループポリシーを適用し、動作チェック
- 取得対象の全ユーザが含まれる「OU(Organizational Unit)」にポリシーをリンクする
- PCの「スタートアップ」「シャットダウン」をトリガーにしたい場合
- PC側のオブジェクトにGPOを追加する
- ユーザの「ログイン」「ログオフ」をトリガーしたい場合
- ユーザ側のオブジェクトにGPOを追加する
取得したテキストファイルの集計
出力結果は下記のようなテキストになっています。
ここから、不要なAdminユーザが残っていない正常なPC設定であれば「xx行の出力になる」ことが分かります。
%COMPUTERNAME%.txt
Alias name administrators
Comment
Members
-------------------------------------------------------------------------------
Administrator
hogeAdmin
fugafuga\Domain Admins
fugafuga\piyopiyo Admin
The command completed successfully.
取得したファイルの存在するフォルダにおいて、下記のコマンドを実行し、全ファイルの「ファイル名」と「行数」を取得します。
find /v /c "" *.txt > rowcount.txt
あとは、正常なPCの出力行数と比較して出力行数が多いファイルを精査し、不要な権限を削除していきます。
以上です