Script do PowerShell para monitorar e responder constantemente às mudanças na rede

Script do PowerShell para monitorar e responder constantemente às mudanças na rede

No momento, criei um script PS muito básico que simplesmente verifica oconexão padrãoe se conecta à 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 isso para:

  1. monitore constantemente as mudanças na rede e faça coisas em resposta
  2. bloquear qualquer acesso à rede se estiver em uma rede não especificada até que a VPN esteja em execução

Mas meu Google-fu não me encontrou nenhuma maneira de deixar fazer os pontos acima. Qualquer indicação para me permitir realizá-los (alguma biblioteca de rede para PS, talvez?) Seria muito bem-vinda.

Responder1

Vejo duas maneiras de fazer isso.

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

Outra e provavelmente melhor é iniciar o script a partir de eventos do Agendador de Tarefas do Windows. Você pode, por exemplo, acionar verificações quando o usuário faz logon ou a máquina é inicializada. Você também pode definir gatilhos específicos usando eventos do log de eventos do sistema, que podem conter eventos relacionados à rede que você pode usar (não usei isso para coisas relacionadas à rede, então teria que verificar sozinho). Ao usar os gatilhos corretos, você poderá executar seu script somente quando as condições da rede mudarem.

Espero que isto ajude.

informação relacionada