RDS Get Users (non RDP users)

Private Function GetRDSUsers(sComputerNameToQuery As String) As String

        Dim scope As ManagementScope

        Dim options As New ConnectionOptions

        Dim objOS As ManagementObjectSearcher

        'Dim sComputerNameToQuery As String = "crh16vrdpgate01"

        Try

            options.Username = "chnet\xsvcacct"

            options.SecurePassword = ToSecureString("")

            scope = New ManagementScope("\\" & sComputerNameToQuery & "\root\cimv2\TerminalServices", options)

            'Console.WriteLine("-")

            scope.Options.Authentication = 6

            scope.Connect()

        Catch

            Return "ERROR"

        End Try

        Debug.Print("Connected..")

        objOS = New ManagementObjectSearcher(scope, New ObjectQuery("SELECT * FROM Win32_TSGatewayConnection"))  'https://social.technet.microsoft.com/Forums/lync/en-US/85e0c2bf-abca-4cf9-9355-cb066344a7d5/cannot-access-namespace-terminalservices-remotely-access-denied?forum=winserverpowershell

        Dim sTXT As String = ""

        For Each objMgmt In objOS.Get

            Try

                Dim duration As TimeSpan '= TimeSpan.FromSeconds(funGrabBetween(objMgmt("IdleTime").ToString, "", ":"))

                'duration = ManagementDateTimeConverter.ToTimeSpan(funGrabBetween(objMgmt("ConnectedTime"), "", "."))

                Debug.Print(">> " & objMgmt("UserName").ToString)  'https://docs.microsoft.com/en-us/windows/win32/termserv/win32-tsgatewayconnection

                sTXT = sTXT & Replace(objMgmt("UserName").ToString, Environment.UserDomainName & "\", "") & ","

                'sTXT += "" & "," & vbCrLf

                ' sTXT += "" & "," & vbCrLf

                Debug.Print(">> " & funConvertToConnectiontime(objMgmt("ConnectedTime")))

                sTXT = sTXT & funConvertToConnectiontime(objMgmt("ConnectedTime")) & ","

                Debug.Print("     " & duration.ToString)  'https://docs.microsoft.com/en-us/windows/win32/termserv/win32-tsgatewayconnection

                Dim sIdleTime As String

                duration = ManagementDateTimeConverter.ToTimeSpan(objMgmt("IdleTime").ToString)            ' objMgmt("IdleTime").ToString '(duration.Days & ":" & duration.Hours & ":" & duration.Minutes & ":" & duration.Seconds & "s")

                sIdleTime = ""

                sIdleTime = duration.Days & ":" & duration.Hours & ":" & duration.Minutes ' & ":" & duration.Seconds & ""

                'sIdleTime = duration.Minutes & ":" & duration.Seconds & ""

                If sIdleTime = "0:0:0" Then sIdleTime = "."

                Debug.Print("     " & sIdleTime) 'https://docs.microsoft.com/en-us/windows/win32/termserv/win32-tsgatewayconnection

                Debug.Print("     " & objMgmt("NumberOfKilobytesReceived").ToString)  'https://docs.microsoft.com/en-us/windows/win32/termserv/win32-tsgatewayconnection

                Debug.Print("     " & objMgmt("ClientAddress").ToString)  'https://docs.microsoft.com/en-us/windows/win32/termserv/win32-tsgatewayconnection

                sTXT = sTXT & objMgmt("ClientAddress").ToString & ","

                Debug.Print("     " & objMgmt("ConnectedResource").ToString)  'https://docs.microsoft.com/en-us/windows/win32/termserv/win32-tsgatewayconnection

                sTXT = sTXT & objMgmt("ConnectedResource").ToString & ","

                sTXT = sTXT & sIdleTime & ","

            Catch ex As Exception

                Debug.Print("ex = " & ex.Message.ToString)

            End Try

            sTXT += "" & "," & vbCrLf

        Next

        Return sTXT

    End Function

https://docs.microsoft.com/en-us/windows/win32/termserv/terminal-services-gateway-classes

Remove Domain Name (NetBIOS) dynamically

Replace(sName, Environment.UserDomainName & "\", "")

.