winlin
Goto Top

Vbs Skript auf remote Rechnern ausführen lassen und ergebnis schreiben

Hallo Leute,

ich habe ein VB-Skript welches mir die Netzwerkgeschwindigkeit auf meinem Adminrechner ausliest und mir grafisch ausgibt:
Dim strQuery, strQuery2, objLocator, objWMI, objItem, objItem2, colItems, colItems2, resultString, nicName
strQuery = "SELECT * FROM Win32_PerfFormattedData_Tcpip_NetworkInterface"  
strQuery2 = "SELECT * FROM Win32_NetworkAdapter"  
Set objLocator = CreateObject( "WbemScripting.SWbemLocator" )  
Set objWMI = objLocator.ConnectServer( ".", "root\CIMV2" )  
objWMI.Security_.ImpersonationLevel = 3
Set colItems2 = objWMI.ExecQuery( strQuery2, "WQL", 0 )  
Set colItems = objWMI.ExecQuery( strQuery, "WQL", 0 )  
resultString = ""  
For Each objItem2 In colItems2
 If objItem2.NetConnectionStatus = 2 Then
  nicName = Mid(objItem2.Name, 1, 5)
  resultString = resultString & "Adapter Name : " & objItem2.Name & VbCrLf  
  resultString = resultString & "MAC Address : " & objItem2.MACAddress & VbCrLf  
  For Each objItem In colItems
   If Mid(objItem.Name, 1, 5) = nicName Then
    resultString = resultString & "CurrentBandwidth : " & objItem.CurrentBandwidth & VbCrLf  
   End If
  Next
 End If
Next
Set objLocator = Nothing
Set objWMI = Nothing
Set colItems = Nothing
Set colItems2 = Nothing
WScript.Echo resultString

Wenn ich das Skript in eine Datei umlenken will dann mache ich das mit
cscript netspeed.vbs > result.txt

Das klappt alles wunderbar. Nun möchte ich das ganze auf Remote-Rechnern ausführen lassen mittels psexec und einer Hostliste. Das Ergebnis sollte dann in meiner result-Datei auf meinem lokalen Rechner abgelegt werden. Wenn möglich sollte in der Result-Datei der Hostname und deren Netzwerkverbindung bzw. Geschwindigkeit angezeigt werden. Ich fange mal an, evtl. kann mir einer zur Lösung verhelfen:
psexec -c @C:\hosts.txt C:\netspeed.vbs > result.txt
Das Ergebnis dieses Befehls ist:
Starting C:\networkspeed.vbs on HOSTNAME.....
PsExec could not start networkspeed.vbs on HOSTNAME:
Das System kann die angegebene Datei nicht finden.

Content-Key: 230637

Url: https://administrator.de/contentid/230637

Printed on: April 24, 2024 at 00:04 o'clock

Member: emeriks
emeriks Feb 21, 2014 at 09:48:43 (UTC)
Goto Top
psexec startet den Prozess auf dem Remote Computer. Also muss der Remote Computer auch am gegebenen Pfad die zu startende Datei finden.
In Deinem Beispiel musst Du also vor Aufruf von psexec die Datei "netspeed.vbs" nach "\\{Remote Computer}\C$\netspeed.vbs" kopieren.

E.
Member: winlin
winlin Feb 21, 2014 at 09:59:52 (UTC)
Goto Top
ok und wie sieht dann der Befehl aus wenn ich eine Hostliste verwenden will?
Member: bastla
bastla Feb 21, 2014 at 10:38:05 (UTC)
Goto Top
Hallo winlin!
und wie sieht dann der Befehl aus wenn ich eine Hostliste verwenden will?
Eher nicht mit der Angabe der Liste nach dem -c ...

Grüße
bastla
Member: emeriks
emeriks Feb 21, 2014 at 11:16:21 (UTC)
Goto Top
Du könntest das Script so anpassen, dass Du dem Script den TXT-Pfad als Parameter übergibst, die TXT einliest und dann die Daten gleich mit WMI remote abfragst. Dann kannst Du auch gleich von Script aus in ein Log schreiben und brauchst nicht die Bildschirmausgabe umleiten.

bei --> Set objWMI = objLocator.ConnectServer( ".", "root\CIMV2" )
dann eben --> Set objWMI = objLocator.ConnectServer( "{Remote Computer}", "root\CIMV2" )

E.