相反する二つの管理手法ですが、ActiveDirectoryでは割とうまく実現できています。
AD上ではOUという単位で全てを管理すると効率的です。
全てとは例えばユーザ、グループ、コンピュータです。
誰かにある範囲のものを管理して欲しければ、
1.OUを作って、
2.その中に管理して欲しいものを放り込み、
3.OUに対して委任すれば完了です。
ただし、委任された人ができる事というのは、
そのOUの中のオブジェクトの追加、更新、削除です。
例えば、クライアントPCにソフトをインストールする権限などは持てません。
これが可能なのはDomain Adminsのメンバーだけで、
このメンバーはドメイン全ての者に対して、管理者権限を有します。
普通、管理を委任するという事は、その範囲のもの対して
フルコントロール権限を持つ事ですが、ADではそこまで大きな権限を委任できません。
しかし、あるOUにあるコンピュータに対して、ある担当者に管理者権限を与えたい、といった要件はよくある事です。
予めコンピュータのAdministratorsグループに、ドメインのグループを追加しておいて、そのドメイングループのメンバーに担当者を加えるのがその際の解決策です。
ただ、こういった案件は突発的に起きたりするもの。
また、異動者のPCまで管理を再設定する必要があるので、
その手間を省きたいと思います。
1.ドメインにグループAを作成
2.ローカルのAdministratorsにAグループを追加するスクリプト作成
3.委任するOUを作成
4.グループポリシのスタートアップスクリプトに、2のスクリプトをセット
5.管理するコンピュータをOUに放り込む
こうする事で、わざわざAdministratorsにグループを追加するという、
事前準備が不要になり、コンピュータをドラッグするというステップだけで、完全に担当者に委任する事が可能になります。
ちなみにスクリプトは以下のようなものです。
strDomainGroupPath = "WinNT://ドメイン名/ドメイン上のグループ名"
set oNet = Wscript.CreateObject("WScript.Network")
strComputer = oNet.ComputerName
strLocalAdminsPath = "WinNT://" & strComputer & "/Administrators"
Set oGroup = GetObject(strLocalAdminsPath)
Set oUser = GetObject(strDomainGroupPath)
if oGroup.isMember(oUser.ADsPath) then
WScript.Echo strDomainGroupPath & " は既に " & strLocalAdminsPath & " のメンバーです"
else
ret_value = oGroup.Add(oUser.ADsPath)
end if
管理のステップを減らすための努力を行う事が大切です。
参考図書
WindowsサーバーHacks―管理者必携のテクニック&WSHスクリプト100選
Windowsのシステム管理を行う時に、欲しいスクリプトそのものがズバリ・・・
とはいきませんが、参考になるくらいのものは沢山あります。
暇なときに見ると、こんな事もできるのかー、という発見があります。
ADSIスクリプトによるWindows2000システム管理
WMI,ADSIは日本語情報が無くて本当に困ります。
これを読んで試行錯誤してなんとか基礎的な部分を得たかな....という感じです。
この本でマスターは難しいかもしれませんが、手助けにはなります。