3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(バッチ)今のユーザが任意のグループに属しているか調べる

バッチファイルを実行するユーザが、任意のローカルもしくはドメインのグループに属しているかを調べる方法です。

以下のようにすることで、調べることができます。

rem ローカルのAdministratorsグループに属しているか

net localgroup Administrators | find /I "%USERNAME%"

if %ERRORLEVEL% == 0 (

echo "属してる"

) else (

echo "属してない"

)

 

rem ドメインの Domain Admins グループに属しているか

net user "%USERNAME%" /domain | find /I "*Domain Admins"

if %ERRORLEVEL% == 0 (

echo "属してる"

) else (

echo "属してない"

)

当初は、ドメインの任意のユーザがこのバッチを実行したPCのローカルの管理者(Administrators)かどうかを調べたいと思っていました。

ローカルのAdministratorsグループに、直にドメインのユーザを指定している場合は上記の方法で取得できました。

しかし、ローカルのAdministratorsグループにドメインのグループを指定しており、そのドメイングループにユーザが所属しているとかいう場合は上記の方法だけでは判定できません。

そのような場合、ローカルのAdiministaratorsグループ内のドメインメンバを列挙し、ユーザがそのドメイングループにいるかどうかを調べる必要があります。

が、バッチだとそのあたりの処理の実装が難しいので、断念しました。

やはりちょっと複雑になるような処理はVBScriptやプログラムにしてしまったほうが楽です。

ドメインユーザがローカルのAdministratorsグループに属しているかどうかは、whoami コマンドを使うといいようです。

ただ、whoami コマンドはVsita以降は標準で着いてますが、2000はリリースキット、XP SP2のサポートツールいれないと使えないようです。

whoami /groups | find /I "Administrator"

if %ERRORLEVEL% == 0 (

echo "ローカル管理者権限有り"

) else (

echo "ローカル管理者権限なし"

)

参考:

ユーザが管理者権限を有しているかバッチで判定する方法 - Windows Server Insider - @IT

Windows Server:システム管理者の視点 - 正式に認められた「Whoami」コマンド:ITpro