Источник данных обнаружения отношений агента

Microsoft.SystemCenter.ADManagedComputerDiscovery (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsSystem.PrivilegedMonitoringAccount
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
DataSource DataSource Microsoft.Windows.TimedScript.DiscoveryProvider Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$Интервал (сек.)
TimeoutSecondsint$Config/TimeoutSeconds$Время ожидания (сек.)

Source Code:

<DataSourceModuleType ID="Microsoft.SystemCenter.ADManagedComputerDiscovery" Accessibility="Internal" RunAs="System!System.PrivilegedMonitoringAccount" Batching="false">
<Configuration>
<xsd:element name="IntervalSeconds" type="xsd:integer"/>
<xsd:element name="TimeoutSeconds" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/TimeoutSeconds$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DataSource" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoverAgentRelationshipSettings.js</ScriptName>
<Arguments>0 $MPElement$ $Target/Id$ $Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$ "$Target/ManagementGroup/Name$"</Arguments>
<ScriptBody><Script>

var oAPI = new ActiveXObject("MOM.ScriptAPI");
var oShell = new ActiveXObject("WScript.Shell");
var oArgs = WScript.Arguments;

// Process Arguments:
// 0 - SourceType
// 1 - SourceId
// 2 - ManagedEntityId
// 3 - ComputerIdentity
// 4 - ManagementGroupName

var SourceType = oArgs(0);
var SourceId = oArgs(1);
var ManagedEntityId = oArgs(2);
var ComputerIdentity = oArgs(3);
var ManagementGroupName = oArgs(4);

WScript.Echo("\nSourceType: " + SourceType);
WScript.Echo("SourceId " + SourceId);
WScript.Echo("ManagedEntityId: " + ManagedEntityId);
WScript.Echo("ComputerIdentity: " + ComputerIdentity);
WScript.Echo("ManagementGroupName: " + ManagementGroupName);

var SCRIPT_NAME = "DiscoverAgentRelationshipSettings.js";
var ENU_MESSAGE_BASE = "This script discovers AgentRelationshipSettings objects\n\r";

var EVENTLOG_SUCCESS = 0x0000; /* Information event */
var EVENTLOG_AUDIT_FAILURE = 0x0010; /* Failure Audit event */
var EVENTLOG_AUDIT_SUCCESS = 0x0008; /* Success Audit event */
var EVENTLOG_ERROR_TYPE = 0x0001; /* Error event */
var EVENTLOG_INFORMATION_TYPE = 0x0004; /* Information event */
var EVENTLOG_WARNING_TYPE = 0x0002; /* Warning event */

var EnableADIntegrationRegValue = "HKLM\\SYSTEM\\CurrentControlSet\\Services\\HealthService\\Parameters\\ConnectorManager\\EnableADIntegration";
var UseActiveDirectoryRegValue = "HKLM\\SOFTWARE\\Microsoft\\Microsoft Operations Manager\\3.0\\Agent Management Groups\\" + ManagementGroupName + "\\UseActiveDirectory";

var EnableADIntegration = new Boolean(SafeRegRead(EnableADIntegrationRegValue));
var UseActiveDirectory;

try
{
UseActiveDirectory = new Boolean(oShell.RegRead(UseActiveDirectoryRegValue));
}
catch (e)
{
switch (e.number &amp; 0xFFFF)
{
// HRESULT 0x80070002: ERROR_FILE_NOT_FOUND - Severity: FAILURE (1), FACILITY_WIN32 (0x7), Code 0x2
// If UseActiveDirectory RegValue DOES NOT EXIST the agent for this Management Group IS AD Integrated
case 2 :
UseActiveDirectory = new Boolean(true);
break;
default :
PrintError(e);
throw(e);
}
}

WScript.Echo("\nEnableADIntegration value: " + EnableADIntegration);
WScript.Echo("UseActiveDirectory value: " + UseActiveDirectory);


if ((EnableADIntegration != null) &amp;&amp; (UseActiveDirectory != null))
{
var oDiscovery = oAPI.CreateDiscoveryData(SourceType, SourceId, ManagedEntityId);

var oHealthService = oDiscovery.CreateClassInstance("$MPElement[Name='SCLibrary!Microsoft.SystemCenter.HealthService']$");
oHealthService.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", ComputerIdentity);
oHealthService.AddProperty("$MPElement[Name='SCLibrary!Microsoft.SystemCenter.HealthService']/ActiveDirectoryManaged$", UseActiveDirectory);

oDiscovery.AddInstance(oHealthService);
oAPI.Return(oDiscovery);
}

function PrintError(error)
{
WScript.Echo("============================= BEGIN ERROR =================================\n");
WScript.Echo("Error Type : " + error);
WScript.Echo("Error Number : " + error.number);
WScript.Echo("Error Code : " + (error.number &amp; 0xFFFF));
WScript.Echo("Win32 Facility : " + (error.number&gt;&gt;16 &amp; 0x1FFF));
WScript.Echo("Error Source : " + error.Source);
WScript.Echo("Error Description : " + error.description);
WScript.Echo("============================== END ERROR ==================================\n");
}

function SafeRegRead(registryPath)
{
try
{
return oReg = oShell.RegRead(registryPath);
}
catch (e)
{
switch (e.number &amp; 0xFFFF)
{
// HRESULT 0x80070002: ERROR_FILE_NOT_FOUND - Severity: FAILURE (1), FACILITY_WIN32 (0x7), Code 0x2
case 2 :
WScript.Echo("Could not find " + "\"" + registryPath + "\"\n");
WScript.Quit(1);
break;
default :
PrintError(e);
}
}
}

</Script></ScriptBody>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</DataSource>
</MemberModules>
<Composition>
<Node ID="DataSource"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>