Microsoft.Exchange.2010.HubTransportComponent.DiscoveryDataSource (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource System.CommandExecuterDiscoveryDataSource Default

Overrideable Parameters:

IDParameterTypeSelector
IntervalSecondsint$Config/IntervalSeconds$
IsDatacenterbool$Config/IsDatacenter$
VerboseLoggingbool$Config/VerboseLogging$

Source Code:

<DataSourceModuleType ID="Microsoft.Exchange.2010.HubTransportComponent.DiscoveryDataSource" Accessibility="Internal" Batching="false">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="IntervalSeconds" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="IsDatacenter" type="xsd:boolean"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="VerboseLogging" type="xsd:boolean"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="IsDatacenter" Selector="$Config/IsDatacenter$" ParameterType="bool"/>
<OverrideableParameter ID="VerboseLogging" Selector="$Config/VerboseLogging$" ParameterType="bool"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="System!System.CommandExecuterDiscoveryDataSource">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<ApplicationName>%windir%\System32\cscript.exe</ApplicationName>
<WorkingDirectory/>
<CommandLine>//Nologo $file/MicrosoftExchangeHubTransportComponentDiscovery.js$ 0 $MPElement$ $Target/Id$ $Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/PrincipalName$ "$Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/NetbiosComputerName$" "$Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/ActiveDirectorySite$" $Config/IsDatacenter$ "$Config/VerboseLogging$"</CommandLine>
<TimeoutSeconds>900</TimeoutSeconds>
<RequireOutput>true</RequireOutput>
<Files>
<File>
<Name>MicrosoftExchangeHubTransportComponentDiscovery.js</Name>
<Contents><Script>
// ----------------------------------------------------------------------
// Script to discover HubTransportComponent entities.
// ----------------------------------------------------------------------

var EXPECTED_ARGUMENT_COUNT = 8;
var UNEXPECTED_ARGUMENT_COUNT_ERROR_ID = 101;

var DISCOVERY_STARTED_INF_ID = 1470;
var DISCOVERY_ENDED_INF_ID = 1471;
var DISCOVERY_PROGRESS_INF_ID = 1472;

var EVENT_SOURCE = "MicrosoftExchangeHubTransportComponentDiscovery.js";
var EVENT_TYPE_ERROR = 1;
var EVENT_TYPE_WARNING = 2;
var EVENT_TYPE_INFORMATION = 4;

var oAPI = new ActiveXObject("Mom.ScriptAPI");

var argumentsStr = "";
for (var i = 0; i &lt; WScript.Arguments.length; i++)
{
argumentsStr = argumentsStr.concat("\"", WScript.Arguments(i), "\" ");
}

if (WScript.Arguments.length != EXPECTED_ARGUMENT_COUNT)
{
oAPI.LogScriptEvent(
EVENT_SOURCE,
UNEXPECTED_ARGUMENT_COUNT_ERROR_ID,
EVENT_TYPE_ERROR,
"Expected " + EXPECTED_ARGUMENT_COUNT + " arguments. But there were " + WScript.Arguments.length + " arguments. Exiting script.\nArguments:" + argumentsStr);

WScript.Quit(-1);
}

var sourceType = WScript.Arguments(0);
var sourceId = WScript.Arguments(1);
var managedEntityId = WScript.Arguments(2);
var computerPrincipalName = WScript.Arguments(3);
var computerNetbiosName = WScript.Arguments(4);
var computerActiveDirectorySite = WScript.Arguments(5);
var isDatacenterString = WScript.Arguments(6);
var verboseLoggingString = WScript.Arguments(7);

// Convert variables from string to bool.
var isDatacenter = (isDatacenterString.toLowerCase() == "true") ? true : false;
var verboseLogging = (verboseLoggingString.toLowerCase() == "true") ? true : false;

var infoOutput = "HubTransportComponent Discovery script \n"
+ " Message: ";

main();

function main()
{
LogEvent(DISCOVERY_STARTED_INF_ID, EVENT_TYPE_INFORMATION, infoOutput + "Discovery Script started.\n Arguments: " + argumentsStr);

var discoveryData = oAPI.CreateDiscoveryData(sourceType, sourceId, managedEntityId);

// ----------------------------------------------------------------------
// Instantiate HubTransportComponent classes.
// ----------------------------------------------------------------------
//
// Construct the HubTransportRole class's Name key property.
var hubTransportRoleName = computerNetbiosName + " (Hub Transport) - " + computerActiveDirectorySite;

// Create the HubTransportAgentsConnectionFilter instance.
var oHubAgentsConnectionFilter = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportAgentsConnectionFilter']$");
oHubAgentsConnectionFilter.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubAgentsConnectionFilter.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubAgentsConnectionFilter.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Agents Connection Filter - " + hubTransportRoleName);
discoveryData.AddInstance(oHubAgentsConnectionFilter);

// Create the HubTransportAgentsContentFilter instance.
var oHubAgentsContentFilter = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportAgentsContentFilter']$");
oHubAgentsContentFilter.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubAgentsContentFilter.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubAgentsContentFilter.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Agents Content Filter - " + hubTransportRoleName);
discoveryData.AddInstance(oHubAgentsContentFilter);

// Create the HubTransportAgentsMessagingPolicies instance.
var oHubAgentsMessagingPolicies = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportAgentsMessagingPolicies']$");
oHubAgentsMessagingPolicies.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubAgentsMessagingPolicies.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubAgentsMessagingPolicies.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Agents Messaging Policies - " + hubTransportRoleName);
discoveryData.AddInstance(oHubAgentsMessagingPolicies);

// Create the HubTransportAgentsProtocolAnalysis instance.
var oHubAgentsProtocolAnalysis = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportAgentsProtocolAnalysis']$");
oHubAgentsProtocolAnalysis.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubAgentsProtocolAnalysis.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubAgentsProtocolAnalysis.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Agents Protocol Analysis - " + hubTransportRoleName);
discoveryData.AddInstance(oHubAgentsProtocolAnalysis);

// Create the HubTransportAgentsRecipientFilter instance.
var oHubAgentsRecipientFilter = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportAgentsRecipientFilter']$");
oHubAgentsRecipientFilter.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubAgentsRecipientFilter.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubAgentsRecipientFilter.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Agents Recipient Filter - " + hubTransportRoleName);
discoveryData.AddInstance(oHubAgentsRecipientFilter);

// Create the HubTransportAgentsSenderFilter instance.
var oHubAgentsSenderFilter = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportAgentsSenderFilter']$");
oHubAgentsSenderFilter.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubAgentsSenderFilter.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubAgentsSenderFilter.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Agents Sender Filter - " + hubTransportRoleName);
discoveryData.AddInstance(oHubAgentsSenderFilter);

// Create the HubTransportAgentsSenderId instance.
var oHubAgentsSenderId = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportAgentsSenderId']$");
oHubAgentsSenderId.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubAgentsSenderId.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubAgentsSenderId.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Agents Sender Id - " + hubTransportRoleName);
discoveryData.AddInstance(oHubAgentsSenderId);

// Create the HubTransportAgentsSMS instance.
var oHubAgentsSMS = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportAgentsSMS']$");
oHubAgentsSMS.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubAgentsSMS.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubAgentsSMS.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Agents SMS - " + hubTransportRoleName);
discoveryData.AddInstance(oHubAgentsSMS);

// Create the HubTransportDsn instance.
var oHubDsn = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportDsn']$");
oHubDsn.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubDsn.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubDsn.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "DSN - " + hubTransportRoleName);
discoveryData.AddInstance(oHubDsn);

// Create the HubTransportEdgeSync instance.
var oHubEdgeSync = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportEdgeSync']$");
oHubEdgeSync.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubEdgeSync.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubEdgeSync.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "EdgeSync - " + hubTransportRoleName);
discoveryData.AddInstance(oHubEdgeSync);

