<ManagementPack ContentReadable="true" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <Manifest>
    <Identity>
      <ID>ADBasedGroupDemo</ID>
      <Version>1.0.0.0</Version>
    </Identity>
    <Name>ADBasedGroupDemo</Name>
    <References>
      <Reference Alias="SC">
        <ID>Microsoft.SystemCenter.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Windows">
        <ID>Microsoft.Windows.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Health">
        <ID>System.Health.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="System">
        <ID>System.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <TypeDefinitions>
    <EntityTypes>
      <ClassTypes>
        <ClassType ID="GroupPopulationDemo.ADBasedGroup" Accessibility="Internal" Abstract="false" Base="System!System.Group" Hosted="false" Singleton="true" />
      </ClassTypes>
      <RelationshipTypes>
        <RelationshipType ID="GroupPopulationDemo.ADBasedGroupContainsWindowsComputers" Accessibility="Internal" Abstract="false" Base="System!System.Containment">
          <Source>GroupPopulationDemo.ADBasedGroup</Source>
          <Target>Windows!Microsoft.Windows.Computer</Target>
        </RelationshipType>
      </RelationshipTypes>
    </EntityTypes>
  </TypeDefinitions>
  <Monitoring>
    <Discoveries>
      <Discovery ID="ADBasedGroupDemo.SampleDiscovery" Enabled="true" Target="SC!Microsoft.SystemCenter.RootManagementServer" ConfirmDelivery="true" Remotable="true" Priority="Normal">
        <Category>Discovery</Category>
        <DiscoveryTypes>
          <DiscoveryClass TypeID="GroupPopulationDemo.ADBasedGroup" />
        </DiscoveryTypes>
        <DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
          <IntervalSeconds>300</IntervalSeconds>
          <SyncTime />
          <ScriptName>ADBasedGroupDiscovery.vbs</ScriptName>
          <Arguments>$MPElement$ $Target/Id$</Arguments>
          <ScriptBody><![CDATA[Dim SourceId
Dim ManagedEntityId
Dim oAPI
Dim oDiscoveryData

SourceId                = WScript.Arguments(0)
ManagedEntityId         = WScript.Arguments(1)

Set oAPI 			= CreateObject("MOM.ScriptAPI")
Set oDiscoveryData 	= oAPI.CreateDiscoveryData(0,SourceId,ManagedEntityId)

Set objConnection = CreateObject("ADODB.Connection")

objConnection.Open "Provider=ADsDSOObject;"

Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection

objCommand.CommandText = "<LDAP://OU=MS,dc=contoso,dc=com>;(objectCategory=computer);dNSHostName;subtree"

Set objRecordSet = objCommand.Execute

Set groupInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='GroupPopulationDemo.ADBasedGroup']$")

While Not objRecordSet.EOF

	Set serverInstance = oDiscoveryData.CreateClassInstance("$MPElement[Name='Windows!Microsoft.Windows.Computer']$")
	serverInstance.AddProperty "$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$",objRecordSet.Fields("dNSHostName")
	
	Set relationshipInstance = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='GroupPopulationDemo.ADBasedGroupContainsWindowsComputers']$")
		
	relationshipInstance.Source = groupInstance
	relationshipInstance.Target = serverInstance

	oDiscoveryData.AddInstance relationshipInstance

	objRecordSet.MoveNext
Wend

objConnection.Close

Call oAPI.Return(oDiscoveryData)
]]></ScriptBody>
          <TimeoutSeconds>120</TimeoutSeconds>
        </DataSource>
      </Discovery>
    </Discoveries>
  </Monitoring>
  <LanguagePacks>
    <LanguagePack ID="ENU" IsDefault="true">
      <DisplayStrings>
        <DisplayString ElementID="ADBasedGroupDemo">
          <Name>AD Based Group Population</Name>
        </DisplayString>
        <DisplayString ElementID="GroupPopulationDemo.ADBasedGroup">
          <Name>AD Based Group</Name>
        </DisplayString>
        <DisplayString ElementID="GroupPopulationDemo.ADBasedGroupContainsWindowsComputers">
          <Name>AD Based Group Contains Windows Computers</Name>
        </DisplayString>
        <DisplayString ElementID="ADBasedGroupDemo.SampleDiscovery">
          <Name>AD Based Group Sample Discovery</Name>
          <Description />
        </DisplayString>
      </DisplayStrings>
    </LanguagePack>
  </LanguagePacks>
</ManagementPack>