Batch oder VBS: Solange Pausieren, bis Ping auf eine bestimmte Adresse erfolgreich ist
Hallo zusammen,
ich suche einen Codeschnipsel entweder für eine Batch- oder für eine VBA-Datei, die eine Schleife solange ausführt, bis eine bestimmte Adresse per Ping erreichbar ist. Konkret möchte ich das in ein beim PC-Start (vor der Anmeldung) auszuführendes Script einbauen, um sicherzustellen, dass der Server erreichbar ist, bevor bei der Anmeldung versucht wird, das servergespeicherte Profil zu laden.
Danke im Voraus,
Sarek \\/_
ich suche einen Codeschnipsel entweder für eine Batch- oder für eine VBA-Datei, die eine Schleife solange ausführt, bis eine bestimmte Adresse per Ping erreichbar ist. Konkret möchte ich das in ein beim PC-Start (vor der Anmeldung) auszuführendes Script einbauen, um sicherzustellen, dass der Server erreichbar ist, bevor bei der Anmeldung versucht wird, das servergespeicherte Profil zu laden.
Danke im Voraus,
Sarek \\/_
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 282601
Url: https://administrator.de/contentid/282601
Ausgedruckt am: 25.11.2024 um 21:11 Uhr
15 Kommentare
Neuester Kommentar
Hi,
mit Laserkanonen auf Klingonen Spatzen schießen
Warum nicht einfach per GPO einstellen "Immer auf das Netzwerk warten"?
GPO: Bei Anmeldung auf Netzwerk warten
E.
mit Laserkanonen auf Klingonen Spatzen schießen
Warum nicht einfach per GPO einstellen "Immer auf das Netzwerk warten"?
GPO: Bei Anmeldung auf Netzwerk warten
E.
Was soll denn Dein Script machen?
Kollege emeriks hat schon Recht mit seiner Möglichkeit.
Dabei bleibt der Client aber im Ganzen stehen, bis eine bestimmte Zeit zur Richtlinienverarbeitung abgelaufen ist.
Wenn Du das Script als Login_Script hinterlegst, kannst Du das so bauen, dass der Rechner dennoch weiter in betriebsbereiten Zustand geht, und alles andere per Script nachholt, wenn der gewünschte Server online ist.
Kollege emeriks hat schon Recht mit seiner Möglichkeit.
Dabei bleibt der Client aber im Ganzen stehen, bis eine bestimmte Zeit zur Richtlinienverarbeitung abgelaufen ist.
Wenn Du das Script als Login_Script hinterlegst, kannst Du das so bauen, dass der Rechner dennoch weiter in betriebsbereiten Zustand geht, und alles andere per Script nachholt, wenn der gewünschte Server online ist.
Zitat von @emeriks:
Warum nicht einfach per GPO einstellen "Immer auf das Netzwerk warten"?
GPO: Bei Anmeldung auf Netzwerk warten
Warum nicht einfach per GPO einstellen "Immer auf das Netzwerk warten"?
GPO: Bei Anmeldung auf Netzwerk warten
Vielleicht weil das nicht richtig funktioniert. Hier ist auch erklärt, warum nicht.
Ich hatte das Problem auch schon mal .. also an den Script wäre ich auch interessiert
Dabei bleibt der Client aber im Ganzen stehen, bis eine bestimmte Zeit zur Richtlinienverarbeitung abgelaufen ist.
Stimmt so nicht. Der Client wartet nur mit seiner eigenen GPO-Verarbeitung und erlaubt Anmeldungen erst, wenn das Netz steht. Wobei es auch hier sicher ein max. Timeout gibt.Weil das nicht richtig funktioniert. Hier ist auch erklärt, warum nicht.
Auch diese Aussage ist - absolut getroffen - falsch. Es funktioneirt tadellos in vielen unserer Umgebungen und das schon seit Jahren bei unterschiedlichen Betriebssystemen.
Na ja, wenn man richtig liest ...
Es funktioniert defacto.
Du schreibst "bis eine bestimmte Adresse per Ping erreichbar ist". Dies stellt genauso wenig eine Garantie dar, wie das in diesem MCSEboard Link beschrieben ist. Wenn, dann müsstest Du das AD abfragen, ob funktional, und erst dann weitermachen. Sonst gewinnst Du nix.
Es funktioniert defacto.
Du schreibst "bis eine bestimmte Adresse per Ping erreichbar ist". Dies stellt genauso wenig eine Garantie dar, wie das in diesem MCSEboard Link beschrieben ist. Wenn, dann müsstest Du das AD abfragen, ob funktional, und erst dann weitermachen. Sonst gewinnst Du nix.
Also noch einmal die Frage, vor allem an unsere Scripter: Wie müsste ein solches Script aussehen? Statt hier umfangreich zu begründen, dass das keine gute Lösung ist, lasst es mich doch einfach mal testen. Manchmal ist eine allgemein schlechte Lösung (weil sie z.B. die Performance drückt) in bestimmten Situationen (wenn es z.B. gar nicht auf Performance ankommt) doch ganz ok.
Wie schon geschrieben. Stell auf Synchrone Scriptabarbeitung um. Dann verpasse dem Computer dieses Script als Startup Script. Er sollte nicht weitermachen (u.a. Login anbieten), bis das Script beendet ist.
Vbscript Ping Beispiel
Wenn Du diese Funktion übernimmst dann
do
Wscript.Sleep 100
loop until Ping
Wie gesagt: Laßt es mich doch einfach probieren. Dazu müsste ich aber erst mal wissen, wie das Script an sich aussehen müsste.
Da habe ich doch son was geschrieben?Übrigens: Mit
meinst Du Einstellung Computerkonfiguration/Administrative Vorlagen/System/Skripts/Startskripts asynchron ausführen ?
Korrekt. Das müsstest Du dann deaktivieren.auf synchrone Scriptbearbeitung im Vordergrund umschalten
meinst Du Einstellung Computerkonfiguration/Administrative Vorlagen/System/Skripts/Startskripts asynchron ausführen ?
do
Wscript.Sleep 100
loop until Ping("hostname oder ipadresse")
Wscript.Quit
Function Ping( myHostName )
' This function returns True if the specified host could be pinged.
' myHostName can be a computer name or IP address.
' The Win32_PingStatus class used in this function requires Windows XP or later.
' This function is based on the TestPing function in a sample script by Don Jones
' http://www.scriptinganswers.com/vault/computer%20management/default.asp#activedirectoryquickworkstationinventorytxt
' Standard housekeeping
Dim colPingResults, objPingResult, strQuery
' Define the WMI query
strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & myHostName & "'"
' Run the WMI query
Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )
' Translate the query results to either True or False
For Each objPingResult In colPingResults
If Not IsObject( objPingResult ) Then
Ping = False
ElseIf objPingResult.StatusCode = 0 Then
Ping = True
exit function
Else
Ping = False
End If
Next
Set colPingResults = Nothing
End Function
Powershell:
Gruß jodel32
while(!(Test-Connection 'www.google.de' -quiet -count 1)){sleep(1)}
Gruß jodel32