// Create the HubTransportQueues instance.
var oHubQueues = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportQueues']$");
oHubQueues.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubQueues.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubQueues.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Queues - " + hubTransportRoleName);
discoveryData.AddInstance(oHubQueues);

// Create the HubTransportServiceMonitoring instance.
var oHubServiceMonitoring = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportServiceMonitoring']$");
oHubServiceMonitoring.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubServiceMonitoring.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubServiceMonitoring.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Services - " + hubTransportRoleName);
discoveryData.AddInstance(oHubServiceMonitoring);

// Create the HubTransportStoreDriver instance.
var oHubStoreDriver = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportStoreDriver']$");
oHubStoreDriver.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oHubStoreDriver.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", hubTransportRoleName);
oHubStoreDriver.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Store Driver - " + hubTransportRoleName);
discoveryData.AddInstance(oHubStoreDriver);


// ----------------------------------------------------------------------
// Instantiate CommonComponent classes hosted by HubTransportRole.
// ----------------------------------------------------------------------
//
// Construct the CommonRole class's Name key property.
var commonRoleName = computerNetbiosName + " (Common) - " + computerActiveDirectorySite;

// Create the CommonAllServerRoles instance.
var oCommonAllServerRoles = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonAllServerRoles']$");
oCommonAllServerRoles.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonAllServerRoles.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonAllServerRoles.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Server - " + commonRoleName);
discoveryData.AddInstance(oCommonAllServerRoles);

