none
Terminals, Clientname, ThinClient RRS feed

  • Frage

  • moin,

    wir benötigen die echten Clientnamen wenn man sich von einem WYSE Terminal auf einen Windows Termins Server verbindet.

    leider liefert die Variable CLIENTNAME nicht den korrekten Namen.


    $client = $env:CLIENTNAME
    hat jemand eine einfacherer Lösung in Powershell dafü. Vielleicht gibt es doch diese Variable.

    unter DOS hatten wir es so gelöst. Zur Not muss ich sonst das nachbauen

    for /f "tokens=1-3" %%1 in ('query session %USERNAME% ^| find ">"') do set ses_num=%%3
    for /f "tokens=1-3" %%1 in ('reg query "HKCU\Volatile Environment\%ses_num%" /v CLIENTNAME') do set client_name=%%3

    echo %TIME%    %USERNAME%    on %COMPUTERNAME%        from %client_name%>> \\server\share\Lizenz\%USERNAME%.txt


    Chris


    Montag, 3. Februar 2020 06:41

Antworten

  • Moin,

    wenn "einfach" für Dich die Einbindung eines 3rd-Party-Moduls zulässt, möchte ich auf dieses alte Projekt von mir verweisen. Es gibt bald ein Update, aber vorerst nur mit korrekter Ausgabe der RDP-Protokollversion beim 10er Kernel. Insofern müsste für Deinen Zweck auch die jetzige Version reichen.

    Aus Interesse: und was steht in der normalen %CLIENTNAME%?


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert -- Chris -- Montag, 3. Februar 2020 07:04
    Montag, 3. Februar 2020 06:47
  • Hast Du das schon probiert?
    (Get-ItemProperty -Path 'HKCU:\Volatile Environment\*' -Name ClientName).ClientName


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    • Als Antwort markiert -- Chris -- Montag, 3. Februar 2020 12:31
    Montag, 3. Februar 2020 12:29
  • Mich hätte interessiert wie man auf den Wert mittels Powershell kommt. Der Schlüssel unter Volatile ist ja unterschiedlich und nie gleich?

    Der Subkey unter Volatile Environment ist die Session ID. Aus der leitet sich dann ggf. auch ein sitzungsspezifisches %TEMP% ab. Zu finden als Eigenschaft von Win32_Process - da mußt nur einen Prozess finden, der in Deiner aktuellen Session läuft :-) Ich hatte das seinerzeit so gelöst:

        myQuery = "SELECT SessionID,Name FROM Win32_Process WHERE ExecutablePath=""" & Replace( WScript.Fullname, "\", "\\" ) & """"

    Suche nach einem Prozess, in Dem dein aktuelles Skript läuft. Wenn UAC an ist und Du nicht als Admin läufst, siehst Du keine Prozesse anderer Benutzer - damit war das recht safe für mich.

    Geht natürlich auch mit "query session %username%" - das läuft halt auf Textmassage raus.


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    • Als Antwort markiert -- Chris -- Montag, 3. Februar 2020 13:59
    Montag, 3. Februar 2020 13:58

Alle Antworten

  • Moin,

    wenn "einfach" für Dich die Einbindung eines 3rd-Party-Moduls zulässt, möchte ich auf dieses alte Projekt von mir verweisen. Es gibt bald ein Update, aber vorerst nur mit korrekter Ausgabe der RDP-Protokollversion beim 10er Kernel. Insofern müsste für Deinen Zweck auch die jetzige Version reichen.

    Aus Interesse: und was steht in der normalen %CLIENTNAME%?


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert -- Chris -- Montag, 3. Februar 2020 07:04
    Montag, 3. Februar 2020 06:47
  • bei einem Windows Client steht bei $env:Clientname der richtige. Bei WSYSE Terminals bleibt es leer


    Chris

    Montag, 3. Februar 2020 06:53
  • Evgenij

    du bist ja auch ein Powershell Guru. Mich hätte interessiert wie man auf den Wert mittels Powershell kommt. Der Schlüssel unter Volatile ist ja unterschiedlich und nie gleich?


    Chris

    Montag, 3. Februar 2020 11:48
  • Hast Du das schon probiert?
    (Get-ItemProperty -Path 'HKCU:\Volatile Environment\*' -Name ClientName).ClientName


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    • Als Antwort markiert -- Chris -- Montag, 3. Februar 2020 12:31
    Montag, 3. Februar 2020 12:29
  • thxs

    viel leserlicher als

    for /f "tokens=1-3" %%1 in ('query session %USERNAME% ^| find ">"') do set ses_num=%%3
    for /f "tokens=1-3" %%1 in ('reg query "HKCU\Volatile Environment\%ses_num%" /v CLIENTNAME') do


    Chris

    Montag, 3. Februar 2020 12:31
  • viel leserlicher als ...

    ;-)  ... finde ich auch ...

    Aber Achtung: Es ist theoretisch möglich, dass diese Abfrage mehr als ein Ergebnis liefert.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Montag, 3. Februar 2020 12:54
  • Mich hätte interessiert wie man auf den Wert mittels Powershell kommt. Der Schlüssel unter Volatile ist ja unterschiedlich und nie gleich?

    Der Subkey unter Volatile Environment ist die Session ID. Aus der leitet sich dann ggf. auch ein sitzungsspezifisches %TEMP% ab. Zu finden als Eigenschaft von Win32_Process - da mußt nur einen Prozess finden, der in Deiner aktuellen Session läuft :-) Ich hatte das seinerzeit so gelöst:

        myQuery = "SELECT SessionID,Name FROM Win32_Process WHERE ExecutablePath=""" & Replace( WScript.Fullname, "\", "\\" ) & """"

    Suche nach einem Prozess, in Dem dein aktuelles Skript läuft. Wenn UAC an ist und Du nicht als Admin läufst, siehst Du keine Prozesse anderer Benutzer - damit war das recht safe für mich.

    Geht natürlich auch mit "query session %username%" - das läuft halt auf Textmassage raus.


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    • Als Antwort markiert -- Chris -- Montag, 3. Februar 2020 13:59
    Montag, 3. Februar 2020 13:58
  • ich habe jetzt ein paar Stichproben gemacht und keine zwei Einträge gefunden. Scheinbar kümmert sich Windows darum, dass hier die aktuelle Session in der Registry drinnen steht.

    dann würdeder Trick von Olaf

    (Get-ItemProperty -Path 'HKCU:\Volatile Environment\*' -Name ClientName).ClientName

    reichen.


    Chris

    Montag, 3. Februar 2020 14:06
  • Ja, in der Regel reicht das. Die meisten haben ja nicht mehrere Sessions auf dem gleichen Terminal Server offen :-)

    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Montag, 3. Februar 2020 14:53
  • Die meisten haben ja nicht mehrere Sessions auf dem gleichen Terminal Server offen :-)
    ... 's würde nach meiner Erfahrung eher auf eine Fehlkonfiguration hindeuten. ;-)

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Montag, 3. Februar 2020 16:13