Data Protector MP Agent Discovery
HP.DataProtector.MPAgent.Discovery (Discovery)
Element properties: Object Discovery Details: Member Modules:
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) && 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 > 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 < 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() < 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 <= 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>