'========================================================================== ' NAME: Synthetic DNS Lookup, version 2.0 ' AUTHOR: Marcus Oh (with a tweak from Pete) ' DATE : 6/17/2006 ' COMMENT: Returns 'error' if nslookup fails. 'Script Parameters '================= 'HostName - FQDN of host(A) record to retrieve 'NameServers - comma-separated list of DNS Servers to Query 'LogSuccessEvent - (Boolean) If set to 1, event will be logged upon successful lookup '========================================================================== ' Standard Event Type Numeric Values Const EVENT_TYPE_SUCCESS = 0 Const EVENT_TYPE_ERROR = 1 Const EVENT_TYPE_WARNING = 2 Const EVENT_TYPE_INFORMATION = 4 Set oShell = CreateObject("Wscript.Shell") sHost = ScriptContext.Parameters.Get("HostName") sNameServer = ScriptContext.Parameters.Get("NameServers") bLogSuccessEvent = CBool(ScriptContext.Parameters.Get("LogSuccessEvent")) If Len(sNameServer)> 0 Then If InStr(sNameServer,",") <> 0 Then iNames = Instr(sNameServer, ",") Do While iNames > 0 DNSlookup sHost, Trim(Left(sNameServer, iNames - 1)) sNameServer = Mid(sNameServer,iNames + 1) iNames = InStr(sNameServer,",") If iNames = 0 Then DNSlookup sHost, Trim(sNameServer) End If Loop Else DNSlookup sHost, Trim(sNameServer) End If Else CreateEvent 41000,EVENT_TYPE_INFORMATION,"DNS Synthetic Script","No name servers defined." 'WScript.Echo "DNS Synthetic Script","No name servers defined." End If Function DNSlookup(sHost, sNameSvr) sCommand = "%ComSpec% /c nslookup " & sHost & " " & sNameSvr 'WScript.Echo sCommand Set oShellRun = oShell.Exec(sCommand) Proceed = 0 Do Until oShellRun.StdOut.AtEndOfStream sLine = Trim(oShellRun.StdOut.ReadLine) NameTag = LCase(Left(sLine,5)) Select Case NameTag Case "name:" Proceed = 1 End Select If Proceed = 1 Then sData = Trim(Mid(sLine,6)) aLine = Split(sLine, ":") sData = Trim(aLine(1)) Exit Do End If Loop If Proceed = 0 Then CreateEvent 41001,EVENT_TYPE_ERROR,"DNS Synthetic Script v2","Lookup failed for " & sHost & " on DNS Server " & sNameSvr & "." 'WScript.Echo "DNS Synthetic Script","Lookup failed for " & sHost & "on DNS Server " & "." End If If Lcase(TypeName(sData)) <> LCase("Empty") and bLogSuccessEvent Then CreateEvent 41002,EVENT_TYPE_INFORMATION,"DNS Synthetic Script v2","Successfully looked up " & sHost & " on DNS Server " & sNameSvr & "." 'WScript.Echo "DNS Synthetic Script: LogSuccessEvent","Successfully looked up " & sHost & "on DNS Server " & "." End If End Function 'Standard Event creation subroutine Sub CreateEvent(iEventNumber,iEventType,sEventSource,sEventMessage) Set oEvent = ScriptContext.CreateEvent() oEvent.EventNumber = iEventNumber oEvent.EventType = iEventType oEvent.EventSource = sEventSource oEvent.Message = sEventMessage ScriptContext.Submit oEvent End Sub