Script do PowerShell para monitorar e responder constantemente às alterações na rede

0

No momento, criei um script PS muito básico que simplesmente verifica a conexão padrão e conecta-se ao VPN se o padrão não for o especificado no 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'
}

Eu quero detalhar:

  1. monitorar constantemente as alterações na rede e fazer as coisas em resposta
  2. bloqueia qualquer acesso à rede se estiver em uma rede não especificada até que a VPN esteja em execução

Mas o meu Google-fu não me encontrou nenhuma maneira de deixar os pontos acima. Quaisquer indicadores que me permitam realizá-los (alguma biblioteca de rede para PS, talvez?) Seriam muito bem-vindos.

    
por Oxwivi 13.10.2015 / 10:36

1 resposta

0

Eu vejo 2 maneiras de fazer isso.

Um está executando um script do PowerShell continuamente, portanto, você verifica as condições de rede alteradas em um loop a cada N segundos (usando o comando sleep para inativo).

Outro e provavelmente melhor é ter sua inicialização de script dos eventos do Agendador de Tarefas do Windows. Você pode, por exemplo, disparar verificações quando o usuário fizer logon ou a máquina inicializar. Você também pode definir acionadores específicos usando eventos do log de eventos do sistema, que podem conter eventos relacionados à rede que podem ser usados (não usei isso para coisas relacionadas à rede, por isso, preciso verificar a mim mesmo). Ao usar os gatilhos certos, você pode fazer com que seu script seja executado somente quando as condições da rede mudarem.

Espero que isso ajude.

    
por 27.10.2015 / 12:37