Data Protector MP Agent Discovery

HP.DataProtector.MPAgent.Discovery (Discovery)

Element properties:

TargetHP.DataProtector.CellServer.ComputerRole
EnabledTrue
Frequency3600
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

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

Source Code:

<Discovery ID="HP.DataProtector.MPAgent.Discovery" Enabled="true" Target="HP.DataProtector.CellServer.ComputerRole" ConfirmDelivery="true" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="HP.DataProtector.MPAgent"/>
</DiscoveryTypes>
<DataSource ID="Discovery" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>3600</IntervalSeconds>
<SyncTime/>
<ScriptName>MPDPAgentServiceDiscovery.js</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$ false</Arguments>
<ScriptBody><Script>/* ============================================================================
|
| Copyright (c) 2013 ComTrade d.o.o. All rights reserved.
|
| Possession of this software does not grant any rights to use, reproduce,
| modify or distribute it or to use any concept it may contain.
|
| Licensed under ComTrade d.o.o. license ("the License"); you may not use
| this software unless in compliance with the License. Any use of the software
| without such license is a violation of copyright laws and may be subject to
| legal actions (remedies and/or criminal prosecution).
|
| NOTE:
| If you receive this content in error, please let us know by contacting
| ComTrade d.o.o. legal department ([email protected]) and destroy any
| copy you may have.
|
+=============================================================================*/

/* ===========================================================================

NAME: MPDPAgentServiceDiscovery.js

AUTHOR: AMS Team , ComTrade d.o.o.
DATE : 6/7/2011

COMMENT:

==============================================================================*/
var gbl_nEventId = 17721;

CTLogger = function (oApi) {
var M_LOGLEVELINFO = 0;
var M_LOGLEVELWARNING = 2;
var M_LOGLEVELERROR = 1;

var m_oMomApi = oApi;
var m_nLogLevel = M_LOGLEVELERROR;

this.LoggingLevel = function(lValue) {
m_nLogLevel = lValue;
};

this.MomAPI = function(lValue) {
m_oMomApi = lValue;
};

this.LOGLEVELINFO = function() {
return M_LOGLEVELINFO;
};

this.LOGLEVELWARNING = function(){
return M_LOGLEVELWARNING;
};

this.LOGLEVELERROR = function() {
return M_LOGLEVELERROR;
};

var WriteStdErr = function (sMessage, nEventId, nSeverity) {
try {
var sMsg = "";
switch (nSeverity)
{
case 0 :
sMsg = "[" + WScript.ScriptName + " - Info]: EventId: " + nEventId + " Message: " + sMessage;
break;
case 1 :
sMsg = "[" + WScript.ScriptName + " - Error]: EventId: " + nEventId + " Message: " + sMessage;
break;
case 2 :
sMsg = "[" + WScript.ScriptName + " - Warning]: EventId: " + nEventId + " Message: " + sMessage;
break;
}
WScript.StdErr.WriteLine(sMsg);
}
catch (e){
}
};

var WriteStdOut = function (sMessage, nEventId, nSeverity) {
try {
var sMsg = "";
switch (nSeverity) {
case 0 :
sMsg = "[" + WScript.ScriptName + " - Info]: EventId: " + nEventId + " Message: " + sMessage;
break;
case 1 :
sMsg = "[" + WScript.ScriptName + " - Error]: EventId: " + nEventId + " Message: " + sMessage;
break;
case 2 :
sMsg = "[" + WScript.ScriptName + " - Warning]: EventId: " + nEventId + " Message: " + sMessage;
break;
}
WScript.StdOut.WriteLine(sMsg);
}
catch (e) {
}
};

var WriteEventLog = function (sMessage, nEventId, nSeverity) {
m_oMomApi.LogScriptEvent(WScript.ScriptName, nEventId, nSeverity, sMessage);
};

var IsNumeric = function (dt) {
var RE = /^-{0,1}\d*\.{0,1}\d+$/;
return (RE.test(dt));
};

var WriteLog = function (sMessage, nEventId, nSeverity) {
try {
if (IsNumeric(nSeverity) &amp;&amp; IsNumeric(nEventId)) {
if ( ! m_oMomApi) {
switch (m_nLogLevel) {
case 0 :
if (nSeverity == 1) {
WriteStdErr(sMessage, nEventId, nSeverity);
}
else {
WriteStdErr(sMessage, nEventId, nSeverity);
}
break;
case 1 :
if (nSeverity == 1) {
WriteStdErr(sMessage, nEventId, nSeverity);
}
break;
case 2 :
if (nSeverity == 1) {
WriteStdErr(sMessage, nEventId, nSeverity);
}
else if ( nSeverity == 2) {
WriteStdErr(sMessage, nEventId, nSeverity);
}
break;
}
}
else {
switch (m_nLogLevel) {
case 0 :
WriteEventLog(sMessage, nEventId, nSeverity);
break;
case 1 :
if (nSeverity == 1) {
WriteEventLog(sMessage, nEventId, nSeverity);
}
break;
case 2 :
if (nSeverity &gt; 0) {
WriteEventLog(sMessage, nEventId, nSeverity);
}
break;
}
}
}
}
catch (e) {
}
};

this.WriteError = function (sMessage, nEventId) {
WriteLog (sMessage, nEventId, M_LOGLEVELERROR);
};

this.WriteWarning = function (sMessage, nEventId) {
WriteLog (sMessage, nEventId, M_LOGLEVELWARNING);
};

this.WriteInfo = function(sMessage, nEventId) {
WriteLog (sMessage, nEventId, M_LOGLEVELINFO);
};
};

