none
グループへのコンピュータオブジェクトの追加方法 RRS feed

  • 質問

  • Active Directory上のグループにコンピュータを追加する方法を検討しています。

    以下の方法以外でWindows標準の機能を使用して、コンピュータがドメイン参加した際に自動で指定のグループに登録する方法をご存知でしたらご教示頂きたいです。

    ◆追加方法

     1. 手動追加(頑張ってやる)

     2. PowerShellで追加(日に1回スケジュール実行)

    手動追加については、件数が多いため考えていません。

    PowerShellは作りこみが必要で今後保守が必要となるため、もしグループポリシーなどの機能で代替できるようであれば、避けたいです。

    なかなか該当する情報を見つけることができなかったため、今回こちらに質問させて頂きました。

    よろしくお願い致します。

    ◆構成

     OS:Windows Server 2012 R2

     機能レベル/フォレストレベル:Windows Server 2012 R2

     その他AD関連の製品は特に使用していません。

    2018年11月27日 6:38

回答

  • チャブーンです。

    この件ですが、したの方法をつかうと、4741イベント発生時に、特定グループにコンピューターを追加できます。

    https://blogs.technet.microsoft.com/wincat/2011/08/25/trigger-a-powershell-script-from-a-windows-event/

    #TriggerScript.ps1の内容
    
    param($eventRecordID,$eventChannel)
    
    $event = get-winevent -LogName $eventChannel -FilterXPath "<QueryList><Query Id='0' Path='$eventChannel'><Select Path='$eventChannel'>*[System[(EventRecordID=$eventRecordID)]]</Select></Query></QueryList>"
    
    $Computer = Get-ADComputer (([xml]$event.toxml()).event.eventdata.data|Where {$_.name -eq "TargetUserName"})."#text"
    
    #事前に"ComputerGroup1"グループが作成済みであること
    Add-ADGroupMember -identity ComputerGroup1 -members $Computer


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    • 回答としてマーク metaborick 2018年12月3日 9:34
    2018年11月28日 7:40
    モデレータ
  • グループポリシーではそういったものは無かったかと思います。
    Domain Computers ではダメで特定のOSや属性なのでしょうか…

    PowerShell で追加の方法ですが、内容によりけりですが作り込みと言う程でもない気がします。
    とりあえず、下記のような感じで昨日と今日追加されたコンピューターオブジェクトは追加できるはずです。

    $limit = (get-date).adddays(-1)
    $computers = Get-ADComputer -Properties whencreated -Filter {whencreated -ge $limit}
    Add-ADGroupMember -Identity testgroup -Members $computers


    Mr. Du

    • 回答としてマーク metaborick 2018年12月3日 9:35
    2018年11月27日 8:07

すべての返信

  • グループポリシーではそういったものは無かったかと思います。
    Domain Computers ではダメで特定のOSや属性なのでしょうか…

    PowerShell で追加の方法ですが、内容によりけりですが作り込みと言う程でもない気がします。
    とりあえず、下記のような感じで昨日と今日追加されたコンピューターオブジェクトは追加できるはずです。

    $limit = (get-date).adddays(-1)
    $computers = Get-ADComputer -Properties whencreated -Filter {whencreated -ge $limit}
    Add-ADGroupMember -Identity testgroup -Members $computers


    Mr. Du

    • 回答としてマーク metaborick 2018年12月3日 9:35
    2018年11月27日 8:07
  • こんにちは。

    グループ=OUということでしたら、以下コマンドでコンピュータオブジェクトのデフォルトの格納先OUを指定できます。

    redircmp "格納先OUのパス"

    参考リンク:http://pcmemorin.blog.fc2.com/blog-entry-1072.html

    ※Windows Server 2012 R2でも同様です。

    もし「グループ=OU」ということでないのなら、コンピュータオブジェクトをグループ(セキュリティグループ?)に登録して何を実現したいか目的をご説明されると良いかと思います。

    2018年11月27日 8:13
  • > MR. Duさん

    返信ありがとうございます。やはりなさそうですよね。。。

    PowerShellの参考もありがとうございます。参考にさせて頂きます!

    2018年11月27日 8:29
  • > Windows_Tさん

    返信ありがとうございます。説明不足ですみません。

    グループ=OUではなく、セキュリティグループ(グループの種類=セキュリティ)でした。

    実際にやりたいこととしては以下となります。

    ◆◆やりたいこと◆◆

       RODCにパスワードを複製する

    以下のサイトを参照したところ、通常状態ではRODCにパスワードが複製されておらず、複製するためには「Allowed RODC Password Replication Group」にユーザーアカウントとコンピュータアカウントを登録する必要があるとの記載がありました。

    https://blogs.technet.microsoft.com/jpntsblog/2010/02/04/rodc-rodc-12/

    ユーザーについては現在の運用の延長で対応可能と判断しているのですが、コンピュータについては現在全くなにもしていなかったので、どのような方法が取れるか検討している段階となります。

    上記のような背景から、今回質問させて頂いた次第です。


    2018年11月27日 8:43
  • チャブーンです。

    この件ですが、Active Directoryで「アカウント作成・変更」の検出を簡単に行う方法はありません(複製を前提とした検出方法ならばあるにはありますが)。したがってこれを検出してなんらかの操作を加えたいなら、別の視点での対応が必要です。

    この場合、「ユーザーアカウント管理」等のディレクトリ監査ログを使った検出を行うことができます。たとえばこの件であれば、セキュリティログの「コンピューターアカウント管理」(ID 4741)で作成状況が記録されますので、4741イベントに「このイベントにタスクを設定」することで、必要な操作をスクリプトで加えることができるでしょう。

    https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/audit-computer-account-management


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。


    2018年11月28日 2:24
    モデレータ
  • チャブーンです。

    この件ですが、したの方法をつかうと、4741イベント発生時に、特定グループにコンピューターを追加できます。

    https://blogs.technet.microsoft.com/wincat/2011/08/25/trigger-a-powershell-script-from-a-windows-event/

    #TriggerScript.ps1の内容
    
    param($eventRecordID,$eventChannel)
    
    $event = get-winevent -LogName $eventChannel -FilterXPath "<QueryList><Query Id='0' Path='$eventChannel'><Select Path='$eventChannel'>*[System[(EventRecordID=$eventRecordID)]]</Select></Query></QueryList>"
    
    $Computer = Get-ADComputer (([xml]$event.toxml()).event.eventdata.data|Where {$_.name -eq "TargetUserName"})."#text"
    
    #事前に"ComputerGroup1"グループが作成済みであること
    Add-ADGroupMember -identity ComputerGroup1 -members $Computer


    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。

    • 回答としてマーク metaborick 2018年12月3日 9:34
    2018年11月28日 7:40
    モデレータ
  • > チャブーンさん

    ご返信ありがとうございます。

    やはり標準機能で完全に簡単に検出というのは無理なんですね。。。

    ご教示頂いたイベント発生をトリガーとした登録方法を候補にいれて検討を進めたいと思います!

    (PowerShellのコードサンプルもありがとうございます!)


    2018年12月3日 9:34
  • 本件、Mr.Duさんに回答頂いたPowerShellとチャブーンさんに回答頂いたイベントトリガーによる実行の件を回答としてマークさせて頂きました。

    ご返信頂きました皆様、誠にありがとうございました。

    2018年12月3日 9:36