CCR Node Standalone Discovery

Microsoft.Exchange2007.ServerRole.CcrNode.Standalone.Discovery.DS (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Exchange2007.ServerRole.Discovery.DS.Registry Default
PA ProbeAction Microsoft.Exchange2007.Script.ClusterHelper.PA Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
Frequencyint$Config/Frequency$FrequencyFrequency
LogLevelint$Config/LogLevel$Logging LevelThis defines the logging sensitivity to the event log. This property should be between 0 and 4. Value 0 minimizes logging. Value 4 enables tracing.

Source Code:

<DataSourceModuleType ID="Microsoft.Exchange2007.ServerRole.CcrNode.Standalone.Discovery.DS" Accessibility="Internal" Batching="false">
<Configuration>
<xsd:element minOccurs="1" name="Frequency" type="xsd:integer"/>
<xsd:element minOccurs="1" name="TimeoutSeconds" type="xsd:integer"/>
<xsd:element minOccurs="1" name="LogLevel" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="Frequency" Selector="$Config/Frequency$" ParameterType="int"/>
<OverrideableParameter ID="LogLevel" Selector="$Config/LogLevel$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="Microsoft.Exchange2007.ServerRole.Discovery.DS.Registry">
<RegistryRole>Mailbox</RegistryRole>
<Frequency>$Config/Frequency$</Frequency>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Boolean">Values/ExchangeRole</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="Boolean">true</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<Value>$Target/Host/Property[Type="Windows!Microsoft.Windows.Server.Computer"]/IsVirtualNode$</Value>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value>True</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Boolean">Values/ExchangeCluster</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="Boolean">false</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</And>
</Expression>
</DataSource>
<ProbeAction ID="PA" TypeID="Microsoft.Exchange2007.Script.ClusterHelper.PA">
<ScriptName>DiscoverStandaloneNode.js</ScriptName>
<LogLevel>$Config/LogLevel$</LogLevel>
<Arguments>$MPElement$ $Target/Id$ $Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/PrincipalName$ $Data/Values/Version$ $Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/DNSName$ "$Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/ActiveDirectorySite$" $Target/Host/Property[Type='Windows!Microsoft.Windows.Computer']/NetbiosComputerName$</Arguments>
<ScriptBody><Script>EXPECTED_ARGUMENT_COUNT = 8;
SCRIPT_NAME = "DiscoverStandaloneNode.js";

// ----------------------------------------------------------------------------------------
// Constants for DiscoverStandaloneNode
// ----------------------------------------------------------------------------------------
var REGKEY_LOG_SHIPPING = "SOFTWARE\\Microsoft\\Exchange\\Replay\\State";

main();

function main()
{
CheckArgument();

var sourceId = WScript.Arguments(1);
var managedEntityId = WScript.Arguments(2);
var computerPrincipalName = WScript.Arguments(3);
var exchangeVersion = WScript.Arguments(4);
var computerDnsName = WScript.Arguments(5);
var computerAdSiteName = WScript.Arguments(6);
var computerNetbiosName = WScript.Arguments(7);

CheckLdapPermission();

var discoveryData = scriptAPI.CreateDiscoveryData(0, sourceId, managedEntityId);
var roleName;

// check if server is stanalone mailbox by LDAP querying to find the server
var isExchange = IsExchangeServer(computerNetbiosName);
if (isExchange)
{
LogEvent(TRACING_ID, EVENT_TYPE_INFORMATION, "main - Server is standalone mailbox");

roleName = "Mailbox";
var mailbox = discoveryData.CreateClassInstance("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole.Mailbox.Standalone']$");
mailbox.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
mailbox.AddProperty("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole']/RoleName$", roleName);
mailbox.AddProperty("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole']/Version$", exchangeVersion);
mailbox.AddProperty("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole']/DnsName$", computerDnsName);
mailbox.AddProperty("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole']/ActiveDirectorySite$", computerAdSiteName);
mailbox.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", roleName + " (" + computerNetbiosName + ")");
discoveryData.AddInstance(mailbox);

LogEvent(TRACING_ID, EVENT_TYPE_INFORMATION, "main - Added mailbox instance. Returning discovery data.");
}
else
{
LogEvent(TRACING_ID, EVENT_TYPE_INFORMATION, "main - Server is not standalone mailbox");

// check if replication key contains anything
var logShippingSources = ReadRegistryKeys(REGKEY_HKLM, REGKEY_LOG_SHIPPING);
if (logShippingSources != null &amp;&amp; logShippingSources.length &gt; 0)
{
LogEvent(TRACING_ID, EVENT_TYPE_INFORMATION, "main - Server is CCR Node for Log Shipping in SCR target case");

roleName = "CCR Node";
var node = discoveryData.CreateClassInstance("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole.CcrNode']$");
node.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", computerPrincipalName);
node.AddProperty("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole']/RoleName$", roleName);
node.AddProperty("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole']/Version$", exchangeVersion);
node.AddProperty("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole']/DnsName$", computerDnsName);
node.AddProperty("$MPElement[Name='ExLibrary!Microsoft.Exchange2007.ServerRole']/ActiveDirectorySite$", computerAdSiteName);
node.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", roleName + " (" + computerNetbiosName + ")");
discoveryData.AddInstance(node);

LogEvent(TRACING_ID, EVENT_TYPE_INFORMATION, "main - Added cluster node instance. Returning discovery data.");
}
else
{
LogEvent(TRACING_ID, EVENT_TYPE_INFORMATION, "main - Log Shipping not found. Returning discovery data.");
}
}

scriptAPI.Return(discoveryData);
}
</Script></ScriptBody>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="PA">
<Node ID="DS"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>