birdyb
Goto Top

Batch-Skript für Druckerzuweisung auf Terminalserver - Variablenproblem

Hallo zusammen,
ich habe für die Zuweisung der Standarddrucker anhand des Clients für eine Terminalserversession folgendes Skript im Einsatz:
@echo off
for /f "delims==" %%i in ('findstr /e "=%clientname%" "\\domain.intern\NETLOGON\DruckerZuweisung.txt" ') do (  
rundll32 printui.dll,PrintUIEntry /y /n "%%i"  
echo %date% - %time% - %USERNAME%: Drucker %%i an Terminalsession für %clientname% zugewiesen. >> C:\log\Drucker.log
)
echo %USERNAME% %CLIENTNAME% >> c:\log\Drucker.log
exit /b
(Die echos dienen zu Debugzwecken)
Das Skript wird per GPO als Logon-Skript zugewiesen.
Wenn ich das Skript manuell aufrufe, erledigt es seinen Job auch einwandfrei.
Beim Logon scheint jedoch die Variable %CLIENTNAME% (noch) nicht gesetzt zu sein, daher schreibt mir das Skript nur den Benutzernamen in das Logfile.
Wie kann ich dieses Problem beheben? Würdet Ihr eine andere Lösung für die Druckerzuweisung empfehlen?

Systemumgebung ist Windows Server 2012, die Clients sind IGEL oder Win8

Danke für eure Hilfe!


Berthold

Content-Key: 309793

Url: https://administrator.de/contentid/309793

Printed on: April 18, 2024 at 00:04 o'clock

Member: BirdyB
BirdyB Jul 14, 2016 at 08:07:16 (UTC)
Goto Top
Ich hab da dann doch noch was bei Frau Google entdeckt:
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  

Gibt auch bei der Anmeldung den richtigen Clientname zurück.
Member: pixel0815
pixel0815 Jul 14, 2016 at 11:17:19 (UTC)
Goto Top
Hi BirdyB,

wie sieht nun dein fertiges Skript aus?

Gruß
Pixel0815
Member: BirdyB
BirdyB Jul 14, 2016 at 12:01:11 (UTC)
Goto Top
Einfach beides zusammengeklöppelt face-wink
@echo off

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  
)

for /f "delims==" %%i in ('findstr /e "=%client_name%" "\\domain.intern\NETLOGON\DruckerZuweisung.txt" ') do (  
rundll32 printui.dll,PrintUIEntry /y /n "%%i"  
echo %date% - %time% - %USERNAME%: Drucker %%i an Terminalsession für %client_name% zugewiesen. >> C:\log\Drucker.log
)
echo %date% - %time% - %USERNAME% - %CLIENT_NAME% >> c:\log\Drucker.log
exit /b

und dann eben noch in der DruckerZuweisung.txt

;Printer=Hostname(Client)
\\PS01\Drucker1=Client1
\\PS01\Drucker2=Client2
...