현재 저는 간단히 확인하는 정말 기본적인 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'
}
나는 그것을 구체화하고 싶다:
- 지속적으로 네트워크 변경 사항을 모니터링하고 이에 대응하여 작업을 수행합니다.
- VPN이 실행될 때까지 지정되지 않은 네트워크에 있는 경우 모든 네트워크 액세스를 차단합니다.
하지만 내 Google-fu는 위의 사항을 수행할 방법을 찾지 못했습니다. 이를 달성할 수 있는 조언(PS용 네트워킹 라이브러리 등)이 있으면 매우 환영할 것입니다.
답변1
나는 당신이 이것을 할 수 있는 두 가지 방법을 봅니다.
하나는 PowerShell 스크립트를 지속적으로 실행하므로 N초마다 루프에서 변경된 네트워크 상태를 확인합니다(유휴 상태인 경우 sleep 명령 사용).
또 다른 더 좋은 방법은 Windows 작업 스케줄러 이벤트에서 스크립트를 시작하는 것입니다. 예를 들어 사용자가 로그온하거나 컴퓨터가 시작될 때 검사를 트리거할 수 있습니다. 또한 사용할 수 있는 네트워크 관련 이벤트가 포함될 수 있는 시스템 이벤트 로그의 이벤트를 사용하여 특정 트리거를 정의할 수도 있습니다. (저는 네트워크 관련 작업에 이것을 사용하지 않았으므로 직접 확인해야 합니다.) 올바른 트리거를 사용하면 네트워크 상태가 변경될 때만 스크립트가 실행되도록 할 수 있습니다.
도움이 되었기를 바랍니다.