Script de PowerShell para monitorear y responder constantemente a los cambios de la red

Script de PowerShell para monitorear y responder constantemente a los cambios de la red

Por el momento, he creado un script PS realmente básico que simplemente verifica elconexión predeterminaday se conecta a la VPN si el valor predeterminado no es el especificado en el script:

$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'
}

Quiero desarrollarlo para:

  1. monitorear constantemente los cambios en la red y hacer cosas en respuesta
  2. bloquear cualquier acceso a la red si está en una red no especificada hasta que la VPN se esté ejecutando

Pero mi Google-fu no encontró ninguna manera de dejar de hacer los puntos anteriores. Cualquier sugerencia que me permita lograrlos (¿alguna biblioteca de redes para PS, tal vez?) sería muy bienvenida.

Respuesta1

Veo 2 formas en que podrías hacer esto.

Uno ejecuta un script de PowerShell continuamente, por lo que verifica si hay cambios en las condiciones de la red en un bucle cada N segundos (usando el comando de suspensión para estar inactivo).

Otra opción, y probablemente mejor, es hacer que el script se inicie desde los eventos del Programador de tareas de Windows. Por ejemplo, puede activar comprobaciones cuando el usuario inicia sesión o se inicia la máquina. También puede definir desencadenadores específicos usando eventos del registro de eventos del sistema, que pueden contener eventos relacionados con la red que puede usar (no he usado esto para cosas relacionadas con la red, por lo que tendría que verificarlo yo mismo). Al utilizar los activadores correctos, es posible que pueda ejecutar su secuencia de comandos solo cuando cambien las condiciones de la red.

Espero que esto ayude.

información relacionada