バッチファイルを実行するユーザが、任意のローカルもしくはドメインのグループに属しているかを調べる方法です。
以下のようにすることで、調べることができます。
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 "ローカル管理者権限なし"
)
参考: