{"id":238,"date":"2020-10-02T22:16:25","date_gmt":"2020-10-02T21:16:25","guid":{"rendered":"http:\/\/localhost\/blog\/?p=238"},"modified":"2022-06-03T20:08:19","modified_gmt":"2022-06-03T19:08:19","slug":"rras-server-stats-powershell-script-by-harmik-batth","status":"publish","type":"post","link":"https:\/\/www.davidirwin.co.uk\/index.php\/2020\/10\/02\/rras-server-stats-powershell-script-by-harmik-batth\/","title":{"rendered":"RRAS Server Stats &#8211; Powershell Script by Harmik Batth"},"content":{"rendered":"<p>A great Powershell script by Harmik to show Stats and connections to RRAS.<\/p>\r\n<p>http:\/\/harmikbatth.com\/2020\/05\/27\/rras-always-on-vpn-stats-remotely\/<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-73\" src=\"https:\/\/www.davidirwin.co.uk\/wp-content\/uploads\/2022\/03\/RRAS-Options-1024x416-1.png\" alt=\"\" width=\"640\" height=\"260\" \/><\/p>\r\n<pre class=\"wp-block-code\">\n\n<div class=\"codecolorer-container text default\" style=\"overflow:auto;white-space:nowrap;width:435px;height:300px;\"><div class=\"text codecolorer\">#############################################################################################<br \/>\n#<br \/>\n# Script: Get-AlwaysOnVPN-Stats-GUI.ps1<br \/>\n#<br \/>\n# Author: Harmik Singh Batth<br \/>\n# Website: www.harmikbatth.com<br \/>\n#<br \/>\n# Date: 01\/05\/2020<br \/>\n#<br \/>\n# About: This script is designed to pull data from different RRAS Servers and present one view.<br \/>\n#<br \/>\n# Usage: To use this script, execute the script and configure VPN Servers initially. <br \/>\n# Next time, you should be able to connect and present data from all configured RRAS Servers.<br \/>\n#<br \/>\n# Requirements:<br \/>\n# Requires -&nbsp; &nbsp; PSRemoting must be enabled on RRAS Server<br \/>\n# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; To Configure - Enable-PSRemoting -Force<br \/>\n# Requires -&nbsp; &nbsp; RRAS Servers should be on Trusted List on WSMAN<br \/>\n# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; To Check - &quot;Get-Item WSMan:\\localhost\\client\\trustedhosts<br \/>\n# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; To Configure - Set-Item WSMan:\\localhost\\Client\\TrustedHosts -Value &quot;ServerName01, ServerName02, ServerName03, ServerName04&quot; -Force<br \/>\n#<br \/>\n# Versions:<br \/>\n# 01\/05\/2020 - 1.0 - Initial release creation by Harmik Singh Batth<br \/>\n# 13\/05\/2020 - 1.1 - Added Export Button, which will allow Export of Data to CSV files<br \/>\n#<br \/>\n#############################################################################################<br \/>\n<br \/>\nBegin {<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; cls<br \/>\n<br \/>\n&nbsp; &nbsp; #region Calculated Variables<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # &nbsp; Different OS versions use different sizes of windows, these corrections allow the form to be correctly sized in any OS.<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # &nbsp; Switch -wildcard doesn't work in Powershell 2 so OS version has extra sections removed.<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OSVer = ((Get-WmiObject Win32_OperatingSystem).Version).split(&quot;.&quot;)[0..1] -join &quot;.&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Switch ($OSVer)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 6.3 {$FormHorizPadding = 21; $FormVertPadding = 43} &nbsp; &nbsp; #Windows 8.1 &amp;amp; Windows Server 2012 R2<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 6.2 {$FormHorizPadding = 21; $FormVertPadding = 43} &nbsp; &nbsp; #Windows 8 &amp;amp; Windows Server 2012<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 6.1 {$FormHorizPadding = 10; $FormVertPadding = 29} &nbsp; &nbsp; #Windows 7 &amp;amp; Windows Server 2008 R2<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 6.0 {$FormHorizPadding = 10; $FormVertPadding = 29} &nbsp; &nbsp; #Windows Vista &amp;amp; Windows Server 2008<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5.2 {$FormHorizPadding = 21; $FormVertPadding = 43} &nbsp; &nbsp; #Windows Server 2003<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5.1 {$FormHorizPadding = 21; $FormVertPadding = 43} &nbsp; &nbsp; #Windows XP<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #Check for Configuration Files<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $UserLocalAppData = $env:LOCALAPPDATA<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ConfigurationFolder = &quot;$UserLocalAppData\\RRASReporting&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ConfigurationFile = &quot;$ConfigurationFolder\\RRAS-Configuration.txt&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ExportFolder = &quot;$UserLocalAppData\\RRASReporting&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ExportFile = &quot;$ExportFolder\\Export.csv&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Global:ConfigurationUploaded = &quot;&quot;&nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Script:TabIndex = 0<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; #endregion Calculated Variables<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; # Assemblies<br \/>\n&nbsp; &nbsp; try {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Add-Type -AssemblyName &quot;System.Drawing&quot; -ErrorAction Stop<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Add-Type -AssemblyName &quot;System.Windows.Forms&quot; -ErrorAction Stop<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; catch [System.UnauthorizedAccessException] {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Write-Warning -Message &quot;Access denied when attempting to load required assemblies&quot; ; <br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; catch [System.Exception] {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Write-Warning -Message &quot;Unable to load required assemblies. Error message: $($_.Exception.Message) Line: $($_.InvocationInfo.ScriptLineNumber)&quot; ; <br \/>\n&nbsp; &nbsp; }<br \/>\n}<br \/>\nProcess <br \/>\n{<br \/>\n<br \/>\n#region Functions<br \/>\n<br \/>\n&nbsp; &nbsp; # Functions <br \/>\n&nbsp; &nbsp; function Load-Form { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.Controls.AddRange(@(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $LabelDateStart,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $LabelDateEnd,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #$LabelUserName,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputBox,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBLog,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBResults,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBRRASServersSelect, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBUser,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBOptions, &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBActions,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBSettings,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBConfigActions,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASServer,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASUsername,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASPassword,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBConfigLog,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBConfigResults,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $GBConfigRRAS,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $StatusBar<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Try<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Form.Add_Shown({$Form.Activate()}) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Form.Add_Shown(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($Global:ConfigurationUploaded -eq &quot;Success&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &quot;Configuration File found: $ConfigurationFile, Loading main form&quot; -Type INFO&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LoadExecutionForm<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &nbsp;&quot;No Configuration File found: $ConfigurationFile, User will be prompted to Create one&quot; -Type WARNING<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LoadConfigurationForm<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Form.Add_Closing({CleanUpScript})&nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Form.ShowDialog() | Out-Null &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Catch<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &nbsp;&quot;Script encountered issues &quot; -Type ERROR<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function LoadExecutionForm<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBRRASServersSelect.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Visible=$true&nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateStart.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateEnd.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$LabelUserName.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBOptions.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBUser.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBActions.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Visible=$true &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBSettings.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBResults.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBLog.Visible=$true &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASServer.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASUsername.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASPassword.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.Visible=$false <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigRRAS.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute.Visible=$false &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigActions.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigResults.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigLog.Visible=$false &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($Global:ConfigurationUploaded -eq &quot;Success&quot;)&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Load-Connect<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function LoadConfigurationForm<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBRRASServersSelect.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateStart.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateEnd.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$LabelUserName.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBOptions.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBUser.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBActions.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBSettings.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBResults.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBLog.Visible=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASServer.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASUsername.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASPassword.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigRRAS.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm.Visible=$true &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigActions.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigResults.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.Visible=$true&nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigLog.Visible=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$TextBoxRRASServer.Focus()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Load-ConnectConfig<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function CheckConfigurationFile <br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if (test-path -path $ConfigurationFile)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &quot;Configuration File: $ConfigurationFile found, and will be used to connect to servers&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Checking Contents of the file, if empty then <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ((Get-Content -Path $ConfigurationFile) -eq $null)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &quot;No data found in Configuration File: $ConfigurationFile, user will be prompted to re-configure&quot;&nbsp; &nbsp; -Type INFO&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Global:ConfigurationUploaded = &quot;&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Global:ConfigurationUploaded = &quot;Success&quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &quot;No Configuration File: $ConfigurationFile found, user will be prompted to create one.&quot; -Type INFO&nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Global:ConfigurationUploaded = &quot;&quot; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n<br \/>\n&nbsp; &nbsp; function CleanUpScript<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #Clean Up Variables and PS-Sessions<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Try<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Dispose PSSessions<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Get-PSSession | ? ComputerName -match &quot;vpn&quot; | Remove-PSSession<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Catch<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &nbsp;&quot;Script encountered issues while removing PS-Sessions&quot; -Type ERROR<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Invoke-CleanControls {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; param(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [parameter(Mandatory=$true)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ValidateSet(&quot;All&quot;,&quot;Log&quot;)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Option<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($Option -eq &quot;All&quot;) {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Clear()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Clean Output Box if required<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #$OutputBox.ResetText()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($Option -eq &quot;Log&quot;) {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Clean Output Box if required<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #$OutputBox.ResetText() <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n<br \/>\n&nbsp; &nbsp; function Invoke-CleanConfigControls {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; param(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [parameter(Mandatory=$true)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ValidateSet(&quot;All&quot;,&quot;Log&quot;)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Option<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($Option -eq &quot;All&quot;) {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Rows.Clear()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Clean Output Box if required<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #$OutputConfigBox.ResetText()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($Option -eq &quot;Log&quot;) {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Clean Output Box if required<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #$OutputConfigBox.ResetText()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function ModifyTextBox<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($TextBoxUserName.Text -eq &quot;Enter UserName or DeviceName&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Text = &quot;&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Elseif (($TextBoxUserName.Text -eq $null) -or ($TextBoxUserName.Text -eq &quot;&quot;) -or ($TextBoxUserName.Text -eq &quot; &quot;))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Text = &quot;Enter UserName or DeviceName&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Activate-DateControls<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if (($ComboBoxTypes.SelectedIndex -eq 2) -or ($ComboBoxTypes.SelectedIndex -eq 3) -or ($ComboBoxTypes.SelectedIndex -eq 6))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($ComboBoxTypes.SelectedIndex -eq 2) -or ($ComboBoxTypes.SelectedIndex -eq 6))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Enabled=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Enabled=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Enabled = $false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Enabled = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Enabled = $false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Enabled=$false &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Activate-CheckBoxControls<br \/>\n&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($CheckBoxCurrentData.Checked -eq $false)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Enabled = $true&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Enabled = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Enabled = $false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Activate-Controls {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #[System.Windows.Forms.Application]::UseWaitCursor = $false &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Enabled=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Enabled=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Enabled=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.Enabled=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Activate-DateControls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Activate-CheckBoxControls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ModifyTextBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$RadioButtonSelectRRASServer.Focus() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function DeActivate-Controls {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #[System.Windows.Forms.Application]::UseWaitCursor = $true&nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Enabled=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Enabled=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Enabled=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.Enabled=$false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Activate-DateControls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Activate-CheckBoxControls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ModifyTextBox<br \/>\n&nbsp; &nbsp; }<br \/>\n<br \/>\n&nbsp; &nbsp; function Write-OutputBox {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; param(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [parameter(Mandatory=$true)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [string]$OutputBoxMessage,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [parameter(Mandatory=$true)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ValidateSet(&quot;WARNING&quot;,&quot;ERROR&quot;,&quot;INFO&quot;)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [string]$Type<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Begin {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTime = (Get-Date).ToLongTimeString()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($OutputBox.Text.Length -eq 0) {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.Text = &quot;$($DateTime) - $($Type): $($OutputBoxMessage)&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.SelectionStart = $OutputBox.Text.Length<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.ScrollToCaret()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.AppendText(&quot;`n$($DateTime) - $($Type): $($OutputBoxMessage)&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.SelectionStart = $OutputBox.Text.Length<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.ScrollToCaret()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Write-OutputConfigBox {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; param(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [parameter(Mandatory=$true)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [string]$OutputBoxMessage,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [parameter(Mandatory=$true)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ValidateSet(&quot;WARNING&quot;,&quot;ERROR&quot;,&quot;INFO&quot;)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [string]$Type<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Begin {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTime = (Get-Date).ToLongTimeString()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($OutputConfigBox.Text.Length -eq 0) {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.Text = &quot;$($DateTime) - $($Type): $($OutputBoxMessage)&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.SelectionStart = $OutputConfigBox.Text.Length<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.ScrollToCaret()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.AppendText(&quot;`n$($DateTime) - $($Type): $($OutputBoxMessage)&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.SelectionStart = $OutputConfigBox.Text.Length<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.ScrollToCaret()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Connect-RRASServers<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if (test-path -path $ConfigurationFile)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Get RRAS Servers from the Configuration File&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForEach ($RRASserver in (Get-content -path $ConfigurationFile))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASServerDetails = $RRASServer.Split(&quot;,&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverName = $RRASServerDetails[0]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASLogin = $RRASServerDetails[1]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASPassword = (Get-Content -Path &quot;$UserLocalAppData\\RRASreporting\\$RRASserverName.txt&quot; | ConvertTo-SecureString)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $LoginUser = &quot;$RRASserverName\\$RRASLogin&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASCred = New-Object -TypeName System.Management.Automation.PSCredential &nbsp;-ArgumentList $LoginUser,$RRASPassword<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Connect to RRAS Server<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Check for Variable if already exists, if it does, Then just do the PS-Sessions only.<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Get-Variable | ? Name -eq $RRASServerName)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Get-PSSession | ? ComputerName -eq $RRASserverName)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;PS-Session for this Host already exists, existing session will be utilised&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Initiating connection to RRAS Server: &nbsp;$RRASserverName&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverName = New-PSSession -ComputerName $RRASserverName -Credential $RRASCred &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; catch<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Unable to connect to RRAS Server: $RRASserverName&quot; -Type ERROR; break<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Successfully connected to RRAS Server: $RRASserverName&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Initiating connection to RRAS Server: &nbsp;$RRASserverName&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; New-Variable -Name $RRASserverName -Scope Global -Value (New-PSSession -ComputerName $RRASserverName -Credential $RRASCred) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;No Configuration File found, user will be prompted to create one.&quot; -Type WARNING<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Load-Connect <br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Connecting to required RRAS Servers&quot; -Type INFO<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($Global:ConfigurationUploaded -eq &quot;Success&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Deactivate controls while inititaing forms<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DeActivate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Connect and Create PS-Sessions to RRAS Servers<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Connect-RRASServers<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Activate controls as all forms are loaded now<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Load-ConnectConfig <br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Fetching Details of RRAS Servers&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #Clear Datagrid rows<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Rows.Clear()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #Connect and Create PS-Sessions to RRAS Servers<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; LoadConfiguration<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Successfully obtained information about RRAS Servers&quot; -Type INFO<br \/>\n&nbsp; &nbsp; }<br \/>\n<br \/>\n&nbsp; &nbsp; function Update-StatusBar {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; param(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [parameter(Mandatory=$true)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ValidateSet(&quot;Ready&quot;,&quot;Updating&quot;,&quot;Validating&quot;,&quot;Enumerating&quot;)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [string]$Activity,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [parameter(Mandatory=$true)]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [string]$Text<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelActivity.Text = $Activity<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelProcessing.Text = $Text&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Get-RRASGeneralInformation { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForEach ($RRASserver in (Get-content -path $configurationfile))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverDetails = $RRASserver.Split(&quot;,&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverName = $RRASserverDetails[0]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Get-PSSession | ? ComputerName -eq $RRASserverName)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Validating connection to $RRASserver&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {Get-RemoteAccess}&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Session = (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session $Session -ScriptBlock $script<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $VpnStatus = $var.VpnStatus<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RoutingStatus = $var.RoutingStatus<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InternetInterface = $var.InternetInterface<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InternalInterface = $var.InternalInterface<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $IPAssignmentMethod = $var | Select -ExpandProperty IPAssignmentMethod<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $IPAddressRangeList = $var | Select -ExpandProperty IPAddressRangeList<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $AuthenticationType = $var.AuthenticationType<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RadiusServerList =&quot;&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach ($RadiusServer in ($var | Select -ExpandProperty RadiusServerList))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RadiusServerList += &quot;$RadiusServer,&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Add($RRASserverName,$VpnStatus, $RoutingStatus, $InternetInterface, $InternalInterface, $IPAssignmentMethod, $IPAddressRangeList, $AuthenticationType, $RadiusServerList)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Successfully collected data from $RRASserver&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;No data was found&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Completed collecting RRAS General Information data&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Get-RemoteAccessAccounting<br \/>\n&nbsp; &nbsp; { &nbsp; <br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForEach ($RRASserver in (Get-content -path $configurationfile))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverDetails = $RRASserver.Split(&quot;,&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverName = $RRASserverDetails[0]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Get-PSSession | ? ComputerName -eq $RRASserverName) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Validating connection to $RRASserver&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {Get-RemoteAccessAccounting}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RadiusAccountingStatus = $var.RadiusAccountingStatus<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RadiusServerList =&quot;&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach ($RadiusServer in ($var | Select -ExpandProperty RemoteRadiusServerList))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RadiusServerList += &quot;$RadiusServer,&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RemoteRadiusServerList = $RadiusServerList<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InboxAccountingStatus = $var.InboxAccountingStatus<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InboxStoreLimit = $var.InboxStoreLimit<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InboxStoreUsedBytes = [math]::round($var.InboxStoreUsedBytes\/1GB, 2)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InboxStoreUsedBytesInPercentage = ($var.InboxStoreUsedBytesInPercentage\/100).ToString(&quot;P&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InboxStoreFreeBytes = [math]::round($var.InboxStoreFreeBytes\/1GB, 2)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InboxStoreFreeBytesInPercentage = ($var.InboxStoreFreeBytesInPercentage\/100).ToString(&quot;P&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InboxStoreFirstRecordDate = $var.InboxStoreFirstRecordDate<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $InboxStoreLastRecordDate = $var.InboxStoreLastRecordDate<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Add($RRASserverName, $InboxAccountingStatus, $InboxStoreLimit, $InboxStoreUsedBytes, $InboxStoreUsedBytesInPercentage, $InboxStoreFreeBytes, $InboxStoreFreeBytesInPercentage, $InboxStoreFirstRecordDate, $InboxStoreLastRecordDate)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Successfully collected data from $RRASserver&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;No data was found&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Completed collecting RRAS Remote Access Accounting data&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Get-RemoteAccessConnectionStatistics { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForEach ($RRASserver in (Get-content -path $configurationfile))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverDetails = $RRASserver.Split(&quot;,&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverName = $RRASserverDetails[0]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Get-PSSession | ? ComputerName -eq $RRASserverName) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Validating connection to $RRASserver&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $StartDate = Get-Date -Date $DateTimeStart.value -Format &quot;MM-dd-yyyy hh:mm:ss tt&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $EndDate = Get-Date -Date $DateTimeEnd.value -Format &quot;MM-dd-yyyy hh:mm:ss tt&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($TextBoxUserName.Text -eq &quot;Enter UserName or DeviceName&quot;) -or ($TextBoxUserName.Text -eq &quot;&quot;) -or ($TextBoxUserName.Text -eq &quot; &quot;) -or ($TextBoxUserName.Text -eq $null))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $SelectedUser = $null<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $SelectedUser = $TextBoxUserName.Text<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($SelectedUser -match &quot;internal.dotars.gov.au&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #do Nothing<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($SelectedUser -match &quot;xt&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $SelectedUser = &quot;$SelectedUser.internal.dotars.gov.au&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $SelectedUser = &quot;$SelectedUser@internal.dotars.gov.au&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($CheckBoxCurrentData.checked -eq $false)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($SelectedUser -ne $null)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {param($StartdateTime,$EndDateTime,$Username) Get-RemoteAccessConnectionStatistics -StartDateTime $StartdateTime -EndDateTime $EndDateTime | ? UserName -match $Username} <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &nbsp;&quot;Exeucting $script&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script -ArgumentList $Startdate, $EndDate, $SelectedUser&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {param($StartdateTime,$EndDateTime) Get-RemoteAccessConnectionStatistics -StartDateTime $StartdateTime -EndDateTime $EndDateTime} <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &nbsp;&quot;Exeucting $script&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script -ArgumentList $Startdate, $EndDate &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($SelectedUser -ne $null)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {param($Username) Get-RemoteAccessConnectionStatistics | ? UserName -match $Username} <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &nbsp;&quot;Exeucting $script&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script -ArgumentList $SelectedUser<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {Get-RemoteAccessConnectionStatistics} <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &nbsp;&quot;Exeucting $script&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Write-OutputBox -OutputBoxMessage &quot;Executing: $script&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Write-OutputBox -OutputBoxMessage &quot;Fetching Data for RemoteAccessConnectionStatistics Start Date: $DateTimeStart.value and End Date: $DateTimeEnd.value &quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Foreach ($Row in $var)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Username = $Row | Select -ExpandProperty UserName &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ClientIPAddress = $Row.ClientIPAddress.IPAddressToString<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ClientExternalAddress = $Row.ClientExternalAddress &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $AuthMethod = $Row.AuthMethod<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TunnelType = $Row.TunnelType<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $UserActivityState = $Row.UserActivityState<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ConnectionStartTime = $Row.ConnectionStartTime.DateTime<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DateTimeNow = Get-Date<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Time= New-TimeSpan -Start $Row.ConnectionStartTime.DateTime -End $DateTimeNow&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Time = ($Row.ConnectionStartTime).AddSeconds($Row.ConnectionDuration)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $secs = $Row.ConnectionDuration<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ts = &nbsp;[timespan]::fromseconds($secs) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ConnectionDuration = &quot;{0:00}:{1:00}:{2:00}:{3:00}&quot; -f &nbsp;$time.days,$time.Hours,$time.Minutes,$time.seconds&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ConnectionDuration = &quot;$($ts.hours):$($ts.minutes):$($ts.seconds)&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalBytesIn = [math]::round($Row.TotalBytesIn\/1GB, 2)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalBytesOut = [math]::round($Row.TotalBytesOut\/1GB, 2) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Add($RRASserverName,$Username,$ClientIPAddress,$ClientExternalAddress,$AuthMethod,$TunnelType,$ConnectionStartTime,$ConnectionDuration,$UserActivityState)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Successfully collected data from $RRASserver&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;No data was found&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Completed collecting RRAS Connection Statistics data&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Get-RRASConnectionStatisticsSummary { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForEach ($RRASserver in (Get-content -path $configurationfile))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverDetails = $RRASserver.Split(&quot;,&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverName = $RRASserverDetails[0]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Get-PSSession | ? ComputerName -eq $RRASserverName) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Validating connection to $RRASserver&quot;<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $StartDate = Get-Date -Date $DateTimeStart.value -Format &quot;MM-dd-yyyy hh:mm:ss tt&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $EndDate = Get-Date -Date $DateTimeEnd.value -Format &quot;MM-dd-yyyy hh:mm:ss tt&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($CheckBoxCurrentData.checked -eq $false)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {param($StartdateTime,$EndDateTime) Get-RemoteAccessConnectionStatisticsSummary -StartDateTime &quot;$StartdateTime&quot; -EndDateTime &quot;$EndDateTime&quot;} <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script -ArgumentList $Startdate, $EndDate &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalSessions = $var.TotalSessions<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #$TotalDASessions = $var.TotalDASessions<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalVpnSessions = $var.TotalVpnSessions <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $MaxConcurrentSessions = $var.MaxConcurrentSessions<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #$TotalUniqueDAClients = $var.TotalUniqueDAClients<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $AverageSessionsPerDay = $var.AverageSessionsPerDay<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalUniqueUsers = $var.TotalUniqueUsers<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Add($RRASserverName, $TotalSessions, $TotalVpnSessions, $MaxConcurrentSessions, $AverageSessionsPerDay, $TotalUniqueUsers)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {Get-RemoteAccessConnectionStatisticsSummary} <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalVpnConnections = $var.TotalVpnConnections<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalUniqueUsers = $var.TotalUniqueUsers<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $MaxConcurrentConnections = $var.MaxConcurrentConnections<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalCumulativeConnections = $var.TotalCumulativeConnections<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalBytesIn = [math]::round($var.TotalBytesIn\/1GB, 2)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TotalBytesOut = [math]::round($var.TotalBytesOut\/1GB, 2)<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Add($RRASserverName, $TotalVpnConnections, $TotalUniqueUsers, $MaxConcurrentConnections, $TotalCumulativeConnections, $TotalBytesIn, $TotalBytesOut)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Successfully collected data from $RRASserver&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;No data was found&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Completed collecting RRAS Connection Statistics Summary data&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Get-RemoteAccessHealth <br \/>\n&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForEach ($RRASserver in (Get-content -path $configurationfile))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverDetails = $RRASserver.Split(&quot;,&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverName = $RRASserverDetails[0]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Get-PSSession | ? ComputerName -eq $RRASserverName) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Validating connection to $RRASserver&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {Get-RemoteAccessHealth}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Foreach ($Row in $var)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($Row.Component -eq &quot;Server&quot;) -or ($Row.Component -eq &quot;Vpn Addressing&quot;) -or ($Row.Component -eq &quot;Vpn Connectivity&quot;) -or ($Row.Component -eq &quot;Services&quot;))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Component = $Row | Select -ExpandProperty Component&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $HealthState = $Row | Select -ExpandProperty HealthState&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $TimeStamp = $Row | Select -ExpandProperty TimeStamp<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Add($RRASserverName, $Component, $HealthState, $TimeStamp)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Successfully collected data from $RRASserver&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;No data was found&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Completed collecting RRAS Remote Access Health data&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Get-RemoteAccessRadius <br \/>\n&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForEach ($RRASserver in (Get-content -path $configurationfile))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverDetails = $RRASserver.Split(&quot;,&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverName = $RRASserverDetails[0]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Get-PSSession | ? ComputerName -eq $RRASserverName) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Validating connection to $RRASserver&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {Get-RemoteAccessRadius}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Foreach ($Row in $var)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ServerName = $Row | Select -ExpandProperty ServerName<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Purpose = $Row | Select -ExpandProperty Purpose<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Score = $Row | Select -ExpandProperty Score<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Timeout = $Row | Select -ExpandProperty Timeout<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Port = $Row | Select -ExpandProperty Port<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $AccountingOnOffMsg = $Row | Select -ExpandProperty AccountingOnOffMsg<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $MsgAuthenticator = $Row | Select -ExpandProperty MsgAuthenticator<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Add($RRASserverName, $ServerName, $Purpose, $Score, $Timeout, $Port, $AccountingOnOffMsg, $MsgAuthenticator) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Successfully collected data from $RRASserver&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;No data was found&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Completed collecting RRAS Remote Access Health data&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Get-RemoteAccessUserActivity <br \/>\n&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($TextBoxUserName.Text -eq &quot;Enter UserName or DeviceName&quot;) -or ($TextBoxUserName.Text -eq &quot;&quot;) -or ($TextBoxUserName.Text -eq &quot; &quot;) -or ($TextBoxUserName.Text -eq $null))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Validating Username for Fetching User Activity Details&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Username Field cannot be left empty, Please Enter UserName or DeviceName&quot; -Type WARNING<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForEach ($RRASserver in (Get-content -path $configurationfile))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverDetails = $RRASserver.Split(&quot;,&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASserverName = $RRASserverDetails[0]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Get-PSSession | ? ComputerName -eq $RRASserverName) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Validating connection to $RRASserver&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $StartDate = Get-Date -Date $DateTimeStart.value -Format &quot;MM-dd-yyyy hh:mm:ss tt&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $EndDate = Get-Date -Date $DateTimeEnd.value -Format &quot;MM-dd-yyyy hh:mm:ss tt&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $SelectedUser = $TextBoxUserName.Text<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($SelectedUser -match &quot;internal.dotars.gov.au&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #do Nothing<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($SelectedUser -match &quot;xt&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $SelectedUser = &quot;$SelectedUser.internal.dotars.gov.au&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $SelectedUser = &quot;$SelectedUser@internal.dotars.gov.au&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($CheckBoxCurrentData.Checked -eq $false)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {param($StartdateTime,$EndDateTime,$Username) Get-RemoteAccessUserActivity -StartDateTime $StartdateTime -EndDateTime $EndDateTime -UserName $Username } <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Executing script: $Script with paramaters: $Startdate, $EndDate, $SelectedUser &quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script -ArgumentList $Startdate, $EndDate, $SelectedUser&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $script = {param($Username) Get-RemoteAccessUserActivity -UserName $Username} <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Executing script: $Script with parameters: $SelectedUser &quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $var = Invoke-Command -Session (Get-PSSession | ? Computername -eq &quot;$RRASserverName&quot;) -ScriptBlock $script -ArgumentList $SelectedUser&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Foreach ($Row in $var)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ServerIpAddress = $Row | Select -ExpandProperty ServerIpAddress&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ProtocolID = $Row | Select -ExpandProperty ProtocolID&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ServerPort = $Row | Select -ExpandProperty ServerPort&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Add($RRASserverName, $SelectedUser, $ServerIpAddress, $ProtocolID, $ServerPort)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Successfully collected data from $RRASserver&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [System.Windows.Forms.Application]::DoEvents()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;No data was found&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Completed collecting RRAS Remote Access Health data&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function RefreshDataGRidView<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Rows.Clear() &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($ComboBoxTypes.SelectedItem -eq &quot;General Information&quot;) {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Clear()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].Name = &quot;RRAS Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Name = &quot;VpnStatus&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Width = &quot;200&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].Name = &quot;Routing Status&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(3,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].Name = &quot;Internet Interface&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(4,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].Name = &quot;Internal Interface&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(5,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].Name = &quot;IP Assignment Method&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(6,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].Name = &quot;IP Address Range List&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(7,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].Name = &quot;Authentication Type&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(8,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].Name = &quot;Radius Server List&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Elseif ($ComboBoxTypes.SelectedItem -eq &quot;Accounting&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Clear() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].Name = &quot;RRAS Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Name = &quot;Inbox Status&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].Name = &quot;Inbox Limit&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(3,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].Name = &quot;Inbox UsedBytes (GB)&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(4,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].Name = &quot;UsedBytes (%)&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(5,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].Name = &quot;FreeBytes (GB)&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(6,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].Name = &quot;FreeBytes (%)&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(7,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].Name = &quot;FirstRecordDate&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(8,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].Name = &quot;LastRecordDate&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Elseif ($ComboBoxTypes.SelectedItem -eq &quot;Connection Statistics&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Clear() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].Name = &quot;RRAS Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Name = &quot;Username&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].Name = &quot;Client IPAddress&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(3,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].Name = &quot;Client ExternalAddress&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(4,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].Name = &quot;AuthMethod&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(5,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].Name = &quot;Tunnel Type&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(6,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].Name = &quot;Connection StartTime&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(7,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].Name = &quot;Connection Duration&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(8,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].Name = &quot;User ActivityState&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #TotalBytesIn<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #TotalBytesOut<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Elseif ($ComboBoxTypes.SelectedItem -eq &quot;Connection Statistics Summary&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($CheckBoxCurrentData.Checked -eq $true)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Clear() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].Name = &quot;RRAS Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Name = &quot;Total VPN Connections&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].Name = &quot;Total Unique Users&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(3,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].Name = &quot;Max Concurrent Connections&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(4,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].Name = &quot;Total Cumulative Connections&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(5,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].Name = &quot;Total BytesIn (GB)&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(6,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].Name = &quot;Total BytesOut (GB)&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Clear() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].Name = &quot;RRAS Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Name = &quot;Total Sessions&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].Name = &quot;Total Vpn Sessions&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(3,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].Name = &quot;Max Concurrent Sessions&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(4,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].Name = &quot;Average SessionsPerDay&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(5,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].Name = &quot;Total UniqueUsers&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Elseif ($ComboBoxTypes.SelectedItem -eq &quot;Health&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Clear() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].Name = &quot;RRAS Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Name = &quot;Component&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].Name = &quot;Health State&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(3,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].Name = &quot;Timestamp&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].ReadOnly = $true &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Elseif ($ComboBoxTypes.SelectedItem -eq &quot;RemoteAccessRadius&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Clear() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].Name = &quot;RRAS Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Name = &quot;ServerName&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].Name = &quot;Purpose&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(3,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].Name = &quot;Score&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(4,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].Name = &quot;Timeout&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(5,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].Name = &quot;Port&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(6,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].Name = &quot;AccountingOnOffMsg&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(7,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].Name = &quot;MsgAuthenticator&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Elseif ($ComboBoxTypes.SelectedItem -eq &quot;User Activity&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Clear() &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].Name = &quot;RRAS Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Name = &quot;UserName&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].Name = &quot;ServerIpAddress&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(3,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].Name = &quot;ProtocolID&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(4,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].Name = &quot;ServerPort&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n<br \/>\n&nbsp; &nbsp; function SaveConfiguration($DGVConfigResultsData)<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #Check File and Create if required<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if (Test-path -Path $ConfigurationFile)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Configuration File found, Initiating clean up procedure&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Remove-Item -Path $ConfigurationFile -Force &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; New-Item -path $ConfigurationFile -ItemType File<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Configuration File not found, creating file as required: $ConfigurationFile&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; New-Item -path $ConfigurationFile -ItemType File<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Save Information to Configuration File&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Row = 0&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; For ($Row =0; $row -lt $DGVConfigResultsData.Rowcount -1 ; $Row++)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASHostname = &quot;&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASUsername = &quot;&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASHostname = $DGVConfigResultsData.Rows[$row].Cells[0].Value<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASUsername = $DGVConfigResultsData.Rows[$row].Cells[1].Value<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #$RRASPassword = (Decrypt-String -Encrypted ($DGVConfigResults[2,$DGVConfigResults.CurrentCell.RowIndex].Value))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASPassword = (Decrypt-String -Encrypted ($DGVConfigResultsData.Rows[$row].Cells[2].Value))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Save RRAS hostname and Username in the Configuraiton File<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Add-Content -Path $ConfigurationFile -Value &quot;$RRASHostname,$RRASUsername&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Encrytping password<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASPassword | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File &quot;$UserLocalAppData\\RRASreporting\\$RRASHostname.txt&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Data saved in Configuration File: $ConfigurationFile&quot; -Type INFO &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Global:ConfigurationUploaded = &quot;Success&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function LoadConfiguration<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Check File and Create if required<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (Test-path -Path $ConfigurationFile)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Configuration File found, Loading information&quot; -Type INFO<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Load information<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ForEach ($RRASserver in (Get-content -path $configurationfile))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASServerDetails = $RRASserver.Split(&quot;,&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASServerName = $RRASServerDetails[0]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASUserName = $RRASserverDetails[1] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $RRASDecryptedPassword = ConvertFrom-SecureToPlain (Get-Content -Path &quot;$UserLocalAppData\\RRASreporting\\$RRASServerName.txt&quot; | ConvertTo-SecureString)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Fetching login details from $UserLocalAppData\\RRASreporting\\$RRASServerName.txt&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Fetching login details from $UserLocalAppData\\RRASreporting\\$RRASServerName.txt&quot; -Type INFO&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Adding Server to the RRAS Server List&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $EncryptedPassword = (Encrypt-String -String ($RRASDecryptedPassword))&nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Rows.Add($RRASServerName, $RRASUserName, $EncryptedPassword)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Successfully added data to Grid view&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Export-DGV2CSV ([Windows.Forms.DataGridView] $grid, [String] $File)<br \/>\n&nbsp; &nbsp; &amp;lt;#<br \/>\n&nbsp; &nbsp; .SYNOPSIS<br \/>\n&nbsp; &nbsp; Export basic datagrid to CSV file<br \/>\n<br \/>\n&nbsp; &nbsp; .PARAMETER grid<br \/>\n&nbsp; &nbsp; Datagrid object<br \/>\n&nbsp; &nbsp; .PARAMETER file<br \/>\n&nbsp; &nbsp; Path to CSV file<br \/>\n&nbsp; &nbsp; #&amp;gt;<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if ($grid.RowCount -eq 0) { return } # nothing to do<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $row = New-Object Windows.Forms.DataGridViewRow<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $sw &nbsp;= new-object System.IO.StreamWriter($File)<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Try<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Write header line<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $sw.WriteLine( ($grid.Columns | % { $_.HeaderText } ) -join ',' )<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Fetching data from Datagrid to Export&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Fetching data from Datagrid to Export&quot; -Type INFO&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #Export contents inlcuding Headers<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $grid.Rows | % {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $sw.WriteLine(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ($_.Cells | % { $_.Value }) -join ','<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $sw.Close()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Data Exported to $ExportFile successfully&quot; -Type INFO&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Catch<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Issues while exporting datagridview: $_.Exception.Message&quot; -Type ERROR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function Encrypt-String($String, $Passphrase=&quot;EncryptIt&quot;, $salt=&quot;SaltCrypto&quot;, $init=&quot;PassKeeper&quot;, [switch]$arrayOutput)<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Info: More information and good documentation on these functions can be found in the link above<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $r = New-Object System.Security.Cryptography.RijndaelManaged<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $pass = [Text.Encoding]::UTF8.GetBytes($Passphrase)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $salt = [Text.Encoding]::UTF8.GetBytes($salt)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $r.Key = (New-Object Security.Cryptography.PasswordDeriveBytes $pass, $salt, &quot;SHA1&quot;, 5).GetBytes(32)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $r.IV = (New-Object Security.Cryptography.SHA1Managed).ComputeHash( [Text.Encoding]::UTF8.GetBytes($init) )[0..15]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $c = $r.CreateEncryptor()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ms = New-Object IO.MemoryStream<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $cs = New-Object Security.Cryptography.CryptoStream $ms,$c,&quot;Write&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $sw = New-Object IO.StreamWriter $cs<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $sw.Write($String)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $sw.Close()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $cs.Close()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ms.Close()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $r.Clear()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; [byte[]]$result = $ms.ToArray()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; return [Convert]::ToBase64String($result)<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; function Decrypt-String($Encrypted, $Passphrase=&quot;EncryptIt&quot;, $salt=&quot;SaltCrypto&quot;, $init=&quot;PassKeeper&quot;)<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; if($Encrypted -is [string])<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $Encrypted = [Convert]::FromBase64String($Encrypted)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $r = New-Object System.Security.Cryptography.RijndaelManaged<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $pass = [Text.Encoding]::UTF8.GetBytes($Passphrase)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $salt = [Text.Encoding]::UTF8.GetBytes($salt)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $r.Key = (New-Object Security.Cryptography.PasswordDeriveBytes $pass, $salt, &quot;SHA1&quot;, 5).GetBytes(32) #256\/8<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $r.IV = (New-Object Security.Cryptography.SHA1Managed).ComputeHash( [Text.Encoding]::UTF8.GetBytes($init) )[0..15]<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $d = $r.CreateDecryptor()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ms = New-Object IO.MemoryStream @(,$Encrypted)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $cs = New-Object Security.Cryptography.CryptoStream $ms,$d,&quot;Read&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $sr = New-Object IO.StreamReader $cs<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $text = $sr.ReadToEnd()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $sr.Close()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $cs.Close()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ms.Close()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $r.Clear()<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; return $text<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; # A Generic Function for Converting Security.SecureString Objects to Plain Text Strings<br \/>\n&nbsp; &nbsp; Function ConvertFrom-SecureToPlain <br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; param( [Parameter(Mandatory=$true)][System.Security.SecureString] $SecurePassword)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Create a &quot;password pointer&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $PasswordPointer = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecurePassword) &nbsp; &nbsp; &nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Get the plain text version of the password<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $PlainTextPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto($PasswordPointer) &nbsp; &nbsp; &nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Free the pointer<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($PasswordPointer) &nbsp; &nbsp; &nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Return the plain text password<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $PlainTextPassword<br \/>\n&nbsp; &nbsp; }<br \/>\n<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function RemoveRRASServertoGridView<br \/>\n&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Adding Server to the RRAS Server List&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Rows.Remove($DGVConfigResults.Rows[$DGVConfigResults.CurrentCell.RowIndex])<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox -OutputBoxMessage &quot;Successfully added data to Grid view&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; function AddRRASServertoGridView<br \/>\n&nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Process <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Enumerating -Text &quot; &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Adding Server to the RRAS Server List&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Encrytping password<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $EncryptedString = (Encrypt-String -String ($TextBoxRRASPassword.Text)) &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Rows.Add($TextBoxRRASServer.Text, $TextBoxRRASUsername.Text, $EncryptedString)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Successfully added data to Grid view&quot; -Type INFO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n<br \/>\n#endregion Functions<br \/>\n<br \/>\n#region Windows Form Settings<br \/>\n<br \/>\n&nbsp; &nbsp; #region Form Details<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Forms<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form = New-Object System.Windows.Forms.Form &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$Form.Size = New-Object System.Drawing.Size(900,700) &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.Size = New-Object System.Drawing.Size(1200,700) &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.MinimumSize = New-Object System.Drawing.Size(1200,700)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.MaximumSize = New-Object System.Drawing.Size([System.Int32]::MaxValue,[System.Int32]::MaxValue)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.SizeGripStyle = &quot;Show&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($PSHome + &quot;\\powershell.exe&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.Text = &quot;Harmik Batth - RRAS Server Stats v1.0&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.ControlBox = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.MinimizeBox=$true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.MaximizeBox=$true <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $Form.TopMost = $false&nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; #endregion Form Details<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; #region Execution Form page<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Buttons<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute = New-Object System.Windows.Forms.Button <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Location = New-Object System.Drawing.Size(790,27)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Size = New-Object System.Drawing.Size(90,25) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Text = &quot;Execute&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.TabIndex = &quot;5&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExecute.Add_Click({ &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch ($ComboBoxTypes.SelectedItem) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;General Information&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Invoke-CleanControls -Option All<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($RadioButtonSelectRRASServer.Checked -eq $true)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DeActivate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RefreshDataGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Get-RRASGeneralInformation<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Accounting&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Invoke-CleanControls -Option All<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($RadioButtonSelectRRASServer.Checked -eq $true)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DeActivate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RefreshDataGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Get-RemoteAccessAccounting<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Connection Statistics&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Invoke-CleanControls -Option All<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($RadioButtonSelectRRASServer.Checked -eq $true)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DeActivate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RefreshDataGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Get-RemoteAccessConnectionStatistics <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Connection Statistics Summary&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Invoke-CleanControls -Option All<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($RadioButtonSelectRRASServer.Checked -eq $true)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DeActivate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RefreshDataGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Get-RRASConnectionStatisticsSummary <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Health&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Invoke-CleanControls -Option All<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($RadioButtonSelectRRASServer.Checked -eq $true)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DeActivate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RefreshDataGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Get-RemoteAccessHealth <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;RemoteAccessRadius&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Invoke-CleanControls -Option All<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($RadioButtonSelectRRASServer.Checked -eq $true)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DeActivate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RefreshDataGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Get-RemoteAccessRadius <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;User Activity&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Invoke-CleanControls -Option All<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($RadioButtonSelectRRASServer.Checked -eq $true)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DeActivate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RefreshDataGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Get-RemoteAccessUserActivity <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-Controls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration = New-Object System.Windows.Forms.Button <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Location = New-Object System.Drawing.Size(910,27)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Size = New-Object System.Drawing.Size(90,25) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Text = &quot;Configuration&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.TabIndex = &quot;6&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfiguration.Add_Click({ &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LoadConfigurationForm<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport = New-Object System.Windows.Forms.Button <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Location = New-Object System.Drawing.Size(790,57)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Size = New-Object System.Drawing.Size(90,25) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Text = &quot;Export&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.TabIndex = &quot;7&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonExport.Add_Click({ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $strDate = Get-Date -Format &quot;dd-MM-yyyy&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switch ($ComboBoxTypes.SelectedItem) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;General Information&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ExportFile = $ExportFile = &quot;$ExportFolder\\RRAS-General-Information-$strDate.csv&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Accounting&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ExportFile = $ExportFile = &quot;$ExportFolder\\RRAS-Accounting-$strDate.csv&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Connection Statistics&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ExportFile = $ExportFile = &quot;$ExportFolder\\RRAS-Connection-Statistics-$strDate.csv&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Connection Statistics Summary&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($CheckBoxCurrentData.Checked -$true)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ExportFile = $ExportFile = &quot;$ExportFolder\\RRAS-Connection-Statistics-Summary-Current-$strDate.csv&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ExportFile = $ExportFile = &quot;$ExportFolder\\RRAS-Connection-Statistics-Summary-Custom-$strDate.csv&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Health&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ExportFile = $ExportFile = &quot;$ExportFolder\\RRAS-Health-$strDate.csv&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;RemoteAccessRadius&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ExportFile = $ExportFile = &quot;$ExportFolder\\RRAS-Radius-$strDate.csv&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;User Activity&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ExportFile = $ExportFile = &quot;$ExportFolder\\RRAS-User-Activity-$strDate.csv&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Export-DGV2CSV $DGVResults $ExportFile<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # GroupBoxes<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBRRASServersSelect = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBRRASServersSelect.Location = New-Object -TypeName System.Drawing.Size(10,10)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBRRASServersSelect.Size = New-Object -TypeName System.Drawing.Size(120,50)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBRRASServersSelect.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBRRASServersSelect.Text = &quot;RRAS Servers List&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBOptions = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBOptions.Location = New-Object -TypeName System.Drawing.Size(140,10)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBOptions.Size = New-Object -TypeName System.Drawing.Size(630,80)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBOptions.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBOptions.Text = &quot;Options&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBUser = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBUser.Location = New-Object -TypeName System.Drawing.Size(540,30)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBUser.Size = New-Object -TypeName System.Drawing.Size(220,50)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBUser.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBUser.Text = &quot;Enter Username to Report on&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBActions = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBActions.Location = New-Object -TypeName System.Drawing.Size(780,10)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBActions.Size = New-Object -TypeName System.Drawing.Size(110,90)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBActions.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBActions.Text = &quot;Actions&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBSettings = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBSettings.Location = New-Object -TypeName System.Drawing.Size(900,10)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBSettings.Size = New-Object -TypeName System.Drawing.Size(110,50)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBSettings.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBSettings.Text = &quot;Settings&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBResults = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBResults.Location = New-Object -TypeName System.Drawing.Size(10,100)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBResults.Size = New-Object -TypeName System.Drawing.Size(1160,350)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBResults.Anchor = &quot;Top, Bottom, Left, Right&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBResults.Text = &quot;Source information&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBLog = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBLog.Location = New-Object -TypeName System.Drawing.Size(10,455)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBLog.Size = New-Object -TypeName System.Drawing.Size(1160,175)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBLog.Anchor = &quot;Bottom, Left, Right&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBLog.Text = &quot;Logging&quot;<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # ComboBoxes<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes = New-Object System.Windows.Forms.ComboBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.Location = New-Object System.Drawing.Size(150,30) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.Size = New-Object System.Drawing.Size(160,30)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.Items.AddRange(@(&quot;General Information&quot;,&quot;Accounting&quot;,&quot;Connection Statistics&quot;,&quot;Connection Statistics Summary&quot;,&quot;Health&quot;,&quot;RemoteAccessRadius&quot;,&quot;User Activity&quot;))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.SelectedItem = &quot;General Information&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.TabIndex = &quot;1&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.DropDownStyle = [System.Windows.Forms.ComboBoxStyle]::DropDownList &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ComboBoxTypes.Add_SelectedIndexChanged({<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-DateControls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #Checkboxes<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData = New-Object System.Windows.Forms.CheckBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Location = New-Object System.Drawing.Size(150,55)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Size = New-Object System.Drawing.Size(160,30)&nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Anchor = &quot;Top, Left&quot; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Text = &quot;Show Current Data&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Enabled = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Checked = $true&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $CheckBoxCurrentData.Add_CheckedChanged({<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Activate-CheckBoxControls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Date Time Boxes<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart= New-Object System.Windows.Forms.DateTimePicker&nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Location = New-Object System.Drawing.Size(380,30) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Size = New-Object System.Drawing.Size(150,20)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Format = [System.Windows.Forms.DateTimePickerFormat]::Custom<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.CustomFormat = &quot;dd-MM-yyyy hh:mm:ss tt&quot; &nbsp;&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Value = ([DateTime]::Today).AddDays(-1)&nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.MaxDate = Get-Date &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Anchor = &quot;Top, Left&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.Enabled = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeStart.TabIndex = &quot;2&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd= New-Object System.Windows.Forms.DateTimePicker&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Location = New-Object System.Drawing.Size(380,60) &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Size = New-Object System.Drawing.Size(150,20)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Format = [System.Windows.Forms.DateTimePickerFormat]::Custom<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.CustomFormat = &quot;dd-MM-yyyy hh:mm:ss tt&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Value = [DateTime]::Today<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.MaxDate = Get-Date <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.Enabled = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DateTimeEnd.TabIndex = &quot;3&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Lables<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateStart = New-Object System.Windows.Forms.Label<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateStart.Location = New-Object System.Drawing.Size(320,33)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateStart.Size = New-Object System.Drawing.Size(60,20)&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateStart.Anchor = &quot;Top, Left&quot;&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateStart.Text = &quot;Start Date&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateEnd = New-Object System.Windows.Forms.Label<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateEnd.Location = New-Object System.Drawing.Size(320,63)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateEnd.Size = New-Object System.Drawing.Size(60,20)&nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateEnd.Anchor = &quot;Top, Left&quot;&nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelDateEnd.Text = &quot;End Date&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelUserName = New-Object System.Windows.Forms.Label<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelUserName.Location = New-Object System.Drawing.Size(550,33)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelUserName.Size = New-Object System.Drawing.Size(100,20)&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelUserName.Anchor = &quot;Top, Left&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelUserName.Text = &quot;Enter Username&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Radio Buttons &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer = New-Object System.Windows.Forms.RadioButton<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer.Location = New-Object System.Drawing.Size(20,30) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer.Size = New-Object System.Drawing.Size(70,15)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer.TabIndex = &quot;0&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer.Anchor = &quot;Top, Left&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer.Text = &quot;All RRAS Servers&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $RadioButtonSelectRRASServer.Checked = $true<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # RichTextBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox = New-Object System.Windows.Forms.RichTextBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.Location = New-Object System.Drawing.Size(20,475)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.Size = New-Object System.Drawing.Size(1138,145)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.Anchor = &quot;Bottom, Left, Right&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.TabIndex = &quot;9&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.Font = &quot;Courier New&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.BackColor = &quot;white&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputBox.MultiLine = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName = New-Object System.Windows.Forms.RichTextBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Location = New-Object System.Drawing.Size(550,50)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Size = New-Object System.Drawing.Size(200,20)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.TabIndex = &quot;4&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Font = &quot;Courier New&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.BackColor = &quot;white&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.ReadOnly = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.MultiLine = $false <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Enabled = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.Text = &quot;Enter UserName or DeviceName&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.add_GotFocus({<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ModifyTextbox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxUserName.add_LostFocus({<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ModifyTextbox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # StatusBar<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelActivity = New-Object Windows.Forms.StatusBarPanel<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelActivity.Text = &quot;Ready&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelActivity.Width = &quot;100&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelProcessing = New-Object Windows.Forms.StatusBarPanel<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelProcessing.Text = &quot;&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelProcessing.Width = &quot;770&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelAuthor = New-Object Windows.Forms.StatusBarPanel<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelAuthor.Text = &quot;Author: Harmik Singh Batth&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelAuthor.Width = &quot;150&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelAuthorWesbite = New-Object Windows.Forms.StatusBarPanel<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelAuthorWesbite.Text = &quot;Website: www.harmikbatth.com&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelAuthorWesbite.AutoSize = &quot;Spring&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$StatusBarPanelProcessing.Style = [System.Drawing.Color]::Red - need to fix color<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBar = New-Object Windows.Forms.StatusBar<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBar.Size = New-Object System.Drawing.Size(500,20)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBar.ShowPanels = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBar.SizingGrip = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBar.AutoSize = &quot;Full&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $StatusBar.Panels.AddRange(@(<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelActivity, <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelProcessing,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelAuthor,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $StatusBarPanelAuthorWesbite<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #Tooltip Progress bar<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TooltipProgressBar = New-Object Windows.Forms.ToolStripProgressBar <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # DataGridViews<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults = New-Object System.Windows.Forms.DataGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Location = New-Object System.Drawing.Size(20,120)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Size = New-Object System.Drawing.Size(1138,320)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Anchor = &quot;Top, Bottom, Left, Right&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.TabIndex = &quot;8&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.ColumnHeadersVisible = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].Name = &quot;RRAS Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[0].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Name = &quot;VpnStatus&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].Width = &quot;200&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[1].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].Name = &quot;RoutingStatus&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[2].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(3,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].Name = &quot;Internet Interface&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[3].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(4,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].Name = &quot;Internal Interface&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[4].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(5,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].Name = &quot;IPAssignmentMethod&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[5].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(6,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].Name = &quot;IPAddressRangeList&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[6].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(7,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].Name = &quot;AuthenticationType&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[7].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns.Insert(8,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].Name = &quot;RadiusServerList&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.Columns[8].ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.AllowUserToAddRows = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.AllowUserToDeleteRows = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.ReadOnly = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.MultiSelect = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.ColumnHeadersHeightSizeMode = &quot;DisableResizing&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.RowHeadersWidthSizeMode = &quot;DisableResizing&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.RowHeadersVisible = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVResults.SelectionMode = &quot;FullRowSelect&quot;<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; #endregion Execution Form page<br \/>\n<br \/>\n&nbsp; &nbsp; #region Configuration Form page<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #------------------Configuration Form--------------------------#&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # GroupBoxes<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigActions = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigActions.Location = New-Object -TypeName System.Drawing.Size(400,10)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigActions.Size = New-Object -TypeName System.Drawing.Size(270,120)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigActions.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigActions.Text = &quot;Actions&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigResults = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigResults.Location = New-Object -TypeName System.Drawing.Size(10,170)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigResults.Size = New-Object -TypeName System.Drawing.Size(860,280)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigResults.Anchor = &quot;Top, Bottom, Left, Right&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigResults.Text = &quot;Configure RRAS Server Details&quot;<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigLog = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigLog.Location = New-Object -TypeName System.Drawing.Size(10,455)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigLog.Size = New-Object -TypeName System.Drawing.Size(860,175)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigLog.Anchor = &quot;Bottom, Left, Right&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigLog.Text = &quot;Logging&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigRRAS = New-Object -TypeName System.Windows.Forms.GroupBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigRRAS.Location = New-Object -TypeName System.Drawing.Size(10,10)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigRRAS.Size = New-Object -TypeName System.Drawing.Size(380,120)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigRRAS.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $GBConfigRRAS.Text = &quot;Provide RRAS Server Details&quot;&nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # DataGridViews<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults = New-Object System.Windows.Forms.DataGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Location = New-Object System.Drawing.Size(20,190)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Size = New-Object System.Drawing.Size(838,250)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Anchor = &quot;Top, Bottom, Left, Right&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.ColumnHeadersVisible = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns.Insert(0,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns[0].Name = &quot;RRAS Server Name&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns[0].Width = &quot;200&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns[0].ReadOnly = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns.Insert(1,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns[1].Name = &quot;Username&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns[1].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns[1].ReadOnly = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns.Insert(2,(New-Object -TypeName System.Windows.Forms.DataGridViewTextBoxColumn))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns[2].Name = &quot;Password&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns[2].AutoSizeMode = &quot;Fill&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.Columns[2].ReadOnly = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.AllowUserToAddRows = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.AllowUserToDeleteRows = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.MultiSelect = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.ColumnHeadersHeightSizeMode = &quot;DisableResizing&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.RowHeadersWidthSizeMode = &quot;DisableResizing&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.RowHeadersVisible = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $DGVConfigResults.SelectionMode = &quot;FullRowSelect&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$DGVConfigResults.TabIndex = 0<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Buttons<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute = New-Object System.Windows.Forms.Button <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute.Location = New-Object System.Drawing.Size(540,30)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute.Size = New-Object System.Drawing.Size(120,30) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute.Text = &quot;Save Configuration&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute.TabIndex = &quot;1&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigExecute.Add_Click({ &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($DGVConfigResults.RowCount -ge 1)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SaveConfiguration $DGVConfigResults<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd = New-Object System.Windows.Forms.Button <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd.Location = New-Object System.Drawing.Size(410,30)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd.Size = New-Object System.Drawing.Size(120,30) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd.Text = &quot;Add Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd.TabIndex = &quot;1&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASAdd.Add_Click({ &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $preReqs = &quot;&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($TextBoxRRASServer.Text -eq $null) -or ($TextBoxRRASServer.Text -eq &quot;&quot;))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Server name cannot be empty&quot; -Type WARNING <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Server name cannot be empty&quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $preReqs = &quot;Not Met&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($TextBoxRRASUsername.Text -eq $null) -or ($TextBoxRRASUsername.Text -eq &quot;&quot;))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;UserName cannot be empty&quot; -Type WARNING<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;UserName cannot be empty&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $preReqs = &quot;Not Met&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($TextBoxRRASPassword.Text -eq $null) -or ($TextBoxRRASPassword.Text -eq &quot;&quot;))<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Password cannot be empty&quot; -Type WARNING<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Validating -Text &quot;Password cannot be empty&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $preReqs = &quot;Not Met&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($preReqs -ne &quot;Not Met&quot;)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputConfigBox -OutputBoxMessage &quot;Adding RRAS Server Details to Grid view&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Update-StatusBar -Activity Ready -Text &quot; &quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AddRRASServertoGridView &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove = New-Object System.Windows.Forms.Button <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove.Location = New-Object System.Drawing.Size(410,70)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove.Size = New-Object System.Drawing.Size(120,30) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove.Text = &quot;Remove Server&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove.TabIndex = &quot;1&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigRRASRemove.Add_Click({ &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RemoveRRASServertoGridView<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm = New-Object System.Windows.Forms.Button <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm.Location = New-Object System.Drawing.Size(540,70)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm.Size = New-Object System.Drawing.Size(120,30) <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm.Text = &quot;Back To Main Form&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm.TabIndex = &quot;1&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm.Enabled = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $ButtonConfigBackToMainForm.Add_Click({ &nbsp; &nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CheckConfigurationFile<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LoadExecutionForm<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; })<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # Lables<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASServer = New-Object System.Windows.Forms.Label<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$LabelRRASServer.Font = New-Object System.Drawing.Font(&quot;Arial&quot;, &quot;10&quot;,[System.Drawing.FontStyle]::Regular)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASServer.Location = New-Object System.Drawing.Size(15,35)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASServer.Size = New-Object System.Drawing.Size(160,30)&nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASServer.Anchor = &quot;Top, Left&quot; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASServer.Text = &quot;Enter RRAS Server Name&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASUsername = New-Object System.Windows.Forms.Label<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$LabelRRASUsername.Font = New-Object System.Drawing.Font(&quot;Arial&quot;, &quot;10&quot;,[System.Drawing.FontStyle]::Regular)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASUsername.Location = New-Object System.Drawing.Size(15,65)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASUsername.Size = New-Object System.Drawing.Size(160,30)&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASUsername.Anchor = &quot;Top, Left&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASUsername.Text = &quot;Enter RRAS Server UserName&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASPassword = New-Object System.Windows.Forms.Label<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; #$LabelRRASPassword.Font = New-Object System.Drawing.Font(&quot;Arial&quot;, &quot;10&quot;,[System.Drawing.FontStyle]::Regular)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASPassword.Location = New-Object System.Drawing.Size(15,95)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASPassword.Size = New-Object System.Drawing.Size(160,30)&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASPassword.Anchor = &quot;Top, Left&quot; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $LabelRRASPassword.Text = &quot;Enter RRAS Server Password&quot;&nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; # RichTextBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox = New-Object System.Windows.Forms.RichTextBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.Location = New-Object System.Drawing.Size(20,475)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.Size = New-Object System.Drawing.Size(838,145)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.Anchor = &quot;Bottom, Left, Right&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.Font = &quot;Courier New&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.BackColor = &quot;white&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.ReadOnly = $true<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $OutputConfigBox.MultiLine = $true <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer = New-Object System.Windows.Forms.RichTextBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer.Location = New-Object System.Drawing.Size(180,30)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer.Size = New-Object System.Drawing.Size(200,25)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer.Font = &quot;Courier New&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer.BackColor = &quot;white&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer.ReadOnly = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASServer.MultiLine = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername = New-Object System.Windows.Forms.RichTextBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername.Location = New-Object System.Drawing.Size(180,60)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername.Size = New-Object System.Drawing.Size(200,25)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername.Font = &quot;Courier New&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername.BackColor = &quot;white&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername.ReadOnly = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASUsername.MultiLine = $false <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword = New-Object System.Windows.Forms.TextBox<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.Location = New-Object System.Drawing.Size(180,90)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.Size = New-Object System.Drawing.Size(200,30)<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.Anchor = &quot;Top, Left&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.Font = &quot;Courier New&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.BackColor = &quot;white&quot;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.ReadOnly = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.MultiLine = $false<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; $TextBoxRRASPassword.PasswordChar = '*'<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; #endregion Configuration Form page<br \/>\n<br \/>\n#endregion Windows Form Settings<br \/>\n<br \/>\n#region Script Execution<br \/>\n&nbsp; &nbsp; #-----------------------------Execution starts here----------------------#<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; if (Test-Path -Path $ConfigurationFolder)<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &quot;Configuration Folder already exists, no action required&quot; -Type INFO<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; Else<br \/>\n&nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &quot;Configuration Folder does not exist, creating Folder&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Try<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mkdir $ConfigurationFolder<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Catch<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Write-OutputBox &quot;Issues while creating Configuration Folder: $_.Exception.Message&quot; -Type INFO<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; }<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; #CheckConfigurationFile<br \/>\n&nbsp; &nbsp; CheckConfigurationFile&nbsp; <br \/>\n<br \/>\n&nbsp; &nbsp; #Load Form<br \/>\n&nbsp; &nbsp; Load-Form<br \/>\n}<br \/>\n#endregion Script Execution<\/div><\/div>\n\n<\/pre>\r\n<!-- \/wp:post-content -->","protected":false},"excerpt":{"rendered":"<p>A great Powershell script by Harmik to show Stats and connections to RRAS. http:\/\/harmikbatth.com\/2020\/05\/27\/rras-always-on-vpn-stats-remotely\/ ############################################################################################# # # Script: Get-AlwaysOnVPN-Stats-GUI.ps1 # # Author: Harmik Singh Batth # Website: www.harmikbatth.com # # Date: 01\/05\/2020 # # About: This script is designed to pull data from different RRAS Servers and present one view. # # Usage: To use [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-238","post","type-post","status-publish","format-standard","hentry","category-windows-server"],"_links":{"self":[{"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/comments?post=238"}],"version-history":[{"count":4,"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/238\/revisions"}],"predecessor-version":[{"id":355,"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/posts\/238\/revisions\/355"}],"wp:attachment":[{"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/media?parent=238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/categories?post=238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.davidirwin.co.uk\/index.php\/wp-json\/wp\/v2\/tags?post=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}