VCS Virtual Server Discovery for Exchange Server 2003

Symantec.VCS.Exch2003VirtualServer.Discovery (Discovery)

This discovery discovers the VCS virtual servers configured for Microsoft Exchange Server 2003 instances.

Element properties:

TargetSymantec.VCS.PhysicalServer
EnabledTrue
Frequency300
RemotableFalse

Object Discovery Details:

Discovered Classes and their attribuets:

Member Modules:

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

Source Code:

<Discovery ID="Symantec.VCS.Exch2003VirtualServer.Discovery" Enabled="true" Target="VCSLibrary!Symantec.VCS.PhysicalServer" ConfirmDelivery="true" Remotable="false" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="VCSLibrary!Symantec.VCS.VirtualServer">
<Property TypeID="Windows!Microsoft.Windows.Computer" PropertyID="PrincipalName"/>
<Property TypeID="Windows!Microsoft.Windows.Computer" PropertyID="NetworkName"/>
<Property TypeID="Windows!Microsoft.Windows.Computer" PropertyID="DNSName"/>
<Property TypeID="Windows!Microsoft.Windows.Computer" PropertyID="NetbiosComputerName"/>
<Property TypeID="VCSLibrary!Symantec.VCS.VirtualServer" PropertyID="OnlineNode"/>
</DiscoveryClass>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.DiscoveryProvider">
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<ScriptName>DiscoverExch2003VirtualServers.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/DomainDnsName$</Arguments>
<ScriptBody><Script>
Option Explicit
SetLocale("en-us")

Const SCRIPT_NAME = "VCS Virtual Server Discovery for Exch2003"
Const WindowsFolder = 0
Const ForWriting = 2
Const ForReading = 1
Const VCS_STRNAME = "Veritas Cluster Server MOM utility"

Dim SourceID
Dim ManagedEntityID
Dim DomainName
Dim FILENAME, wfolder, fso, VCSInstalled

Call Main()

Sub Main
Dim objTextFile, objShell, objScriptExec, strAPIState, strComputer,objReg,strKeyPath, objLogFile

Dim oParams
Set oParams = WScript.Arguments

SourceId = oParams(0)
ManagedEntityId = oParams(1)
DomainName = oParams(2)

Set fso = CreateObject("Scripting.FileSystemObject")
Set wfolder = fso.GetSpecialFolder(WindowsFolder)
FILENAME = wfolder + "\\Temp\\VCSExch2003VirtualServer.log"
'Set objLogFile = fsO.OpenTextFile(FILENAME, ForWriting, True)
'objLogFile.WriteLine(" Create MOM Object")

Dim oAPI, oDiscoveryData
Set oAPI = CreateObject("MOM.ScriptAPI")
If Err &lt;&gt; 0 Then
WScript.Quit -1
End If
Set oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceId, ManagedEntityId)
If Err &lt;&gt; 0 Then
WScript.Quit -1
End If

'objLogFile.WriteLine(" Objects created, Start vcs discovery")
FILENAME = wfolder + "\\Temp\\VCSExch2003VirtualServer.txt"
Set objTextFile = fsO.OpenTextFile(FILENAME, ForWriting, True)
Set objShell = CreateObject("WScript.Shell")

' For Exch2003
Set objScriptExec = objShell.Exec("%VCS_HOME%\Bin\MOMUtil.exe ExchService Service")
strAPIState = objScriptExec.StdOut.ReadAll
objTextFile.WriteLine(strAPIState)

Set objScriptExec = objShell.Exec("%VCS_HOME%\Bin\MOMUtil.exe Lanman VirtualName")
strAPIState = objScriptExec.StdOut.ReadAll
'objLogFile.WriteLine(strAPIState)
If strAPIState &lt;&gt; "" Then
If InStr (1, strAPIState, "error", 1) &gt;0 Then
Call oAPI.Return(oDiscoveryData)
WScript.Quit
Else
objTextFile.WriteLine("Lanman Information")
objTextFile.WriteLine(strAPIState)
objTextFile.close()

'Get the Instance and Lanman pair with service group
Dim strTempArr, ServiceGroups, GroupName
ServiceGroups=""
Set objTextFile = fsO.OpenTextFile(FILENAME, ForReading, True)
'objLogFile.WriteLine("Start reading file")
If objTextFile.AtEndOfStream &lt;&gt; True Then
strAPIState = objTextFile.ReadLine
strAPIState = Trim(strAPIState)
Do While (StrComp(strAPIState, "Lanman Information", 1) &lt;&gt; 0 )
If Len(strAPIState) &gt; 0 Then
strTempArr = Split(strAPIState, ",")
If (StrComp("Instance", strTempArr(0), 1) = 0 ) Then
'Discover Virtual Server
If (StrComp("MSExchangeSA", strTempArr(1), 1) = 0) Then
GroupName = strTempArr(2)
If InStr(ServiceGroups, GroupName) = 0 Then
'objLogFile.WriteLine("Adding SQL" + GroupName)
ServiceGroups = ServiceGroups + "," + GroupName
End If
End If
End If
End If
strAPIState = objTextFile.ReadLine
strAPIState = Trim(strAPIState)
Loop
'objLogFile.WriteLine("SGS: " + ServiceGroups)
strAPIState = objTextFile.ReadLine
strAPIState = Trim(strAPIState)
ServiceGroups = ServiceGroups + ","
Do While objTextFile.AtEndOfStream &lt;&gt; True
If Len(strAPIState) &gt; 0 Then
strTempArr = Split(strAPIState, ",")
If (StrComp("Instance", strTempArr(0), 1) = 0 ) Then
'Find Lanman Group in the ServiceGroup list
Dim SearchString
SearchString = ","+ strTempArr(2)+","
If (InStr(ServiceGroups, SearchString) &gt; 0) Then
Dim OnlineNode
OnlineNode = strTempArr(3)
'objLogFile.WriteLine("OnlineNode :" + OnlineNode)
If Len(OnlineNode) &gt; 1 Then
'objLogFile.WriteLine("Discovering :" + strTempArr(1))
Dim LanmanName, FQLanmanName
LanmanName = strTempArr(1)
FQLanmanName = strTempArr(1) + "." + DomainName
Dim oVirtualServer
Set oVirtualServer = oDiscoveryData.CreateClassInstance("$MPElement[Name='VCSLibrary!Symantec.VCS.VirtualServer']$")
With oVirtualServer
.AddProperty "$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", FQLanmanName
.AddProperty "$MPElement[Name='Windows!Microsoft.Windows.Computer']/NetworkName$", FQLanmanName
.AddProperty "$MPElement[Name='Windows!Microsoft.Windows.Computer']/DNSName$", FQLanmanName
.AddProperty "$MPElement[Name='Windows!Microsoft.Windows.Computer']/NetbiosComputerName$", LanmanName
.AddProperty "$MPElement[Name='VCSLibrary!Symantec.VCS.VirtualServer']/OnlineNode$", OnlineNode
End With
Call oDiscoveryData.AddInstance(oVirtualServer)

End If
End If
End If
End If
strAPIState = objTextFile.ReadLine
strAPIState = Trim(strAPIState)
Loop
End If
End If
End If
objTextFile.Close()
'objLogFile.WriteLine("Returning discovery data")
'objLogFile.Close()
oAPI.Return(oDiscoveryData)
End Sub
</Script></ScriptBody>
<TimeoutSeconds>120</TimeoutSeconds>
</DataSource>
</Discovery>