На данный момент я создал действительно базовый сценарий 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

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

1 ответ1

0

Я вижу 2 способа сделать это.

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .