Die Arbeit zuhause (auch schick benannt als “New Work” oder mit einem eher antiken Ausdruck “Home Office”) setzt oft einen VPN-Zugang voraus. Alles kein Hexenwerk mehr. Nervig aber: Moderne Rechner wechseln oft in einen Energiesparmodus, und die meisten VPN-Verbindungen werden dabei getrennt. Da das bei mir auch so war, hab ich mir eine Abhilfe gebastelt.
Mein Rechner verbindet sich über die Windows-eigene Funktion mit dem VPN. Das bildet dein einen Teil der Lösung, denn diese Funktion kann man über das Programm “rasdial.exe” über die Kommandozeile bzw. in einem Skript steuern. Der andere Teil der Lösung: Ich möchte, dass die VPN-Verbindung automatisch neu hergestellt wird, falls sie nach dem Aufwachen aus dem Sparmodus nicht mehr da ist.
Das Skript
Den Großteil der Logik habe ich in ein Skript gepackt – und zwar in ein herkömmliches Batch-Skript. Das lässt sich in der Windows-Aufgabenplanung leichter aufrufen als ein PowerShell-Skript. Und abgesehen davon, ist das Skript so simpel, dass die PowerShell auch kaum Vorteile gehabt hätte.
@ECHO OFF
SET VPN=Mein VPN
SET DC=%logonserver:~2%
SET Logfile=%0\..\Connect-VPN-Log.txt
ECHO %Date%, %time%: Start>>%Logfile%
RASDIAL | FIND /i "%VPN%" && GOTO :eof
PING -n 1 %DC% | FIND /i "bytes=" && GOTO :eof
ECHO Verbinde VPN ...>>%Logfile%
RASDIAL "%VPN%" && ECHO Verbunden>>%Logfile%
Die beiden ECHO-Zeilen dienen nur einem simplen Logging, mit dem ich geprüft habe, ob der ganze Aufbau tut, was er soll (tut er). Den eigentlichen Witz stellen vier Zeilen her:
- Zeile 3 fragt den Namen des Logonservers ab. Den brauchen wir gleich.
- Zeile 6 prüft, ob das VPN schon verbunden ist. Falls ja, gibt es nichts zu tun.
- Zeile 7 versucht, eine Antwort vom Logonserver zu bekommen. Wenn dieser erreichbar ist, muss eine Verbindung ins Firmennetz bestehen – auch dann brauchen wir nichts weiter zu tun, der Logik nach muss sich der Rechner dann im Firmen-LAN befinden.
- Zeile 9 kommt nur ins Spiel, wenn beide Prüfungen negativ waren. Sie stellt die Verbindung zum VPN her.
Die Voraussetzung, damit das so funktioniert: Das VPN ist mit Anmeldung bereits eingerichtet. In meinem Beispiel heßt es “Mein VPN”. Den Namen erhält man, indem man in ein CMD-Fenster “rasdial” eingibt, während das VPN aktiv ist. Weitere Voraussetzung: Der Rechner ist Mitglied der Firmen-Domäne und war mindestens einmal dort angemeldet. (Ist Letzteres nicht der Fall, lässt man Zeile 7 mit dem Ping einfach weg.)
Der Taskplaner
Man könnte dieses Skript einfach alle paar Minuten laufen lassen. Es geht aber noch “eins pfiffiger”: Da die VPN-Verbindung (in meinem Fall) abbricht, wenn der Computer in den Energiesparmodus geht, brauchen wir das Skript nur auszuführen, wenn er wieder aufwacht. Hier hilft die Windows-Ereignisanzeige.
Bei mir gibt das Ereignis 507 aus der Quelle “Kernel-Power” ausreichend genau an, wenn der Computer aufgewacht ist. Ich suche mir also in der Ereignisanzeige ein solches Event und hänge eine Aufgabe dran:
Die Aufgabe ist sehr simpel. Sie soll ein “Programm starten”, und zwar mein Batch:
Das ist auch schon alles.
Kurzlink zu diesem Artikel:
http://faq-o-matic.net/?p=8756