Client Requests Discovery
Microsoft.BitLocker.Administration.And.Monitoring.Discovery.Client.Requests (Discovery)
Knowledge Base article: Element properties: Object Discovery Details: Member Modules:
Source Code: <Discovery ID="Microsoft.BitLocker.Administration.And.Monitoring.Discovery.Client.Requests" Enabled="true" Target="Microsoft.BitLocker.Administration.And.Monitoring.Class.Administration.And.Monitoring.Server" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Microsoft.BitLocker.Administration.And.Monitoring.Class.Client.Requests">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryRelationship TypeID="Administration.And.Monitoring.Server.Hosts.Client.Requests"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>14400</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoveryScript.vbs</ScriptName>
<Arguments>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Arguments>
<ScriptBody><Script>
Option Explicit
SetLocale("en-us")
Dim oScriptAPI, oDiscoveryData
Set oScriptAPI = CreateObject("MOM.ScriptAPI")
Set oDiscoveryData = oScriptAPI.CreateDiscoveryData(0, "$MPElement$", "$Target/Id$")
Dim oTarget
oTarget = WScript.Arguments(0)
If CheckReg("SOFTWARE\Microsoft\Microsoft BitLocker Administration And Monitoring\Setup\AdministrationMonitoringServer") Then
Dim oInst0
Set oInst0 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.BitLocker.Administration.And.Monitoring.Class.Client.Requests']$")
Call oInst0.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", oTarget)
Call oInst0.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "Client Requests (" + oTarget + ")")
Call oDiscoveryData.AddInstance(oInst0)
End If
Call oScriptAPI.Return(oDiscoveryData)
Function CheckReg(ByVal sReg)
Dim oStdRegProv
Set oStdRegProv = GetObject("winmgmts:\\.\root\default:StdRegProv")
sReg = TrimDelimeter(sReg)
Dim sStart, sEnd : sStart = ""
If InStr(sReg, "\") <> 0 Then
sStart = Mid(sReg, 1, InStrRev(sReg, "\") - 1)
End If
sEnd = Mid(sReg, InStrRev(sReg, "\") + 1)
Dim aValues(), bFound : bFound = false
Call oStdRegProv.EnumKey(, sStart, aValues)
Dim sValue
For Each sValue In aValues
If UCase(sValue) = UCase(sEnd) Then
bFound = true
End If
Next
CheckReg = bFound
End Function
Function GetReg(ByVal sReg)
Dim oStdRegProv
Set oStdRegProv = GetObject("winmgmts:\\.\root\default:StdRegProv")
Dim sValue
Dim bDefault : bDefault = false
If (Len(sReg) = InStrRev(sReg, "\")) Then
bDefault = true
End If
sReg = TrimDelimeter(sReg)
If bDefault Then
Call oStdRegProv.GetStringValue(, sReg, "", sValue)
Else
Dim sStart, sEnd : sStart = ""
If InStr(sReg, "\") <> 0 Then
sStart = Mid(sReg, 1, InStrRev(sReg, "\") - 1)
End If
sEnd = Mid(sReg, InStrRev(sReg, "\") + 1)
Call oStdRegProv.GetStringValue(, sStart, sEnd, sValue)
If IsNull(sValue) Then
Call oStdRegProv.GetDWORDValue(, sStart, sEnd, sValue)
End If
If IsNull(sValue) Then
Call oStdRegProv.GetQWORDValue(, sStart, sEnd, sValue)
End If
End If
GetReg = sValue
End Function
Function TrimDelimeter(ByVal sReg)
Dim aReg : aReg = Split(sReg, "\")
Dim a_Reg(), sPart, i : i = 0
For Each sPart In aReg
If sPart <> "" Then
ReDim Preserve a_Reg(i)
a_Reg(i) = sPart
i = i + 1
End If
Next
TrimDelimeter = Join(a_Reg, "\")
End Function
</Script> </ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</DataSource>
</Discovery>