'/* Event ID Constants */
Const EVENTID_SCRIPT_ERROR = 1000
'*****************************************************************
'* PreapreScriptEnvironment
'* - MOMScriptAPI
'* - Create propertybag
'* - Get WMI result
'* - Output
'* - Satus
'* 0 : Success
'* 1 : MOMScriptAPI failed
'* 2 : PropertyBag creation failed
'* 3 : WMI failed
'* 4 : ADSystemInfo failed
'*****************************************************************
Function PrepareScriptEnvironment(ByRef oAPI, ByRef oBag, ByRef oWMI, ByRef oSysInfo)
Set oAPI = CreateObject("Mom.ScriptAPI")
If Err <> 0 Then
PrepareScriptEnvironment = 1
Exit Function
End If
Set oBag = oAPI.CreateTypedPropertyBag(StateDataType)
If Err <> 0 Then
PrepareScriptEnvironment = 2
Exit Function
End If
Set oWMI = GetObject("winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
If Err <> 0 Then
PrepareScriptEnvironment = 3
Exit Function
End If
Set oSysInfo = CreateObject("ADSystemInfo")
If Err <> 0 Then
PrepareScriptEnvironment = 4
Exit Function
End If
End Function
Function GetDCLocatorState(ByRef oWMI, ByRef oSysInfo)
Dim oNetworkAdapter
Dim strDCName
Dim iResult
iResult = 1
strDCName = GetHostName(oSysInfo.GetAnyDCName())
For Each oNetworkAdapter In oWMI
If IsObject(oNetworkAdapter) And Len(oNetworkAdapter.DNSHostName) > 0 Then '//kyekim: oNetworkAdpater.DNSHostName appears to be the DNS name of current box. In this case, we are assuming All DC's are DNS... =(
If LCase(strDCName) = LCase(oNetworkAdapter.DNSHostName) Then
iResult = 0
Exit For
End IF
End If
Next
GetDCLocatorState = iResult
End Function
Function GetHostName(ByVal strFQDN)
Dim iPtr
Dim strResult
strResult = strFQDN
iPtr = Instr(strFQDN, ".") - 1
If iPtr > 0 Then
strResult = Left(strResult, iPtr)
End If
GetHostName = strResult
End Function
Function FilloutPropertyBag(ByRef oBag, ByVal state)
Dim iResult
If state = 0 Then
oBag.AddValue "Status", "GOOD"
Else
oBag.AddValue "Status", "BAD"
End If
FilloutPropertyBag = 0
End Function
'******************************************************************************
' Name: CreateEvent
'
' Purpose: Creates a MOM event
'
' Parameters: lngEventID, the ID for the event
' lngEventType, the severity for the event. See constants at head of file
' strMessage, the message for the event
'
' Return: nothing
'******************************************************************************
Sub CreateEvent(ByRef oAPI, lngEventID, lngEventType, iStatus)
On Error Resume Next
Dim strMessage
Select Case iStatus
Case 1 strMessage = "Cannot create MOM Script API"
Case 2 strMessage = "Cannot create PropertyBag"
Case 3 strMessage = "WMI error"
Case 4 strMessage = "Cannot create ADSystemInfo"
End Select
oAPI.LogScriptEvent "DCLocatorRunning.vbs",lngEventID, lngEventType, strMessage
End Sub
Sub Main()
Dim oAPI
Dim oWMI
Dim oBag
Dim oSysInfo
Dim iResult
iResult = PrepareScriptEnvironment(oAPI, oBag, oWMI, oSysInfo)
If iResult <> 0 Then
CreateEvent oAPI, EVENTID_SCRIPT_ERROR, EVENT_TYPE_WARNING, iResult
Exit Sub
End If
iResult = GetDCLocatorState(oWMI, oSysInfo)
FilloutPropertyBag oBag, iResult
oAPI.Return oBag
End Sub