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

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: BirdyB
BirdyB 14.07.2016 um 10:07:16 Uhr
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.
Mitglied: pixel0815
pixel0815 14.07.2016 um 13:17:19 Uhr
Goto Top
Hi BirdyB,

wie sieht nun dein fertiges Skript aus?

Gruß
Pixel0815
Mitglied: BirdyB
BirdyB 14.07.2016 um 14:01:11 Uhr
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
...