Скрипт PowerShell для постоянного мониторинга и реагирования на изменения в сети

Скрипт PowerShell для постоянного мониторинга и реагирования на изменения в сети

На данный момент я создал очень, очень простой скрипт PS, который просто проверяетсоединение по умолчаниюи подключается к VPN, если значение по умолчанию не совпадает с указанным в скрипте:

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

Я хочу это конкретизировать:

  1. постоянно отслеживайте изменения в сети и предпринимайте ответные действия
  2. блокировать любой сетевой доступ, если он находится в неуказанной сети, пока VPN не будет запущен

Но мой Google-fu не нашел мне способа сделать вышеперечисленные пункты. Любые указания, которые позволят мне их выполнить (какая-нибудь сетевая библиотека для PS, может быть?) были бы очень приветствуются.

решение1

Я вижу два способа, как это можно сделать.

Один из них — непрерывный запуск скрипта PowerShell, в результате чего вы проверяете изменение условий сети в цикле каждые N секунд (используя команду sleep для перехода в режим ожидания).

Другой и, возможно, лучший способ — запуск скрипта из событий планировщика заданий Windows. Например, вы можете запускать проверки при входе пользователя в систему или запуске машины. Вы также можете определить определенные триггеры, используя события из системного журнала событий, которые могут содержать сетевые события, которые вы можете использовать (я не использовал это для сетевых вещей, поэтому мне придется проверить самому). Используя правильные триггеры, вы можете запустить свой скрипт только при изменении сетевых условий.

Надеюсь это поможет.

Связанный контент