Zjišťování vlastností serveru správy portálu Service Manager

Microsoft.SystemCenter.ServiceManager.SmManagementServerProperties.Discovery (Discovery)

Umožňuje zjistit vlastnosti portálu Microsoft System Center Service Manager.

Knowledge Base article:

Souhrn

Toto zjišťování slouží k naplnění vlastností portálu Service Manager. Zjišťování se spustí okamžitě po importu, přičemž ve 13:00 následuje další spuštění, kdy je čas provést synchronizaci. Následně je pak spouštěno ve 24hodinových intervalech. Čas synchronizace, četnost i časový limit lze změnit. Nedoporučuje se měnit argumenty.

Element properties:

TargetMicrosoft.SystemCenter.ServiceManager.SmManagementServer
EnabledTrue
Frequency86400
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.ServiceManager.OleDb.TimedScript.DiscoveryProvider Default

Source Code:

<Discovery ID="Microsoft.SystemCenter.ServiceManager.SmManagementServerProperties.Discovery" Enabled="true" Target="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="SM!Microsoft.ServiceManager.OleDb.TimedScript.DiscoveryProvider">
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime>01:00</SyncTime>
<ConnectionString>Provider=SQLOLEDB;Integrated Security=SSPI</ConnectionString>
<Query>select CONVERT(nvarchar(4000),B.Name) as ServerName from ScopedInstanceTargetClass SCT inner join ManagedType MT on MT.ManagedTypeId = SCT.ManagedTypeId inner join BaseManagedEntity B on B.BaseManagedEntityId = SCT.ScopedInstanceId where MT.TypeName ='Microsoft.SystemCenter.WorkflowTarget'</Query>
<GetValue>true</GetValue>
<IncludeOriginalItem>true</IncludeOriginalItem>
<OneRowPerItem>false</OneRowPerItem>
<DatabaseNameRegLocation>SOFTWARE\Microsoft\System Center\2010\Common\Database\DatabaseName</DatabaseNameRegLocation>
<DatabaseServerNameRegLocation>SOFTWARE\Microsoft\System Center\2010\Common\Database\DatabaseServerName</DatabaseServerNameRegLocation>
<ScriptName>ManagementServerDiscovery.js</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$ $Data/Columns[1]/Column[1]$</Arguments>
<ScriptBody><Script>

//Copyright (c) Microsoft Corporation. All rights reserved.
//*************************************************************************
// $ScriptName: ManagementServerDiscovery $
//
// Purpose - Populate properties of SM Management Server
//
// Parameters - 0 - discovery id
// 1 - Target managed entity id
// 2 - Host Computer Principal Name
// 3 - Name of server running workflows
//*************************************************************************


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

var sourceId = WScript.Arguments(0);
var managedEntityId = WScript.Arguments(1);
var hostCompPrincipalName = WScript.Arguments(2);
var serverRunningWorkflows = WScript.Arguments(3);
var isRunningWorkflows;

main();

function main()
{
var WshShell = WScript.CreateObject("WScript.Shell");

// Creating discovery data
var discoveryData = oAPI.CreateDiscoveryData(0, sourceId, managedEntityId);

// Get management group name from registry

HKLM = 0x80000002;
sRegPath = "SOFTWARE\\Microsoft\\Microsoft Operations Manager\\3.0\\Server Management Groups";
oLoc = new ActiveXObject("WbemScripting.SWbemLocator");
oSvc = oLoc.ConnectServer(null, "root\\default");
oReg = oSvc.Get("StdRegProv");
oMethod = oReg.Methods_.Item("EnumKey");

oInParam = oMethod.InParameters.SpawnInstance_();
oInParam.hDefKey = HKLM;
oInParam.sSubKeyName = sRegPath;
oOutParam = oReg.ExecMethod_(oMethod.Name, oInParam);

// Array of all keys under ServerManagementGroups
aNames = oOutParam.sNames.toArray();

var managementGroupName = aNames[0];


// Get SM DbHost Name from registry
var smDbHostName = WshShell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\System Center\\2010\\Common\\Database\\DatabaseServerName");
var smDbName = WshShell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\System Center\\2010\\Common\\Database\\DatabaseName");

// Instantiate Management Server Class

var oMgtServer = discoveryData.CreateClassInstance("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']$");
oMgtServer.AddProperty("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.ManagementServer']/ManagementGroupName$", managementGroupName);
oMgtServer.AddProperty("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']/SmDbHostName$", smDbHostName);
oMgtServer.AddProperty("$MPElement[Name='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']/SMDbName$", smDbName);
oMgtServer.AddProperty("$MPElement[Name="Windows!Microsoft.Windows.Computer"]/PrincipalName$",hostCompPrincipalName);

var compareValue = hostCompPrincipalName.toLowerCase().localeCompare(serverRunningWorkflows.toLowerCase());
if(compareValue == 0)
{
isRunningWorkflows = true;
}
else
{
isRunningWorkflows = false;
}

oMgtServer.AddProperty("$MPElement[Name="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer"]/isRunningWorkflows$",isRunningWorkflows);
discoveryData.AddInstance(oMgtServer);

oAPI.Return(discoveryData);

}

</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>