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 < 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;
// ----------------------------------------------------------------------
// 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);
}