// Create the CommonBestPracticeAnalyzer instance.
var oCommonBpa = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonBestPracticeAnalyzer']$");
oCommonBpa.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonBpa.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonBpa.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "ExBPA - " + commonRoleName);
discoveryData.AddInstance(oCommonBpa);

// Create the CommonExtensibleStorageEngine instance.
var oCommonEse = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonExtensibleStorageEngine']$");
oCommonEse.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonEse.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonEse.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "ESE - " + commonRoleName);
discoveryData.AddInstance(oCommonEse);

// Create the CommonProblemAnalysis instance.
var oCommonProblemAnalysis = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonProblemAnalysis']$");
oCommonProblemAnalysis.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonProblemAnalysis.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonProblemAnalysis.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Watson Events - " + commonRoleName);
discoveryData.AddInstance(oCommonProblemAnalysis);

// Create the CommonTransport instance.
var oCommonTransport = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonTransport']$");
oCommonTransport.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonTransport.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonTransport.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Transport - " + commonRoleName);
discoveryData.AddInstance(oCommonTransport);

// Create the CommonTransportAgents instance.
var oCommonTransportAgents = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonTransportAgents']$");
oCommonTransportAgents.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonTransportAgents.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonTransportAgents.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Transport Agents - " + commonRoleName);
discoveryData.AddInstance(oCommonTransportAgents);

// Create the CommonTransportLogSearch instance.
var oCommonTransportLogSearch = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonTransportLogSearch']$");
oCommonTransportLogSearch.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonTransportLogSearch.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonTransportLogSearch.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Transport Log Search - " + commonRoleName);
discoveryData.AddInstance(oCommonTransportLogSearch);

// Create the CommonServer instance.
var oCommonServer = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonServer']$");
oCommonServer.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonServer.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonServer.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Disk - " + commonRoleName);
discoveryData.AddInstance(oCommonServer);

// Create the CommonServiceMonitoring instance.
var oCommonServiceMonitoring = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonServiceMonitoring']$");
oCommonServiceMonitoring.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonServiceMonitoring.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonServiceMonitoring.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Common Services - " + commonRoleName);
discoveryData.AddInstance(oCommonServiceMonitoring);

// Create the CommonInternalRoleServices instance.
var oCommonInternalRoleServices = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonInternalRoleServices']$");
oCommonInternalRoleServices.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonInternalRoleServices.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonInternalRoleServices.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Common Services for Internal Roles - " + commonRoleName);
discoveryData.AddInstance(oCommonInternalRoleServices);

// Create the CommonRemotePowerShell instance.
var oCommonRemotePowerShell = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonRemotePowerShell']$");
oCommonRemotePowerShell.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonRemotePowerShell.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonRemotePowerShell.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Remote PowerShell - " + commonRoleName);
discoveryData.AddInstance(oCommonRemotePowerShell);

// Create the Auditing instance.
var oCommonAuditing = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.Auditing']$");
oCommonAuditing.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonAuditing.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonAuditing.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Auditing - " + commonRoleName);
discoveryData.AddInstance(oCommonAuditing);

// Create the CommonConfigurationAuthorization instance.
var oCommonConfigurationAuthorization = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonConfigurationAuthorization']$");
oCommonConfigurationAuthorization.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonConfigurationAuthorization.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonConfigurationAuthorization.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Configuration Authorization - " + commonRoleName);
discoveryData.AddInstance(oCommonConfigurationAuthorization);

