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:
- monitore constantemente as mudanças na rede e faça coisas em resposta
- 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.