72417
Goto Top

.bat ausführen ohne eingeloggten User

Moin,
ich mal wieder.
Mein Script läuft echt gut und tut fast alles, was es soll.
Also, nach dem wöchtenlichen Imagen, soll morgens um 7:10 das Script zur Druckerinstallation ausgeführt werden, damit die Leute ab 7:30 auch drucken können.

Die Drucker installiert und gibt er automatisch auch frei, führt das auch als Admin aus.
Mein problem ist jedoch, ich lasse das Script nach erfolgreicher Installation und Freigabe noch einen Logeintrag auf eine Samba-Share schreiben. Das macht das Script aber nur, wenn ich mich lokal als Admin anmelde, egal ob per Hand ausgeführt oder so wie gewünscht per AT. Wenn ich NICHT angemeldet bin, führt er das echo-command nicht aus/hat keinen Zugriff. Das ganze führe ich als NT AUTHORITY\SYSTEM per AT aus.
Hier da Script (in gekürzter Fassung):
::Drucker Installation für den Raum R_0524
if "%IP%"=="34" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0524" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "Brother DCP-7030 Printer" && goto ausgabe  

:: Die Ausgabe schreibt eine Logdatei / in die vorhandene Log-Datei für den 
:: jeweiligen Client mit einem angeschlossenen Drucker
	:ausgabe
	echo.[%date%]-[%time%]:Printerinstallation on host %COMPUTERNAME% was successful >> \\opsi\logshare\%COMPUTERNAME%.txt && goto end
	
:: Ende des Scripts
		:end
Muss irgendein Rechte-Problem sein denke ich. Die .bat kann ich aber nicht als "Administrator" per AT ausführen, denn wir haben ein Masterimage welches verteilt wird und er im AT dann testclient\Administrator zur Ausführung nutzen möchte (was natürlich auf den anderen Clients dann nicht funktioniert,deswegen NT AUTHORITY\SYSTEM)

Vielleicht hat jemand ja eine Idee, wie gesagt,geht nur um das Log schreiben, alles andere macht er korrekt.

MfG,
Chris

Content-Key: 151996

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

Printed on: April 25, 2024 at 22:04 o'clock

Mitglied: 60730
60730 Sep 29, 2010 at 12:37:38 (UTC)
Goto Top
moin,

leg einen User Log an, der ein Passwort wie Pr0t0k011 oder sowas ähnlich banales hat und der im \\opsi\logshare\ schreibrechte hat.
und dann schreib das script komplett um....(bzw. stlle durch ein goto end sicher, dass das log wirklich nur dann geschrieben wird, wenn es nach Erfolg "&&" und per goto angesprungen wurde)
::Logshare mappen
net use z: \\opsi\logshare\ Pr0t0k011 /user:sambadomain\Log
::Drucker Installation für den Raum R_0524
if "%IP%"=="34" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0524" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "Brother DCP-7030 Printer" && goto ausgabe  

goto end
:: Die Ausgabe schreibt eine Logdatei / in die vorhandene Log-Datei für den 
:: jeweiligen Client mit einem angeschlossenen Drucker
	:ausgabe
	echo.[%date%]-[%time%]:Printerinstallation on host %COMPUTERNAME% was successful >> z:\%COMPUTERNAME%.txt && goto end
	
:: Ende des Scripts
		:end
if exist z:\. net use Z: /d /y

Gruß
Mitglied: 72417
72417 Sep 30, 2010 at 10:26:11 (UTC)
Goto Top
Danke vielmals, hast mir ja sehr viel geholfen beidem Script. Habe es etwas abändern müssen, da ich mit dem Netzlaufwerk nicht so richtig klar kam (lag wohl daran da ich schon eine Share auf den Clients von diesem Server eingebunden habe ;) )

Hier nun noch einmal das komplette Script (PWs editiert)
vielleicht braucht es ja irgendwer mal face-smile

@echo off
:: Logshare mappen
net use \\opsi\logshare PASSWORT /user:sambadomain\USER
:: Hier wird die IP ausgelesen und in die Variable "IP" abgespeichert  
::for /F "tokens=2,3,4,5 delims=:. " %%a in ('ipconfig^|find /I "IP"') do set IP=%%a.%%b.%%c.%%d  
::da es wohl es nur um das letzte Oktet geht, ansonsten das Commando aus Zeile 5
for /F "tokens=5 delims=:. " %%a in ('ipconfig^|find /I "IP"') do set IP=%%a  

:: Nun beginnt er seine Abfrage und testet die Variable ob die eigene IP bei den Gesuchten dabei ist
::Drucker Installation für den Raum R_Test
if "%IP%"=="28" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_test" /f %windir%\druckertreiber\oki\C5450n\Ok72s2lu.inf /r "usb001" /m "OKI C5450n(PCL)" && goto ausgabe  
goto end
::Drucker Installation für den Raum R_0524
if "%IP%"=="34" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0524" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "Brother DCP-7030 Printer" && goto ausgabe  

::Drucker Installation für den Raum R_0532
if "%IP%"=="42" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0532" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "Brother DCP-7030 Printer" && goto ausgabe  

::Drucker Installation für den Raum R_0542
if "%IP%"=="53" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R0542" /f %windir%\druckertreiber\brother\7030\brpr7030.inf /r "usb001" /m "Brother DCP-7030 Printer" && goto ausgabe  

::Drucker Installation für den Raum R_1534
if "%IP%"=="66" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R1534" /f %windir%\druckertreiber\brother\1450\OEMHL01A.INF /r "usb001" /m "Brother HL-1450 series" && goto ausgabe  

::Drucker Installation für den Raum R_1544
if "%IP%"=="73" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R1544" /f %windir%\druckertreiber\brother\1450\OEMHL01A.INF /r "usb001" /m "Brother HL-1450 series" && goto ausgabe  

::Drucker Installation für den Raum R_1550
if "%IP%"=="82" rundll32 printui.dll,PrintUIEntry /if /Z /b "Drucker_R1550" /f %windir%\druckertreiber\oki\B4350\B43503e.inf /r "usb001" /m "OKI B4350(PCL)" && goto ausgabe  

::Beendung der Schleife mit einem Log für den jeweiligen Client
echo.An diesem Computer ist kein Drucker angeschlossen >> \\opsi\logshare\%date%_%COMPUTERNAME%_log.txt
	
:: Die Ausgabe schreibt eine Logdatei / in die vorhandene Log-Datei für den 
:: jeweiligen Client mit einem angeschlossenen Drucker
	:ausgabe
	echo.[%date%]-[%time%]:Printerinstallation on host %COMPUTERNAME% was successful >> \\opsi\logshare\Drucker_Log.txt && goto end
	
:: Ende des Scripts
	:end