// Create the CommonProvisioningBroker instance.
var oCommonProvisioningBroker = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonProvisioningBroker']$");
oCommonProvisioningBroker.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonProvisioningBroker.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonProvisioningBroker.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Provisioning Broker - " + commonRoleName);
discoveryData.AddInstance(oCommonProvisioningBroker);

// Create the CommonTransportThrottlingClient instance.
var oCommonTransportThrottlingClient = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonTransportThrottlingClient']$");
oCommonTransportThrottlingClient.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
oCommonTransportThrottlingClient.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.ServerRole']/RoleName$", commonRoleName);
oCommonTransportThrottlingClient.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Component']/ComponentName$", "Transport Throttling Client - " + commonRoleName);
discoveryData.AddInstance(oCommonTransportThrottlingClient);

// ----------------------------------------------------------------------
// Instantiate org level service classes related to HubTransportComponent.
// ----------------------------------------------------------------------
//
// Create the HubTransportService instance.
var oHubService = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService']$");
oHubService.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Service']/ServiceName$", "Hub Transport Service - " + computerActiveDirectorySite);
oHubService.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Service']/InstanceName$", computerActiveDirectorySite);
oHubService.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Service']/ActiveDirectorySite$", computerActiveDirectorySite);
discoveryData.AddInstance(oHubService);

// ----------------------------------------------------------------------
// Instantiate org level service classes related to CommonComponent.
// ----------------------------------------------------------------------
//
// Create the CommonRemotePowerShellService instance.
var oCommonRemotePowerShellService = discoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonRemotePowerShellService']$");
oCommonRemotePowerShellService.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Service']/ServiceName$", "Remote PowerShell Service - " + computerActiveDirectorySite);
oCommonRemotePowerShellService.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Service']/InstanceName$", computerActiveDirectorySite);
oCommonRemotePowerShellService.AddProperty("$MPElement[Name='Microsoft.Exchange.2010.Service']/ActiveDirectorySite$", computerActiveDirectorySite);
discoveryData.AddInstance(oCommonRemotePowerShellService);

// ----------------------------------------------------------------------
// Create relationships from org level services to HubTransportComponent.
// ----------------------------------------------------------------------
//
// Create containment relationship from HubTransportService to HubAgentsConnectionFilter.
var oHubServiceContainsHubAgentsConnectionFilter = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubAgentsConnectionFilter.Source = oHubService;
oHubServiceContainsHubAgentsConnectionFilter.Target = oHubAgentsConnectionFilter;
discoveryData.AddInstance(oHubServiceContainsHubAgentsConnectionFilter);

// Create containment relationship from HubTransportService to HubAgentsContentFilter.
var oHubServiceContainsHubAgentsContentFilter = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubAgentsContentFilter.Source = oHubService;
oHubServiceContainsHubAgentsContentFilter.Target = oHubAgentsContentFilter;
discoveryData.AddInstance(oHubServiceContainsHubAgentsContentFilter);

// Create containment relationship from HubTransportService to HubAgentsMessagingPolicies.
var oHubServiceContainsHubAgentsMessagingPolicies = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubAgentsMessagingPolicies.Source = oHubService;
oHubServiceContainsHubAgentsMessagingPolicies.Target = oHubAgentsMessagingPolicies;
discoveryData.AddInstance(oHubServiceContainsHubAgentsMessagingPolicies);

// Create containment relationship from HubTransportService to HubAgentsProtocolAnalysis.
var oHubServiceContainsHubAgentsProtocolAnalysis = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubAgentsProtocolAnalysis.Source = oHubService;
oHubServiceContainsHubAgentsProtocolAnalysis.Target = oHubAgentsProtocolAnalysis;
discoveryData.AddInstance(oHubServiceContainsHubAgentsProtocolAnalysis);

// Create containment relationship from HubTransportService to HubAgentsRecipientFilter.
var oHubServiceContainsHubAgentsRecipientFilter = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubAgentsRecipientFilter.Source = oHubService;
oHubServiceContainsHubAgentsRecipientFilter.Target = oHubAgentsRecipientFilter;
discoveryData.AddInstance(oHubServiceContainsHubAgentsRecipientFilter);

