Search notes:

connect-SonicWallTunnel.ps1

connect-SonicWallTunnel.ps1 is a PowerShell script that uses the WinGUI module to estabish a VPN tunnel with SonicWall without manual intervention.
[CmdletBinding()]
param (
   [string] $password
)

& "C:\Program Files\SonicWall\Modern Connect Tunnel\SnwlConnect.exe"

while ( ($hwndConnectTunnel = find-window -windowTitle 'Connect Tunnel') -eq 0 ) {
   write-verbose 'no window with title Connect Tunnel found, sleeping for a second'
   start-sleep 1
}
write-verbose "hwndConnectTunnel = $hwndConnectTunnel"

$connectStatus  = ''
$hwndConnect    = 0
$hwndDisconnect = 0

$callback = {

   param (
      [IntPtr] $hWnd,
      [IntPtr] $unused_in_this_example
   )

   $winTxt    = get-windowText      $hWnd

   if     ($winTxt -in 'Connected', 'Disconnected', 'Reconnecting...', 'Disconnecting...', 'Detecting Network...') {$script:ConnectStatus  = $winTxt}
   elseif ($winTxt -eq '&Connect'                                                                                ) {$script:hwndConnect    = $hwnd  }
   elseif ($winTxt -eq '&Disconnect'                                                                             ) {$script:hwndDisconnect = $hwnd  }

   return $true
}

enum-childWindows $callback $hwndConnectTunnel

write-verbose "hwndConnect    = $hwndConnect"
write-verbose "hwndDisconnect = $hwndDisconnect"
write-verbose "connectStatus  = $connectStatus"
write-verbose ""

$BM_CLICK = 0x00F5

if ($connectStatus -eq 'Disconnected') {

   if ($hwndConnect -eq 0) {
      write-host "expected hwndConnect to be non-zero"
      return
   }
   write-verbose "sending BM_CLICK to hwndConnect"
   $null = send-windowMessage $hwndConnect $BM_CLICK 0 0

   write-verbose 'sending password in two seconds'
   start-sleep 2
   $sh = new-object -com "Wscript.Shell"
   $sh.sendkeys($password)
   $sh.sendkeys('{enter}')

   while (is-windowVisible $hwndConnectTunnel ) {
      write-verbose "connect tunnel is visible, sleeping for a second"
      start-sleep 1
   }
}

if ($connectStatus -eq 'Reconnecting...') {

   if ($hwndDisconnect -eq 0) {
      write-host "expected hwndDisconnect to be non-zero"
      return
   }
   write-verbose "sending BM_CLICK to hwndDisconnect"
   $null = send-windowMessage $hwndDisconnect $BM_CLICK 0 0
}
Github repository scripts-and-utilities, path: /connect-SonicWallTunnel.ps1

See also

connect_Cisco_AnyConnect.pl

Index

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php:51 Stack trace: #0 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(51): PDOStatement->execute(Array) #1 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(66): id_of(Object(PDO), 'uri', '/notes/Windows/...') #2 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(30): insert_webrequest_('/notes/Windows/...', 1759390776, '216.73.216.42', 'Mozilla/5.0 App...', NULL) #3 /home/httpd/vhosts/renenyffenegger.ch/httpsdocs/notes/Windows/PowerShell/modules/personal/WinGUI/connect-SonicWallTunnel_ps1(112): insert_webrequest() #4 {main} thrown in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php on line 51