RD Connection Broker Discovery Module

Microsoft.Windows.Server.10.0.RemoteDesktopServicesRole.Service.RDConnectionBroker.DiscoveryModule (DataSourceModuleType)

Used to Discover RD Connection Broker instances using script

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

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

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$Interval in SecondsRD Connection Broker Discovery Module Interval in Seconds
SyncTimestring$Config/SyncTime$Sync TimeRD Connection Broker Discovery Module Sync Time
TimeoutSecondsint$Config/TimeoutSeconds$Timeout SecondsRD Connection Broker Discovery Module Timeout Seconds

Source Code:

<DataSourceModuleType ID="Microsoft.Windows.Server.10.0.RemoteDesktopServicesRole.Service.RDConnectionBroker.DiscoveryModule" Accessibility="Internal" Batching="false">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="IntervalSeconds" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SyncTime" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ComputerID" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ComputerName" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ComputerNETBIOSName" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="TimeoutSeconds" type="xsd:int"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string"/>
<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/TimeoutSeconds$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime>$Config/SyncTime$</SyncTime>
<ScriptName>DiscoverRDS2005CBDiscovery.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Config/ComputerID$ $Config/ComputerName$ $Config/ComputerNETBIOSName$</Arguments>
<ScriptBody><Script>
Option Explicit

SetLocale("en-us")

Call Main()
Function WMIExecQuery(ByVal sNamespace, ByVal sQuery)
'
' WMIExecQuery :: Executes the WMI query and returns the result set.
'
'
Dim oWMI, oQuery
Set oWMI=GetObject(sNamespace)
Set oQuery=oWMI.ExecQuery(sQuery)
Set WMIExecQuery=oQuery

End Function

Sub Main()
Dim objParameters, SourceID, ManagedEntityId, TargetComputerID, TargetComputer, TargetNetBIOSName
Dim oCBInstance, oClusteredProperty, oCBWMIQuery, CBNetworkName, CBName

Set objParameters = WScript.Arguments

SourceID = objParameters(0)
ManagedEntityId = objParameters(1)
TargetComputerID = objParameters(2)
TargetComputer = objParameters(3)
TargetNetBIOSName = objParameters(4)

Set objParameters = Nothing

Dim oAPI, oCBDiscoveryData
Set oAPI = CreateObject("MOM.ScriptAPI")
set oCBDiscoveryData = oAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId)

Set oCBWMIQuery=WMIExecQuery ("winmgmts:\\" &amp; TargetComputer &amp; "\root\CIMV2","SELECT Name FROM Win32_ServerFeature WHERE ID = 133")
If(oCBWMIQuery.Count=1) Then
For Each prop in oCBWMIQuery
CBName=prop.Name
Next
Set oClusteredProperty=WMIExecQuery("winmgmts:\\" &amp; TargetComputer &amp; "\root\CIMV2","SELECT * FROM Win32_SessionBrokerServiceProperties")
If (Err.Number = 0) Then
On Error Resume Next
For Each p in oClusteredProperty
CBNetworkName=p.SBNetworkName
Next
If(Err.Number&lt;&gt;0) Then
'Discovered Passive Node, return empty discovery data
Call oAPI.Return(oCBDiscoveryData)
Exit Sub
End If
Set oCBInstance = oCBDiscoveryData.CreateClassInstance("$MPElement[Name='Microsoft.Windows.Server.10.0.RemoteDesktopServicesRole.Service.RDConnectionBroker']$")
With oCBInstance
.AddProperty "$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputerID
.AddProperty "$MPElement[Name='System!System.Entity']/DisplayName$", CBName
End With
oCBDiscoveryData.AddInstance(oCBInstance)
End If
End If
Call oAPI.Return(oCBDiscoveryData)
End Sub
</Script></ScriptBody>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</DataSource>
</MemberModules>
<Composition>
<Node ID="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>