none
Laufwerk legen auf Windows 2008R2 Terminalserver RRS feed

  • Frage

  • Hallo,

    ich habe folgendes Problem:

    Ich versuche ein Laufwerk in einer TS-Session bereitzustellen, was physisch auf dem Remote-PC liegt. Dazu benutze ich die GPO/CSE. Dort definiere ich ein Laufwerk E: mit dem Pfad \\%CLIENTNAME%\TSTemp. Das funktioniert auf 3 Terminalservern, die alle Windows2003R2 sind. Auf dem 4. (2008R2) geht das nicht. Wenn ich aber den Name des PCs eintrage funktioniert das. Wenn ich das Laufwerk über einen Script lege, funktionierts auch.

    Wenn ich Clientrichtlinienergebnisse anzeigen lasse erscheint der Fehler  0x80070035.

    Ich habe den verdacht, das die Variable %CLIENTNAME% zu diesem Zeitpunkt im 2008er TS noch nicht aufgelöst werden kann.

    Hat jemand eine Lösung für das Problem?


    Rene Hubert - Systemadministrator - DRK KH Lichtenstein gGmbH



    • Bearbeitet Hubi Mittwoch, 13. März 2013 13:03
    Mittwoch, 13. März 2013 09:24

Antworten

  • Am 13.03.2013 10:24, schrieb Hubi:
    > Ich habe den verdacht, das die Variable %CLIENTNAME% zu diesem
    > Zeitpunkt im 2008er TS noch nicht aufgelöst werden kann.
     
    Exakt. Nicht nur zu diesem Zeitpunkt, sondern auch zu einem beliebigen
    späteren Zeitpunkt geht das nicht. Mußt Du skripten... Den Clientnamen
    bekommst Du aus HKCU\Volatile Environment\<SessionID>\Clientname.
     
    Beispielcode in VBS:
     
    SessionID = GetSessionID( "" )
    Sessionname = oWsh.RegRead( "HKCU\Volatile Environment\" & SessionID &
    "\Sessionname" )
    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
     
    In Powershell oder .NET kommst Du direkt an die SessionID ran. Dafür
    kann ich aber nix liefern ;-)
     
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    • Als Antwort markiert Hubi Donnerstag, 14. März 2013 12:43
    Donnerstag, 14. März 2013 11:28

Alle Antworten

  • Am 13.03.2013 10:24, schrieb Hubi:
    > Ich habe den verdacht, das die Variable %CLIENTNAME% zu diesem
    > Zeitpunkt im 2008er TS noch nicht aufgelöst werden kann.
     
    Exakt. Nicht nur zu diesem Zeitpunkt, sondern auch zu einem beliebigen
    späteren Zeitpunkt geht das nicht. Mußt Du skripten... Den Clientnamen
    bekommst Du aus HKCU\Volatile Environment\<SessionID>\Clientname.
     
    Beispielcode in VBS:
     
    SessionID = GetSessionID( "" )
    Sessionname = oWsh.RegRead( "HKCU\Volatile Environment\" & SessionID &
    "\Sessionname" )
    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
     
    In Powershell oder .NET kommst Du direkt an die SessionID ran. Dafür
    kann ich aber nix liefern ;-)
     
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    • Als Antwort markiert Hubi Donnerstag, 14. März 2013 12:43
    Donnerstag, 14. März 2013 11:28
  • Dann is das ja ein Schritt zurück, weil auf dem 2003er geht das via CSE. Ich wollte nur meine alten Scripte so gut wie weg bekommen.

    Muss ichs halt so lassen wie ichs jetzt hab: kleiner Script mit "net use e: \\%CLIENTNAME%\TSTemp".

    Trotzdem vielen Dank.


    Rene Hubert - Systemadministrator - DRK KH Lichtenstein gGmbH

    Donnerstag, 14. März 2013 12:42