2017-07-06 15 views
0

我用下面的代碼獲得一個nslookup命令的輸出:充分利用CMD.EXE命令的完整輸出在VBScript

Dim oShell 
Dim strCmdOutput 

If DO_DEBUG="n" Then On Error Resume Next 

Set oShell = WScript.CreateObject ("WScript.Shell") 
Set shellOut = oShell.Exec("cmd.exe /C nslookup www.bbc.co.uk 8.8.8.8") 
strCmdOutput = shellOut.StdOut.ReadAll() 

WScript.Scho strCmdOutput 

我進入strCmdOutput輸出從輸出我得到不同手動運行該命令。

例如,手動我得到:

 
Server: google-public-dns-a.google.com 
Address: 8.8.8.8 

Non-authoritative answer: 
Name: www.bbc.net.uk 
Addresses: 212.58.244.71 
     212.58.246.95 
Aliases: www.bbc.co.uk 

而且使用腳本,我得到:

 
Server: google-public-dns-a.google.com 
Address: 8.8.8.8 

Name: www.bbc.net.uk 
Addresses: 212.58.244.69 
     212.58.246.93 
Aliases: www.bbc.co.uk 

輸出變化很大,有沒有一種方法可以讓我得到的輸出相匹配?

+0

只是爲了高興的區別,一個有「非權威答案:」而另一個不是 – Oliver

回答

4

將行Non-authoritative answer:寫入STDERR,因此您需要將其合併到STDOUT以獲取整個輸出。

Set shellOut = oShell.Exec("cmd.exe /C nslookup www.bbc.co.uk 8.8.8.8") 

更改爲

Set shellOut = oShell.Exec("cmd.exe /C nslookup www.bbc.co.uk 8.8.8.8 2>&1") 

,問題就會消失。

+0

太好了,謝謝。 – Oliver