Mit VB Script Netzwerk Pingen
Salut Zusammen
Ich möchte in meinen netzwerk einen Hostanem Bereich pingen und dabei
alle Geräte die antworten in ein externes Dokument ausgeben.
Bis jetzt habe ich folgendes:
Kann mir jemand weiterhelfen?
Schon mal ein Dankeschön im voraus!
strMachines = "pr1;pr63"
aMachines = split(strMachines, ";")
Dim Fso ,f
For Each machine in aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo("Computer " & machine & " is not reachable")
Else
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fso =Fso.OpenTextFile("C:\hosts.txt")
f.WriteLine"Drucker ist Online"
Set f =fso.OpenTextFile("C:\hosts.txr")
End If
Next
Next
Ich möchte in meinen netzwerk einen Hostanem Bereich pingen und dabei
alle Geräte die antworten in ein externes Dokument ausgeben.
Bis jetzt habe ich folgendes:
Kann mir jemand weiterhelfen?
Schon mal ein Dankeschön im voraus!
strMachines = "pr1;pr63"
aMachines = split(strMachines, ";")
Dim Fso ,f
For Each machine in aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo("Computer " & machine & " is not reachable")
Else
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fso =Fso.OpenTextFile("C:\hosts.txt")
f.WriteLine"Drucker ist Online"
Set f =fso.OpenTextFile("C:\hosts.txr")
End If
Next
Next
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 111759
Url: https://administrator.de/forum/mit-vb-script-netzwerk-pingen-111759.html
Ausgedruckt am: 23.12.2024 um 12:12 Uhr
7 Kommentare
Neuester Kommentar
Hallo itfreak!
Ungetestet würde ich das etwa so machen:
Grüße
bastla
Ungetestet würde ich das etwa so machen:
strMachines = "pr1;pr63"
aMachines = split(strMachines, ";")
Set Fso = CreateObject("Scripting.FileSystemObject")
For Each machine in aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo machine & " is not reachable"
Else
Fso.OpenTextFile("C:\hosts.txt",8,1).WriteLine machine & " ist Online"
End If
Next
Next
bastla
Hallo bastla,
bis auf den unnötigen Split, würde ich es fast genauso machen.
aMachines = Array("pr1", "pr63")
Gruß Dieter
PS. Bei Vasili-VBS-CSV-Konvertierung steht am Ende ein aktuelles VBS
@76109
Grüße
bastla
P.S.: Hab' momentan etwas wenig Zeit ...
bis auf den unnötigen Split ...
Je nach Anzahl der Geräte könntest Du die eine Zeile wieder hereinbringen, wenn Du nicht für jedes Gerät die Anführungszeichen eingeben musst ... ... würde ich es fast genauso machen.
Eigentlich würde ich ja auch nicht so (gemeint ist das Schreiben in der Schleife per "append") machen, sondern die Ausgabezeilen in einer Variable sammeln und dann in einem Rutsch in die Datei schreiben - die "append"-Version hat, dadurch dass sofort geschrieben wird, einen kleinen Sicherheitsvorteil.Grüße
bastla
P.S.: Hab' momentan etwas wenig Zeit ...
Hallo bastla
Könnte dann ja auch so gehen oder wie auch immer:
Alle Wege führen nach Rom oder so ähnlich.
Keine Ahnung, habs nach dem gleichen Prinzip wie im Gruppen/Dupletten-Teil gemacht.
Zumal die Import-Datei für Gruppen/Dupletten laut Vasili in 3-4 Jahren bis zu 10 MB groß werden kann
und die Import-Datei für Gebutrtstage nur Daten für 30 Tage beinhaltet.
Aber da ich ja noch kein ADO-Profi bin, nehme ich selbsverständlich jeden Hinweis dankbar an.
Gruß Dieter
Könnte dann ja auch so gehen oder wie auch immer:
aMachines = Array(WScript.Arguments(0),WScript.Arguments(1)........)
Alle Wege führen nach Rom oder so ähnlich.
in der Schleife per "append") machen
Keine Ahnung, habs nach dem gleichen Prinzip wie im Gruppen/Dupletten-Teil gemacht.
Zumal die Import-Datei für Gruppen/Dupletten laut Vasili in 3-4 Jahren bis zu 10 MB groß werden kann
und die Import-Datei für Gebutrtstage nur Daten für 30 Tage beinhaltet.
Aber da ich ja noch kein ADO-Profi bin, nehme ich selbsverständlich jeden Hinweis dankbar an.
Gruß Dieter
Hallo didi1954!
Dann schon eher unten
Gedacht hatte ich eher an eine größere Anzahl von Geräten, wo die Einsparung der Anführungszeichen (anstelle von 2 je Gerät nur 2 insgesamt) die zusätzliche "Split"-Zeile rechtfertigen könnte.
Die Frage des Rausschreibens hat übrigens mit ADO eigentlich nix zu tun ...
Grüße
bastla
Könnte dann ja auch so gehen oder wie auch immer:
aMachines = Array(WScript.Arguments(0),WScript.Arguments(1)........)
For i = 0 To WScript.Arguments.Count - 1
machine = WScript.Arguments(i)
...
Die Frage des Rausschreibens hat übrigens mit ADO eigentlich nix zu tun ...
Grüße
bastla
Hallo itfreak!
Wenn es fortlaufend nummerierte "pc" sind, etwa so:
Grüße
bastla
Wenn es fortlaufend nummerierte "pc" sind, etwa so:
Set Fso = CreateObject("Scripting.FileSystemObject")
For i = 2 to 60
machine = "pc" & i
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo machine & " is not reachable"
Else
Fso.OpenTextFile("C:\hosts.txt",8,1).WriteLine machine & " ist Online"
End If
Next
Next
bastla