Main();

WScript.Quit(0);

function RegistryKeyExists(targetComputer, LNGHKEY, strKey, strValueName)
{
var HKLM = 0x80000002;
var HKCR = 0x80000000;
var HKCU = 0x80000001;
var HKUSERS = 0x80000003;
var reg, aSubkeys, s, hkroot;
if (LNGHKEY == "HKLM"){hkroot = HKLM;}
if (LNGHKEY == "HKCU"){hkroot = HKCU;}
if (LNGHKEY == "HKCR"){hkroot = HKCR;}
if (LNGHKEY == "HKUSERS"){hkroot = HKUSERS;}
reg = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\\\" + targetComputer + "\\root\\default:StdRegProv");

var arrSubKeys;
method = reg.Methods_.Item("EnumKey");
var inParams = method.InParameters.SpawnInstance_();
inParams.hDefKey = hkroot;
inParams.sSubKeyName = strKey;
var outParams = reg.ExecMethod_(method.Name, inParams);

arrSubKeys = outParams.sNames.toArray();
for (i = 0; i &lt; arrSubKeys.length; i++)
{
if (arrSubKeys[i].toUpperCase() == strValueName.toUpperCase())
{
return true;
}
}
return false;
}

function Main()
{
var Debug = false;
var oAPI, oBag, oInst;
oAPI = WScript.CreateObject("MOM.ScriptAPI");

// Create logger
var oLog = new CTLogger(oAPI);

var oArgs = WScript.Arguments;
if (oArgs.Count() &lt; 4)
{
oLog.WriteError("All needed arguments not specified.", gbl_nEventId);
WScript.Quit(-1);
}

var SourceID, ManagedEntityId;
var TargetComputer = "";

SourceID = oArgs(0);
ManagedEntityId = oArgs(1);
TargetComputer = oArgs(2);
Debug = oArgs(3);
if (Debug == "true")
{
oLog.LoggingLevel(oLog.LOGLEVELINFO());
}
oLog.WriteInfo("Script started.", gbl_nEventId);

oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceID, ManagedEntityId);

//var utility = new XDMPUtility();

/*var agtPath;
try {
agtPath = utility.getAgentPath();
if (agtPath.length &lt;= 0)
{
oAPI.Return(oDiscoveryData);
WScript.Quit(0);
}
}
catch (e)
{
oLog.WriteError("Cannot get agent path. " + e.message, gbl_nEventId);
oAPI.Return(oDiscoveryData);
WScript.Quit(0);
}*/

var MPDPAgentServiceFound = false;
var DATAPROTECTORAGENT_SERVICE = "HPMPDPAgent";
var SERVICES_REG_PATH = "SYSTEM\\CurrentControlSet\\Services";


//search for XenDesktop MP Core Service
if (RegistryKeyExists(TargetComputer, "HKLM", SERVICES_REG_PATH, DATAPROTECTORAGENT_SERVICE) == true)
{
MPDPAgentServiceFound = true;
}

var objWMIService, objDataProtectorMPAgent;
if (MPDPAgentServiceFound == true)
{
objWMIService = GetObject("winmgmts:\\\\" + TargetComputer + "\\root\\cimv2");
objDataProtectorMPAgent = objWMIService.Get("Win32_Service='" + DATAPROTECTORAGENT_SERVICE + "'");

var oInstMPAgent = oDiscoveryData.CreateClassInstance("$MPElement[Name='HP.DataProtector.MPAgent']$");
oInstMPAgent.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", objDataProtectorMPAgent.DisplayName + " (" + TargetComputer + ")");
oInstMPAgent.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer);
oInstMPAgent.AddProperty("$MPElement[Name='MicrosoftSystemCenterNTServiceLibrary!Microsoft.SystemCenter.NTService']/ServiceName$", objDataProtectorMPAgent.Name);
oInstMPAgent.AddProperty("$MPElement[Name='MicrosoftSystemCenterNTServiceLibrary!Microsoft.SystemCenter.NTService']/ServiceProcessName$", objDataProtectorMPAgent.PathName);
if (objDataProtectorMPAgent.Description != null)
{
oInstMPAgent.AddProperty("$MPElement[Name='MicrosoftSystemCenterNTServiceLibrary!Microsoft.SystemCenter.NTService']/Description$", objDataProtectorMPAgent.Description);
}
oDiscoveryData.AddInstance(oInstMPAgent);
}

oAPI.Return(oDiscoveryData);
oLog.WriteInfo("Script finished.", gbl_nEventId);
}</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>