Dim objArgs, objAPI, objWMSDefGroup
Dim SourceID, ManagedEntityId, TargetComputer, WMSID, DiscoverCacheProxy
'get the parameters from the management pack
Set objArgs = WScript.Arguments
If objArgs.Count < 5 Then
WScript.Quit -1
End If
SourceID = objArgs(0)
ManagedEntityId = objArgs(1)
TargetComputer = objArgs(2)
WMSID = objArgs(3)
DiscoverCacheProxy = CBool(objArgs(4))
Function FetchPublishingPoints
On Error Resume Next
Dim objWMSrv, objPubPoints, objPubPoint
Dim iPP
Dim aPubPoints
Set objWMSrv = CreateObject("WMSServer.server",TargetComputer)
Set objPubPoints = objWMSrv.PublishingPoints
'get the type and the name for each publishing point that exists
ReDim aPubPoints(objPubPoints.Count, 3)
For iPP = 0 To objPubPoints.Count - 1
Set objPubPoint = objPubPoints.Item(iPP)
Select Case objPubPoint.Name
Case "/"
aPubPoints(iPP, 0) = "/"
Case Else
aPubPoints(iPP, 0) = objPubPoint.Name
End Select
Select Case objPubPoint.Type
Case WMS_PUBLISHING_POINT_TYPE_ON_DEMAND
aPubPoints(iPP,1) = objPubPoint.Path
aPubPoints(iPP,2) = "on demand"
Case WMS_PUBLISHING_POINT_TYPE_BROADCAST
aPubPoints(iPP,1) = objPubPoint.Path
aPubPoints(iPP,2) = "broadcast"
Case WMS_PUBLISHING_POINT_TYPE_CACHE_PROXY_ON_DEMAND
aPubPoints(iPP,1) = "n/a"
aPubPoints(iPP,2) = "on demand (cache proxy)"
Case WMS_PUBLISHING_POINT_TYPE_CACHE_PROXY_BROADCAST
aPubPoints(iPP,1) = "n/a"
aPubPoints(iPP,2) = "broadcast (cache proxy)"
End Select
Next
On Error Goto 0
'occasionally the PPs are deleted while discovery is running. In that case the error should be ignored.
Err.Clear
FetchPublishingPoints = aPubPoints
End Function
Function DiscoverWMSPP (SourceId, ManagedEntityId, WMSID, ByVal aDiscoverData, ByVal objWMSDefGroup, DiscoverCacheProxy)
Dim objDiscoveryData, objRelCon, objInst
Dim iPubPoints
If UBound(aDiscoverData) > 0 Then
Set objDiscoveryData = objAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId)
For iPubPoints = 0 To UBound(aDiscoverData) - 1
Select Case aDiscoverData(iPubPoints, 2)
Case "broadcast"
If DiscoverCacheProxy = vbFalse Then
Set objInst = objDiscoveryData.CreateClassInstance("$MPElement[Name='Custom.WMS.9.PP.Broadcast']$")
Call objInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.Role']/ID$", WMSID)
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.PP']/PPName$", aDiscoverData(iPubPoints,0))
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.PP']/PPPath$", aDiscoverData(iPubPoints,1))
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.PP']/PPType$", aDiscoverData(iPubPoints,2))
Call objInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "WMS PP " + aDiscoverData(iPubPoints, 0))
Call objDiscoveryData.AddInstance(objInst)
End If
Case "on demand"
If DiscoverCacheProxy = vbFalse Then
Set objInst = objDiscoveryData.CreateClassInstance("$MPElement[Name='Custom.WMS.9.PP.OnDemand']$")
Call objInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.Role']/ID$", WMSID)
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.PP']/PPName$", aDiscoverData(iPubPoints,0))
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.PP']/PPPath$", aDiscoverData(iPubPoints,1))
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.PP']/PPType$", aDiscoverData(iPubPoints,2))
Call objInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "WMS PP " + aDiscoverData(iPubPoints,0))
Call objDiscoveryData.AddInstance(objInst)
End If
Case Else
If DiscoverCacheProxy = vbTrue Then
Set objInst = objDiscoveryData.CreateClassInstance("$MPElement[Name='Custom.WMS.9.PP.CacheProxy']$")
Call objInst.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", TargetComputer)
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.Role']/ID$", WMSID)
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.PP']/PPName$", aDiscoverData(iPubPoints,0))
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.PP']/PPPath$", aDiscoverData(iPubPoints,1))
Call objInst.AddProperty("$MPElement[Name='Custom.WMS.x.PP']/PPType$", aDiscoverData(iPubPoints,2))
Call objInst.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "WMS PP " + aDiscoverData(iPubPoints,0))
Call objDiscoveryData.AddInstance(objInst)
End If
End Select
Next
Call objAPI.Return(objDiscoveryData)
Set objInst = Nothing
Set objDiscoveryData = Nothing
Else
'Call objAPI.LogScriptEvent("Custom.Windows.WMS.Publishing.Point.Discovery.vbs", 9002, 4, "The service discovery script has not found any WMS Publishing Point and is closing without writing discovery data.")
WScript.Quit 0
End If
End Function]]></Script></ScriptBody>
<TimeoutSeconds>30</TimeoutSeconds>
</DataSource>
</Discovery>