Public/Disconnect-NSPFortinetSupport.ps1
|
function Disconnect-NSPFortinetSupport { <# .SYNOPSIS Forgets the Fortinet support portal session and closes the browser window Connect-NSPFortinetSupport opened. .DESCRIPTION The browser profile keeps its SSO login, so the next Connect-NSPFortinetSupport usually needs no typing. Use -KeepBrowserOpen to leave the window open. .PARAMETER KeepBrowserOpen Only forget the session; leave the browser window open. .EXAMPLE Disconnect-NSPFortinetSupport #> [CmdletBinding()] param([switch]$KeepBrowserOpen) $session = $script:NSPFortinetSupportSession $script:NSPFortinetSupportSession = $null if ($KeepBrowserOpen -or -not $session -or -not $session.Port) { return } try { $version = Invoke-RestMethod -Uri "http://127.0.0.1:$($session.Port)/json/version" -TimeoutSec 2 -UseBasicParsing -ErrorAction Stop $socket = [System.Net.WebSockets.ClientWebSocket]::new() $none = [Threading.CancellationToken]::None $socket.ConnectAsync([uri]$version.webSocketDebuggerUrl, $none).GetAwaiter().GetResult() $bytes = [Text.Encoding]::UTF8.GetBytes('{"id":1,"method":"Browser.close","params":{}}') $socket.SendAsync([ArraySegment[byte]]::new($bytes), [System.Net.WebSockets.WebSocketMessageType]::Text, $true, $none).GetAwaiter().GetResult() $socket.Dispose() } catch { Write-Verbose "The browser was already closed: $($_.Exception.Message)" } } |