Du skal pipe outputtet fra nslookup ud i en temporær fil: WshShell.Run ("nslookup -type=mx " & fstr & " > nsout.tmp",1,true)
Og så læse i nsout.tmp fra vbscriptet. Læs fx linie for linie og lav en InStr efter domænenavnet (fstr), dernæst en InStr efter MX for at sikre at det er en MX linie du har fat i, og så noget Split med "=" som separator. Skriv hvis du ikke kan komme videre derfra.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, file, fstr, strNslookup Set fso = CreateObject("Scripting.FileSystemObject") Set WshShell = CreateObject("WScript.Shell") Set inFile = fso.OpenTextFile("dns.txt", ForReading) Set outFile = fso.OpenTextFile("output.txt", ForAppending)
Do While Not inFile.AtEndOfStream fstr = inFile.ReadLine 'MsgBox fstr WshShell.Run ("nslookup -type=mx " & fstr & ". > nsout.tmp",1,true) 'outFile.WriteLine strNslookup Loop
Det giver mig følgende fejl: Windows Script Host Script: C:\dns.vbs Line: 13 Char: 69 Error: Cannot use parentheses when calling a sub Code: 800A0414 Source: Microsoft VBscript compilation error
Det virker fint hvis man ikke piper over i en fil - på min sløve pc kan jeg lige nå at se dos-vinduet med outputtet fra nslookup. Lige så snart jeg prøver at pipe over i nsout.tmp kommer der en syntaxmeddelelse i stedet for et resultat.
Som skrevet, det virker fint hvis man gør det "manuelt". Måske det har noget at gøre med den måde WSH kalder nslookup på.
Here you go. Det er ikke super stabilt, idet svaret fra nslookup er lidt svingende. Prøv at justere pausen i WScript.Sleep linien og se hvordan der går.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, file, fstr, strNslookup Set fso = CreateObject("Scripting.FileSystemObject") Set WshShell = CreateObject("WScript.Shell") Set inFile = fso.OpenTextFile("dns.txt", ForReading) Set outFile = fso.OpenTextFile("output.txt", ForAppending)
Do While Not inFile.AtEndOfStream fstr = inFile.ReadLine WshShell.Run "%ComSpec% /c nslookup -type=mx " & fstr & "> c:\nsout.tmp", 0, True WScript.Sleep 1000 Set nsFile = fso.OpenTextFile("c:\nsout.tmp", ForReading) Do While Not nsFile.AtEndOfStream sLine = nsFile.ReadLine If InStr(sLine, fstr) > 0 And InStr(sLine, "MX") > 0 Then aLine = Split(sLine, "=") aPriority = Split(aLine(1), ",") sPriority = Trim(aPriority(0)) outFile.WriteLine fstr & "," & Trim(aLine(2)) & "," & sPriority End If Loop nsFile.Close Loop
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.