Im Moment habe ich ein wirklich, wirklich einfaches PS-Skript erstellt, das einfach dieStandardverbindungund stellt eine Verbindung zum VPN her, wenn die Standardeinstellung nicht mit der im Skript angegebenen übereinstimmt:
$DefaultNetworkIndex = Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Sort-Object {$_.RouteMetric+(Get-NetIPInterface -AssociatedRoute $_).InterfaceMetric} | Select-Object -First 1 -ExpandProperty InterfaceIndex
$DefaultNetwork = (Get-NetConnectionProfile -InterfaceIndex $DefaultNetworkIndex).Name
if ($DefaultNetwork -ne 'Some Connection Name') {
Invoke-Expression 'rasdial VPN username password /phonebook:rasphone.pbk'
}
Ich möchte es wie folgt konkretisieren:
- Überwachen Sie ständig Netzwerkänderungen und reagieren Sie entsprechend
- Blockieren Sie jeden Netzwerkzugriff, wenn dieser in einem nicht angegebenen Netzwerk erfolgt, bis das VPN ausgeführt wird
Aber mein Google-Fu hat mir keine Möglichkeit gezeigt, die oben genannten Punkte zu erreichen. Ich bin für alle Hinweise dankbar, die mir dabei helfen (vielleicht eine Netzwerkbibliothek für PS?).
Antwort1
Ich sehe zwei Möglichkeiten, wie Sie das tun könnten.
Bei einer davon wird kontinuierlich ein PowerShell-Skript ausgeführt, sodass Sie alle N Sekunden in einer Schleife nach geänderten Netzwerkbedingungen suchen (indem Sie den Befehl „sleep“ zum Leerlaufen verwenden).
Eine andere und wahrscheinlich bessere Möglichkeit besteht darin, Ihr Skript über Ereignisse des Windows-Taskplaners starten zu lassen. Sie können beispielsweise Prüfungen auslösen, wenn sich der Benutzer anmeldet oder der Computer hochfährt. Sie können auch bestimmte Auslöser mithilfe von Ereignissen aus dem Systemereignisprotokoll definieren, das möglicherweise netzwerkbezogene Ereignisse enthält, die Sie verwenden können (ich habe dies nicht für netzwerkbezogene Dinge verwendet, daher müsste ich es selbst prüfen). Durch die Verwendung der richtigen Auslöser können Sie Ihr Skript möglicherweise nur ausführen lassen, wenn sich die Netzwerkbedingungen ändern.
Hoffe das hilft.