LyncRoomConsole Discovery

Microsoft.Lync.RoomSystem.Client.Discovery.LyncRoomConsole (Discovery)

Element properties:

TargetMicrosoft.Lync.RoomSystem.Client.Class.LyncRoomConsole.Seed
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.Lync.RoomSystem.Client.Discovery.LyncRoomConsole" Enabled="true" Target="Microsoft.Lync.RoomSystem.Client.Class.LyncRoomConsole.Seed" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="Microsoft.Lync.RoomSystem.Client.Class.LyncRoomConsole">
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryClass TypeID="Microsoft.Lync.RoomSystem.Client.Class.LyncRoom">
<Property TypeID="Microsoft.Lync.RoomSystem.Client.Class.LyncRoom" PropertyID="ApplicationName"/>
<Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
</DiscoveryClass>
<DiscoveryRelationship TypeID="LyncRoomConsole.Seed.Hosts.LyncRoomConsole"/>
<DiscoveryRelationship TypeID="LyncRoom.Contains.LyncRoomConsole"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>14400</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoveryScript.vbs</ScriptName>
<Arguments>$Target/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)

Dim oInst0
Set oInst0 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Lync.RoomSystem.Client.Class.LyncRoom']$")

Dim appName
appName = GetReg("SOFTWARE\Microsoft\LyncRoom")

If IsNull(appName) Then
appName = "LyncRoom"
End If

Call oInst0.AddProperty("$MPElement[Name='Microsoft.Lync.RoomSystem.Client.Class.LyncRoom']/ApplicationName$", appName)
Call oInst0.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", appName)

Call oDiscoveryData.AddInstance(oInst0)

Dim oInst1
Set oInst1 = oDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Lync.RoomSystem.Client.Class.LyncRoomConsole']$")

Call oInst1.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", oTarget)
Call oInst1.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "LyncRoomConsole (" + oTarget + ")")

Call oDiscoveryData.AddInstance(oInst1)

Dim oRel0
Set oRel0 = oDiscoveryData.CreateRelationshipInstance("$MPElement[Name='LyncRoom.Contains.LyncRoomConsole']$")

oRel0.Source = oInst0
oRel0.Target = oInst1

Call oDiscoveryData.AddInstance(oRel0)

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>