NlbScriptLib.vbs
NLBScriptLib.vbs serves as a common library of functions for the jobs in Nlb.wsf. It is mainly used to provide a standard mechanism for connecting to the Network Load Balancing provider.
'''''''''''''''''''''''''''''''''''
' NlbScriptLib.vbs
'
' Contains functions and constants used by Nlb.wsf
'
'''''''''''''''''''''''''''''''''''
Public Const DEBUG_MODE = False
' The NLB provider namespace
Public Const NLB_NAMESPACE = "root\MicrosoftNLB"
' Global objects
Public g_objLocator 'SWbemLocator object
Public g_objService 'SWbemService object
Public g_objArgs 'Arguments object
Public g_objNode 'MicrosoftNLB_Node object
'Global strings
Public g_strCIP 'Cluster IP
Public g_strDIP 'Dedicated IP
Public g_strHostID 'Host priority
Public g_strPort 'Port number
Public g_strNameKey 'Used to specify the Name property
Public Function ConnectNLB()
'
' Sets all global objects and establishes a connection to a
' Network Load Balancing host via its dedicated IP address (DIP).
'
' Every job in NLB.WSF calls ConnectNLB.
'
' ConnectNLB expects the following command-line arguments:
' 1) The user ID of the caller.
' 2) The password of the caller.
'
Dim strUsername, strPassword
Dim xmlDoc, ElementList, objNode, objNodes
'Parse the XML document
Set XMLDoc = CreateObject("Microsoft.xmlDOM")
xmlDoc.Async = False
xmlDoc.Load("Nlb.xml")
Set ElementList = xmlDoc.getElementsByTagName("clusterIP")
g_strCIP = ElementList.item(0).text
Set ElementList = xmlDoc.getElementsByTagName("dedicatedIP")
g_strDIP = ElementList.item(0).text
Set ElementList = xmlDoc.getElementsByTagName("hostID")
g_strHostID = ElementList.item(0).text
Set ElementList = xmlDoc.getElementsByTagName("portnumber")
g_strPort = ElementList.item(0).text
Set ElementList = Nothing
Set XMLDoc = Nothing
'Parse command-line arguments
Set g_objArgs = WScript.Arguments
If g_objArgs.Count < 2 Then
ShowSyntax
WScript.Quit
End If
'Connect to NLB
Set g_objLocator = CreateObject("WbemScripting.SWbemLocator")
Set g_objService = g_objLocator.ConnectServer(g_strDIP, _
NLB_Namespace, _
strUserName, _
strPassword)
g_objLocator.Security_.ImpersonationLevel = 3
'Get a MicrosoftNLB_Node object
Set objNodes = g_objService.InstancesOf ("MicrosoftNLB_Node")
For Each objNode in objNodes
Exit For
Next
Set g_objNode = objNode
g_strNameKey = g_strCIP & ":" & g_strHostID
End Function
Public Function QuitWithMessage(strMessage)
WScript.Echo strMessage
DisconnectNLB
WScript.Quit
End Function
Public Function EnumProperties(obj)
Dim oProps, oProp
Set oProps = obj.Properties_
On Error Resume Next
For Each oProp in oProps
WScript.Echo oProp.Name & " : " & CStr(oProp.Value)
If Err.Number = 94 Then
'Error 94 = Invalid Use of Null
Err.Clear
WScript.Echo oProp.Name & " : (null)"
End If
Next
Set oProp = Nothing
Set oProps = Nothing
End Function
Public Function DisconnectNLB
Set g_objNodes = Nothing
Set g_objArgs = Nothing
Set g_objService = Nothing
Set g_objLocator = Nothing
End Function
Public Function ShowSyntax()
WScript.Echo vbCrLf
WScript.Echo String(70,"=")
WScript.Echo "NLB.WSF SYNTAX GUIDE:" & vbCrLf
WScript.Echo "Run NLB.WSF on the command line using the following basic syntax:"
WScript.Echo " cscript //Job:<JobID> nlb.wsf <arglist>" & vbCrLf
WScript.Echo "For <JobID>, specify the name of the job you want to run."
WScript.Echo "Job names are defined in NLB.WSF." & vbCrLf
WScript.Echo "For <arglist>, specify:"
WScript.Echo " 1. Your network user name."
WScript.Echo " 2. Your network password."
WScript.Echo "Example: Running the Test job"
WScript.Echo " cscript //Job:" & Chr(34) & "Test" & Chr(34) & " " & _
"nlb.wsf " & Chr(34) & "Administrator" & Chr(34) & " " & _
Chr(34) & Chr(34) & vbCrLf
WScript.Echo String(70,"=")
End Function