Netstat con WMI e VBScript
Domanda
Sto lavorando su un progetto in cui ho bisogno di modificare uno script utilizzato per la documentazione di rete.Lo script corrente che usiamo è una versione modificata di Sydi, trovato qui .Quello che vorrei fare è aggiungere a questo script la possibilità di eseguire a netstat -an e averlo restituito con il resto del report.Ero curioso se qualcuno ha usato WMI e VBScript per restituire le informazioni di Netstat e come potrebbe essere in grado di essere incorporato in questo script.
Nota: non sto cercando di promuovere un prodotto e non sono affiliato con il progetto SYDI.
Soluzione
È possibile eseguire Netstat e acquisire il risultato come lo script qui sotto, ma molte informazioni sono disponibili anche da ActiveX ma dovrei sapere quali informazioni hai bisogno esattamente.
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
.
Modifica: in base al commento di op qui una versione semplificata
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
.