none
セキュリティグループに信頼関係先ドメインのアカウントを追加・削除するには? RRS feed

  • 質問

  • 初めて投稿させていただきます。

    作成したVBスクリプトを実行し、セキュリティグループに信頼関係先ドメインのアカウントの追加、削除を行います。

    VBスクリプトを実行するのは、Windows2000SP4、もしくはWindowsServer2008R2で管理者権限で実行します。

    Windows2000SP4で実行する場合、[test.local] のセキュリティグループに [main.local] のアカウントを追加します。

    WindowsServer2008R2で実行する場合、[sumple.local] のセキュリティグループに [main.local] のアカウントを追加します。

     <質問>

    作成したVBスクリプトを実行したのですが、WindowsServer2008R2で実行した場合はアカウントの追加・削除ともに正常に行えます。

    しかしWindows2000SP4で実行した場合、エラーとなりアカウントの追加・削除が行えません。SIDの取得は上手くいっているようですが、

    objGroup.SetInfoを実行したタイミングでエラーになっているようです。

    (なお、「ActiveDirectoryユーザとコンピュータ」から手動でアカウントの追加・削除が行えることは確認済みです。)

    ご教授を何卒宜しくお願い致します。

    <環境>

    下記3台全てドメインコントローラです。

    信頼関係を結んでいますが、全て片方向です。

    ・OS:WindowsServer2003R2 SP2(ドメイン名:main.local  コンピュータ名:main1 )

    (信頼関係:test.localと入力方向の信頼 / sumple.local と入力方向の信頼)

    ・OS:Windows2000SP4(ドメイン名:test.local  コンピュータ名:test1 )

    (信頼関係:main.local と出力方向の信頼)

    ・OS:WindowsServer2008R2 (ドメイン名:sumple.local  コンピュータ名:sumple1 )

    (信頼関係:main.local と出力方向の信頼)

     

    下記がWindows2000SP4上で実行し、[test.local] のセキュリティグループに [main.local] のアカウントを追加する実行スクリプトです。

    Option Explicit

    Dim objGroup
    Dim UsrSet
    Dim query
    Dim WMIService

    Set objGroup = GetObect("LDAP://CN=TestG,OU=Riyousya,DC=test,DC=local")

    Set WMIService = GetObject("winmgmts:{impersonationlevel=impersonate}!\\main\root\cimv2")

    query = "Select * From Win32_UserAccount WHERE Name = '" & "test77" & "'"

    Set UsrSet = WMIService.ExecQuery(query)

    For Each Usr In UsrSet
      ' メンバー追加の場合
      objGroup.PutEx 3,"member",Array("<Sid=" & Usr.SID & ">")

      ' メンバー削除の場合はこちらのコメントを外し、メンバー追加をコメントアウトする
      'objGroup.PutEx 4,"member",Array("<Sid=" & Usr.SID & ">")

    Next

    objGroup.SetInfo

     

    2011年1月26日 1:47

回答

  • VBS勉強中です。

    ずっと調査していてましたが、結果としてSIDを使用しない方法で解決いたしました。

    Windows2000に関しては、ローカルでもSIDでのメンバ追加が行えなかったことが原因不明です。

    エラーとしては、objGroup.setinfo で名前の違反があります。 (80072037)というエラーがWSHで表示されました。

    Err.Numberは、-2147016649が返ってきておりました。

    Windows2000では、SIDの取り扱いに注意点があるのでしょうか。

     

    なお、問題解決したスクリプトは以下のとおりです。

    Set objGroup = GetObject("WinNT://./TestG")

    objGroup.Add("WinNT://main.local/test77")

    objGroup.SetInfo

     

    2011年1月29日 3:07

すべての返信

  • チャブーンです。

    実際どうなるのか、ちょっと検証して...ということは、時間がないのですぐにはできません。

    エラーの具体的な「メッセージ全文」はなんと出るのでしょうかねぇ。それがわかるだけでも、(検証なしでも)だいぶ切り分けができると思います。よろしければ、教えてください。

    2011年1月28日 3:37
    モデレータ
  • VBS勉強中です。

    ずっと調査していてましたが、結果としてSIDを使用しない方法で解決いたしました。

    Windows2000に関しては、ローカルでもSIDでのメンバ追加が行えなかったことが原因不明です。

    エラーとしては、objGroup.setinfo で名前の違反があります。 (80072037)というエラーがWSHで表示されました。

    Err.Numberは、-2147016649が返ってきておりました。

    Windows2000では、SIDの取り扱いに注意点があるのでしょうか。

     

    なお、問題解決したスクリプトは以下のとおりです。

    Set objGroup = GetObject("WinNT://./TestG")

    objGroup.Add("WinNT://main.local/test77")

    objGroup.SetInfo

     

    2011年1月29日 3:07
  • こんにちは、フォーラムオペレーターの三沢健二です。

    チャブーン さん、アドバイスありがとうございます。

    VBS勉強中 さん、結果のご報告ありがとうございます。

    自己解決されたとの事でしたので、質問者さんご自身の返信になりますが [回答としてマーク] を付けさせていただきますね。

    最初のスクリプトについてですが、ちょっと私の環境(DC Win2000)でも試してみましたが、同じようなエラーが発生しました。
    信頼関係でのテストは行っていないですが、下記リンク先のスクリプトであればユーザーの追加が可能でした。

    - 参考情報
    [ADSI スクリプティング] VBScriot で SID(SDDL) を使用するには
    http://www.itcommunity.ru/blogs/_asrtechnet/archive/2010/08/28/120664.aspx


    それでは、今後とも TechNet Forum をよろしくお願いします。

    ______________________________________
    マイクロソフト株式会社 フォーラム オペレーター 三沢健二

    2011年2月1日 6:01
    モデレータ