none
Per WMI-Filter Client-IP (Nicht TS-Server-IP) auslesen. RRS feed

  • Frage

  • Hallo zusammen!

    Mein Kollege und ich möchten per WMI-Filter herausfinden, ob sich ein Client von Zuhause, oder von der Firma einwählt.
    Kurz zusammengefasst soll damit festgelegt werden, welcher Drucker verbunden, und als Standarddrucker verwendet werden soll.

    Folgendes haben wir schon versucht:

    SELECT * from Win32_IP4RouteTable WHERE (Mask='0.0.0.0' AND NextHop LIKE '192.168.20.%') or (Mask='0.0.0.0' AND NextHop LIKE '171.21.154.%')

    Nur leider liest der Filter nur die IP vom TS aus, was natürlich nicht weiterhilft.

    Es handelt sich hierbei um ein Windows Server 2008 R2

    Danke fürs lesen, vielleicht hat ja einer eine Idee.

    Freitag, 23. August 2013 07:53

Antworten

  • Du willst die IP des RDP-Clients in der TS-Session?

    Du brauchst ein Skript, das mit %clientname% und DNS-Auflösung (z.B. aus VBS per Win32_PingStatus) arbeitet. Und wenn Du das als Logonskript (oder über Windows NT\CurrentVersion\Winlogon\AppSetup) ausführst, funktioniert auch %clientname% nicht, da zu diesem Zeitpunkt noch nicht verfügbar. Dann musst Du HKCU\Volatile Environment\<SessionID>\Clientname aus der Registrierung holen:

    Dim oWSH : Set oWSH = CreateObject( "WScript.Shell" )
    Dim oWMI : Set oWMI = GetObject( "winmgmts:" )
    
    Dim SessionID, Clientname
    
    SessionID = GetSessionID( "" )
    Clientname = oWSH.RegRead( "HKCU\Volatile Environment\" &  SessionID & "\Clientname" )
    
    Function GetSessionID( strUsername )
        Dim myQuery, myCol, myObj, myRC, myUser
        If strUsername = "" Then strUsername = CreateObject( "WScript.Shell" ).Environment( "PROCESS" ).Item( "USERNAME" )
        myQuery = "Select * from Win32_Process where executablepath=""" & Replace( WScript.Fullname, "\", "\\" ) & """"
        Set myCol = oWMI.ExecQuery( myQuery )
        For Each myObj In myCol
            myRC = myObj.GetOwner( myUser )
            If myRC = 0 Then
                If StrComp( myUser, strUsername, vbTextCompare ) = 0 Then GetSessionID = myObj.SessionID
            End If
        Next
    End Function
    


    Martin

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    And if IT bothers me - coke bottle design refreshment :))

    Restore the forum design - my user defined Cascading Style Sheet!

    Freitag, 23. August 2013 09:15

Alle Antworten