2012-05-22 64 views
1

我正在開發一個項目,我需要修改用於網絡文檔的腳本。我們使用的當前腳本是SYDI的修改版本,found here。我想要做的就是在這個腳本中添加一個執行netstat -an的能力,並讓它與報告的其餘部分一起返回。我很好奇是否有人使用WMI和VBScript來返回netstat信息,以及它如何能夠被合併到這個腳本中。使用WMI和VBScript的Netstat

注意:我不是想要宣傳產品,而且我不隸屬於SYDI項目。

回答

3

你可以運行netstat並像下面的腳本那樣捕獲結果,但是activeX中也有很多信息,但是我需要知道你需要的信息。

set sh = CreateObject("Wscript.Shell") 
set Connections = CreateObject("Scripting.Dictionary") 

call Main() 

Function Main() 
    call GetConnections() 
    call ProcessConnections() 
End Function 

Function GetConnections() 
    i = 0 
    set shExec = sh.Exec("netstat -f") 

    Do While Not shExec.StdOut.AtEndOfStream 
     Line = shExec.StdOut.ReadLine() 
     If Instr(Line, "TCP") <> 0 Then 
      Set Connection = New NetworkConnection 
      Connection.ParseText(Line) 
      call Connections.Add(i, Connection) 
      i = i + 1 
     End If 
    Loop 
End Function 

Function ProcessConnections() 
    For Each ConnectionID in Connections.Keys 
     wscript.echo ConnectionID & Connections(ConnectionID).RemoteIP 
    Next 
End Function 

Class NetworkConnection 
    Public Protocol 
    Public LocalIP 
    Public LocalPort 
    Public RemoteIP 
    Public RemotePort 

    Public Sub ParseText(Line) 
     dim i 

     For i = 5 to 2 Step -1 
      Line = Replace(Line, String(i, " "), " ") 
     Next 

     Line = Replace(Line, ":", " ") 
     Line = Right(Line, Len(Line) - 1) 
     Line = Split(Line, " ") 

     Protocol = Line(0) 
     LocalIP = Line(1) 
     LocalPort = Line(2) 
     RemoteIP = Line(3) 
     RemotePort = Line(4) 

    End Sub 

    Private Sub Class_Initialize 
     'MsgBox "Initialized NetworkConnection object" 
    End Sub 

End Class 

編輯:基於OP這裏的評論簡化版

set sh = CreateObject("Wscript.Shell") 
call GetConnections() 

Function GetConnections() 
    i = 0 
    set shExec = sh.Exec("netstat -an") 
    Do While Not shExec.StdOut.AtEndOfStream 
     Wscript.Echo shExec.StdOut.ReadLine() 
    Loop 
End Function 
+0

我想_netstat -an_命令的完整輸出。也就是說,我希望看到協議,本地地址,外部地址和狀態的完整列表。理想情況下,這可以輸出到類似於在命令行運行命令時可以看到的表格中。感謝您的想法和示例以及您的幫助。 – John

+0

在這種情況下,這很簡單,我編輯我的答案 – peter