dポイントプレゼントキャンペーン実施中!

よろしくお願いします。

Windows2003Serverにて、ActiveDirectory(単一のドメイン)でサーバー運用しております。

遠隔地にある(ドメイン参加済の)クライアントパソコン約100台に対して、
一時的にではありますが、
各クライアントパソコンのAdministratorsグループに、
そのパソコンを使用するドメインユーザを追加したい
と思っています。
この場合、以下の方法が考えられると思います。

方法1)
 (1)管理ツール→コンピュータの管理から、[別のコンピュータへ接続]で対象となるパソコンに接続。
 (2)ローカルユーザーとグループからAdministratorsグループを選択し、
   ドメインの特定のユーザーを追加。
 ⇒一台ずつ行うのが面倒。
 ⇒電源が入っていないと作業が出来ない。

方法2)
 (1)ドメインサーバーから、新しいグループポリシーを作成。
 (2)コンピュータの構成→Windowsの設定→セキュリティの設定→制限されたグループ
  ここに[Admnistrator]を追加。
 ⇒クライアントパソコン上の既存のAdmnistratorグループ所属メンバが全て上書きされる。

各方法は、【⇒】に書いた問題(?)がある為、採用したくありません。

そこで、
グループポリシーの[スタートアップスクリプト]あるいは[ログオンスクリプト]
を利用し、自動でユーザー追加作業を行えるのかなと思ったのですが、
スクリプトをドメイン管理者の権限で実行する方法が分かりません。

何か上記を実現する方法はありますでしょうか?
※psexec、runasaといったツールは使えるのでしょうか??
 使える場合、どのような方法になるのでしょうか?ヒントだけでも欲しいです。

A 回答 (2件)

ポリシーに関してですが、Administratorsグループのメンバを上書きする方法と、Administratorsグループにメンバを追加する方法があります。



以下のように設定すると、ローカルのAdministratorsグループは上書きされ、Administratorとドメイン\Domain Usersしか存在しなくなります(それ以外のAdministratorsグループのメンバはグループから削除されます)。
・グループ名      :Administrators
・このグループのメンバ:ドメイン\Domain Users

以下のように設定すると、ローカルのAdministratorsグループに、ドメイン\Domain Usersを追加できます。
・グループ名      :ドメイン\Domain Users
・所属するグループ  :Administrators

ただし、今回はそのクライアントを使うドメインユーザーのみをAdministratorに追加したいということなので上記方法では不十分だと思われます。



またスクリプトをドメインの管理者権限で行う方法が分からないとのことですが、スタートアップスクリプトに仕込んだ場合にはクライアントのローカルシステム権限(だったと思います)で動作するので,
クライアントのAdministratorsグループの操作は可能です(こちらでも実際に行っています)。
以下VBSからその部分だけ抜粋です。

Set objNetwork = CreateObject("Wscript.Network")
ComputerName = objNetwork.ComputerName
DomainName = 【ドメイン名】
UserName=【ドメインユーザー名】
Set objGroup = GetObject("WinNT://" & ComputerName & "/Administrators")
Set objUser = GetObject("WinNT://" & DomainName & "/" & UserName)
objGroup.Add(objUser.ADsPath)

※DomainNameは貴社ドメイン名を設定
※UserNameはComputerNameに該当するドメインユーザー名を設定
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

VBSについては検討しておりましたが、
> UserName=【ドメインユーザー名】
の部分も、自動的に【各クライアントを使うドメインユーザー】を指定したいにも関わらず、
スタートアップスクリプト起動の時点で取得できない、と考え諦めました。
(これについては試す時間が無く、実際には試しておりません。。)

スタートアップスクリプトで、
  UserName=objNetwork.UserName
とし、普段ログインしているユーザーが選択されればベストなのですが、
これも実現できるのでしょうか?

現在、1パソコンに対して1ユーザーが割り当てられており、
約100台のパソコンには約100人のユーザーが割り当てられております。
100個分の固定のユーザー名を記述したVBSを作成する、
もしくは、if文のような記述で100ユーザー文の処理を記述する
のは大変かなと思いました。
※作業用のユーザーを1人割り当てるのが妥当かもしれないのですが、
 現時点では会社のやり方がそうなので、今回についてはやり方を変えられません。

OMEGAT様は、もし複数クライアントのAdministratorsグループの操作を行う場合、
ご回答のVBAをどのように設定しておられるのでしょうか?
差し支えなければお教え願います。

お礼日時:2011/01/22 16:11

#1です。



スタートアップスクリプトはユーザーがログオンする前に実行されますので、ログオンユーザーの取得ができません。
また、通常ログオンするユーザーが決まっているとはいえ、あくまでもそれは運用がそうなっているだけで、実際にログオンしているユーザーを取得しようとすれば、レジストリを参照するか、プロファイルフォルダを参照し、過去にログオンしたユーザーを調べるなどの方法をとり必要があると思います(プロファイルフォルダはユーザー名と等しく無い可能性もありますが)。

こちらが実際に行っているのはクライアント50台程度ですが、以下のようにコンピュータ名とユーザー名を直接書いています。
Select Case Ucase(ComputerName)
Case "PC01"
UserName = "User01"
Case "PC02"
UserName = "User02"
Case "PC03"
UserName = "User03"



End Select
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
やはり、コンピュータ名とユーザー名を直接記述するのが、
確実かつ一番行いたい事になる、という事だと思いました。

ちなみに、ADサーバーから実行すればクライアントPCの権限不足は気にしなくてもいいのか
という考えで、以下のような方法でできないものかとも思ったのですが、
(1)(2)に記載している【通知】の部分が具体的に思い浮かばないので、諦めました。

(1)
クライアントPCは、ログイン時に(スタートアップスクリプトではなく、、)
ログオンスクリプトの実行により、ADサーバーへログオンした事を【通知】する。
※【通知】情報には、【コンピュータ名】とログイン時の【ドメインユーザー名】を含める。

(2)
ADサーバーは、【通知】の受信をトリガーとし、以下のVBSを実行する。
Set objNetwork = CreateObject("Wscript.Network")
ComputerName = 【コンピュータ名】
DomainName = 【ドメイン名】
UserName = 【ドメインユーザー名】
Set objGroup = GetObject("WinNT://" & ComputerName & "/Administrators")
Set objUser = GetObject("WinNT://" & DomainName & "/" & UserName)
objGroup.Add(objUser.ADsPath)

お礼日時:2011/01/23 07:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!