VCS Virtual Server Discovery for Exchange Server 2007

Symantec.VCS.Exch2007VirtualServer.Discovery (Discovery)

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.Exch2007VirtualServer.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>DiscoverExch2007VirtualServers.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 Exch2007"
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\\VCSExch2007VirtualServer.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\\VCSExch2007VirtualServer.txt"
Set objTextFile = fsO.OpenTextFile(FILENAME, ForWriting, True)
Set objShell = CreateObject("WScript.Shell")

' For Exch2003
Set objScriptExec = objShell.Exec("%VCS_HOME%\Bin\MOMUtil.exe ExchService2007 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,"No Resources are configured",1) &gt;0 Then
objTextFile.WriteLine("")
ElseIf InStr (1, strAPIState, "error", 1) &gt;0 Then
If InStr (1, strAPIState, "Out of Memory", 1) &gt;0 Then
Call oAPI.Return(oDiscoveryData)
WScript.Quit
Else
WScript.Quit -1
End If
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>