Client Requests Discovery

Microsoft.BitLocker.Administration.And.Monitoring.Discovery.Client.Requests (Discovery)

Knowledge Base article:

Summary

The discovery for Client Requests node in the health model is the same as the discovery for the Administration and Monitoring Role.

Element properties:

TargetMicrosoft.BitLocker.Administration.And.Monitoring.Class.Administration.And.Monitoring.Server
EnabledTrue
Frequency14400
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:
Discovered relationships and their attribuets:

Member Modules:

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

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, "\") &lt;&gt; 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, "\") &lt;&gt; 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 &lt;&gt; "" 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>