// Create containment relationship from HubTransportService to HubAgentsSenderFilter.
var oHubServiceContainsHubAgentsSenderFilter = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubAgentsSenderFilter.Source = oHubService;
oHubServiceContainsHubAgentsSenderFilter.Target = oHubAgentsSenderFilter;
discoveryData.AddInstance(oHubServiceContainsHubAgentsSenderFilter);

// Create containment relationship from HubTransportService to HubAgentsSenderId.
var oHubServiceContainsHubAgentsSenderId = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubAgentsSenderId.Source = oHubService;
oHubServiceContainsHubAgentsSenderId.Target = oHubAgentsSenderId;
discoveryData.AddInstance(oHubServiceContainsHubAgentsSenderId);

// Create containment relationship from HubTransportService to HubAgentsSMS.
var oHubServiceContainsHubAgentsSMS = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubAgentsSMS.Source = oHubService;
oHubServiceContainsHubAgentsSMS.Target = oHubAgentsSMS;
discoveryData.AddInstance(oHubServiceContainsHubAgentsSMS);

// Create containment relationship from HubTransportService to HubDsn.
var oHubServiceContainsHubDsn = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubDsn.Source = oHubService;
oHubServiceContainsHubDsn.Target = oHubDsn;
discoveryData.AddInstance(oHubServiceContainsHubDsn);

// Create containment relationship from HubTransportService to HubEdgeSync.
var oHubServiceContainsHubEdgeSync = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubEdgeSync.Source = oHubService;
oHubServiceContainsHubEdgeSync.Target = oHubEdgeSync;
discoveryData.AddInstance(oHubServiceContainsHubEdgeSync);

// Create containment relationship from HubTransportService to HubQueues.
var oHubServiceContainsHubQueues = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubQueues.Source = oHubService;
oHubServiceContainsHubQueues.Target = oHubQueues;
discoveryData.AddInstance(oHubServiceContainsHubQueues);

// Create containment relationship from HubTransportService to HubServiceMonitoring.
var oHubServiceContainsHubServiceMonitoring = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubServiceMonitoring.Source = oHubService;
oHubServiceContainsHubServiceMonitoring.Target = oHubServiceMonitoring;
discoveryData.AddInstance(oHubServiceContainsHubServiceMonitoring);

// Create containment relationship from HubTransportService to HubStoreDriver.
var oHubServiceContainsHubStoreDriver = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.HubTransportService.Contains.Microsoft.Exchange.2010.HubTransportComponent']$");
oHubServiceContainsHubStoreDriver.Source = oHubService;
oHubServiceContainsHubStoreDriver.Target = oHubStoreDriver;
discoveryData.AddInstance(oHubServiceContainsHubStoreDriver);

// ----------------------------------------------------------------------
// Create relationships from org level services.
// ----------------------------------------------------------------------
//
if (false == isDatacenter)
{
// Create containment relationship from CommonRemotePowerShellService to CommonRemotePowerShell only when Datacenter management pack is not installed.
var oCommonRemotePowerShellServiceContainsCommonRemotePowerShell = discoveryData.CreateRelationshipInstance("$MPElement[Name='Microsoft.Exchange.2010.CommonRemotePowerShellService.Contains.Microsoft.Exchange.2010.CommonRemotePowerShell']$");
oCommonRemotePowerShellServiceContainsCommonRemotePowerShell.Source = oCommonRemotePowerShellService;
oCommonRemotePowerShellServiceContainsCommonRemotePowerShell.Target = oCommonRemotePowerShell;
discoveryData.AddInstance(oCommonRemotePowerShellServiceContainsCommonRemotePowerShell);
}

oAPI.Return(discoveryData);

LogEvent(DISCOVERY_ENDED_INF_ID, EVENT_TYPE_INFORMATION, infoOutput + "Exiting Discovery." );
}

//
// Log to EventLog if verboseLogging is set
//
function LogEvent(eventId, eventType, message)
{
if (verboseLogging)
{
oAPI.LogScriptEvent(EVENT_SOURCE, eventId, eventType, message);
}
}
</Script></Contents>
</File>
</Files>
</DataSource>
</MemberModules>
<Composition>
<Node ID="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>