diff --git a/Scripts/check-vpn.ps1 b/Scripts/check-vpn.ps1 index f8c15e67..dbd0fe05 100755 --- a/Scripts/check-vpn.ps1 +++ b/Scripts/check-vpn.ps1 @@ -8,19 +8,19 @@ .LINK https://github.com/fleschutz/PowerShell .NOTES - Author: Markus Fleschutz / License: CC0 + Author: Markus Fleschutz | License: CC0 #> try { $FoundOne = $false $Connections = (Get-VPNConnection) foreach($Connection in $Connections) { - & "$PSScriptRoot/give-reply.ps1" "VPN $($Connection.Name) is $($Connection.ConnectionStatus)." + "VPN $($Connection.Name) is $($Connection.ConnectionStatus)." $FoundOne = $true } if (!$FoundOne) { throw "No VPN connection available" } exit 0 # success } catch { - & "$PSScriptRoot/give-reply.ps1" "Sorry: $($Error[0])." + "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" exit 1 } diff --git a/Scripts/connect-vpn.ps1 b/Scripts/connect-vpn.ps1 index 587a3fd9..21da7efd 100644 --- a/Scripts/connect-vpn.ps1 +++ b/Scripts/connect-vpn.ps1 @@ -8,22 +8,22 @@ .LINK https://github.com/fleschutz/PowerShell .NOTES - Author: Markus Fleschutz / License: CC0 + Author: Markus Fleschutz | License: CC0 #> try { $Connections = (Get-VPNConnection) foreach($Connection in $Connections) { - if ($Connection.ConnectionStatus -eq "Disconnected") { - & "$PSScriptRoot/give-reply.ps1" "Connecting to VPN $($Connection.Name)..." - & rasdial.exe "$($Connection.Name)" - if ($lastExitCode -ne "0") { throw "Cannot establish connection" } - & "$PSScriptRoot/give-reply.ps1" "Connected now." - exit 0 # success - } elseif ($Connection.ConnectionStatus -eq "Connected") { throw "Already connected to VPN $($Connection.Name)" } + if ($Connection.ConnectionStatus -eq "Connected") { throw "Already connected to VPN $($Connection.Name)" } + if ($Connection.ConnectionStatus -ne "Disconnected") { continue } + "Connecting to VPN $($Connection.Name)..." + & rasdial.exe "$($Connection.Name)" + if ($lastExitCode -ne "0") { throw "Cannot establish connection" } + "Connected now." + exit 0 # success } throw "No VPN connection available" } catch { - & "$PSScriptRoot/give-reply.ps1" "Sorry: $($Error[0])" + "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" exit 1 } diff --git a/Scripts/disconnect-vpn.ps1 b/Scripts/disconnect-vpn.ps1 new file mode 100644 index 00000000..3e297ec3 --- /dev/null +++ b/Scripts/disconnect-vpn.ps1 @@ -0,0 +1,28 @@ +<# +.SYNOPSIS + Disconnect VPN +.DESCRIPTION + This PowerShell script disconnects the active VPN connection. +.EXAMPLE + PS> ./disconnect-vpn +.LINK + https://github.com/fleschutz/PowerShell +.NOTES + Author: Markus Fleschutz | License: CC0 +#> + +try { + $Connections = (Get-VPNConnection) + foreach($Connection in $Connections) { + if ($Connection.ConnectionStatus -ne "Connected") { continue } + "Disconnecting $($Connection.Name)..." + & rasdial.exe "$($Connection.Name)" /DISCONNECT + if ($lastExitCode -ne "0") { throw "Disconnect failed with exit code $lastExitCode" } + "Disconnected now." + exit 0 # success + } + throw "No VPN connection found." +} catch { + "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" + exit 1 +} \ No newline at end of file diff --git a/Scripts/open-vpn-settings.ps1 b/Scripts/open-vpn-settings.ps1 new file mode 100644 index 00000000..b18af949 --- /dev/null +++ b/Scripts/open-vpn-settings.ps1 @@ -0,0 +1,15 @@ +<# +.SYNOPSIS + Opens the VPN settings +.DESCRIPTION + This PowerShell script launches the VPN settings of Windows. +.EXAMPLE + PS> ./open-vpn-settings +.LINK + https://github.com/fleschutz/PowerShell +.NOTES + Author: Markus Fleschutz | License: CC0 +#> + +Start-Process ms-settings:network-vpn +exit 0 # success