Seite 1 von 1

[gelöst] Userloginscript mit net use

Verfasst: 16 Dez 2016, 09:12
von w4gi
Hallo liebe Opsi Community,

ich versuche momentan ein UserLoginScript zu schreiben, mit dem ich ein Netzlaufwerk mit einem bestimmten Buchstaben löschen und ein anderes dafür hinzufügen kann.

Mein Script sieht so aus:

DefVar $Share$
DefVar $Storage$
DefVar $ShareLetter$

set $Storage$ = "storage.domain"
set $ShareLetter$ = "Y"
set $Share$ = getProductProperty("Sharename", "Test")

DosBatch_share_del
DosBatch_share

[DosBatch_share_del]
net use $ShareLetter$: /delete /yes

[DosBatch_share]
net use $ShareLetter$: \\$Storage$\$Share$

Zum testen habe ich mir noch ein pause eingebaut und bekomme die Meldung, dass er kein Laufwerk mit dem Buchstaben finden kann. Jedoch ist eines auf den User bezogen gemountet.

Im Log sehe ich beim userlogin:

(15432) [1] [Dez 16 08:50:45:210] [netzlaufwerke] ============ Version 4.11.5.14 script "p:\netzlaufwerke\login.ins"
(15433) [1] [Dez 16 08:50:45:210] [netzlaufwerke] used script encoding: cp1252
(15434) [1] [Dez 16 08:50:45:210] [netzlaufwerke] used system encoding: cp1252
(15435) [1] [Dez 16 08:50:45:210] [netzlaufwerke] start: 2016-12-16 08:50:45
(15436) [1] [Dez 16 08:50:45:210] [netzlaufwerke] installing product: netzlaufwerke_1.0-1
(15437) [1] [Dez 16 08:50:45:210] [netzlaufwerke] on client named "pcname.domain"
(15438) [1] [Dez 16 08:50:45:210] [netzlaufwerke] loggedin user "user"
(15439) [1] [Dez 16 08:50:45:210] [netzlaufwerke] opsi-script running as "SYSTEM"
(15440) [1] [Dez 16 08:50:45:210] [netzlaufwerke] opsi-script running with admin privileges
(15441) [1] [Dez 16 08:50:45:210] [netzlaufwerke] opsi-script running in loginscript mode
(15442) [1] [Dez 16 08:50:45:210] [netzlaufwerke] using context: DOMAIN\user with SID ...........

(14892) [5] [Dez 15 14:21:18:801] [netzlaufwerke] DosBatch_Filialordner_del
(14893) [6] [Dez 15 14:21:18:802] [netzlaufwerke] c:\opsi.org\tmp\_opsiscript_Kz92Mt09.cmd saved back
(14894) [6] [Dez 15 14:21:18:802] [netzlaufwerke] Executing "cmd.exe" /C c:\opsi.org\tmp\_opsiscript_Kz92Mt09.cmd
(14895) [6] [Dez 15 14:24:03:183] [netzlaufwerke] ExitCode 0
(14896) [6] [Dez 15 14:24:03:184] [netzlaufwerke] Delete "c:\opsi.org\tmp\_opsiscript_*"
(14897) [6] [Dez 15 14:24:03:184] [netzlaufwerke] Search "c:\opsi.org\tmp\"
(14898) [6] [Dez 15 14:24:03:184] [netzlaufwerke] Search "c:\opsi.org\tmp\_opsiscript_*"
(14899) [6] [Dez 15 14:24:03:184] [netzlaufwerke] File "c:\opsi.org\tmp\_opsiscript_Jh45Sr66.cmd"
(14900) [6] [Dez 15 14:24:03:184] [netzlaufwerke] The file is 0 day(s) old, no deletion

Ich vermute, dass mein Problem ist, dass das Script mit dem SYSTEM User läuft und nicht mit dem aktuellen, der sich anmeldet, dadurch findet er mit "net use delete" natürlich kein Laufwerk. Beim mount selber, braucht er dann einen Benutzer plus Passwort, anstatt den aktuellen zunehmen. Hat vielleicht jemand schon ein ähnliches Problem gehabt? Oder verwende ich das Userloginscript hier komplett falsch?

Vielen Dank

Re: Userloginscript mit net use

Verfasst: 19 Dez 2016, 10:18
von ngbr
Hi w4gi,

Ich vermute, dass mein Problem ist, dass das Script mit dem SYSTEM User läuft und nicht mit dem aktuellen, der sich anmeldet, dadurch findet er mit "net use delete" natürlich kein Laufwerk. Beim mount selber, braucht er dann einen Benutzer plus Passwort, anstatt den aktuellen zunehmen. Hat vielleicht jemand schon ein ähnliches Problem gehabt? Oder verwende ich das Userloginscript hier komplett falsch?
opsi-Scripte, auch die Logon-Scripte, laufen als User System. In Logon- Scripten werden entsprechende Pfade und Umgebungsvariablen des anmeldenden Users genutzt. Bisher wird das Logon-Script jedoch noch nicht im echten User-Kontext ausgeführt. Allerdings wird es hier in Bälde Neuerungen geben, sprich Ausführung im echten Userkontext.

Re: Userloginscript mit net use

Verfasst: 20 Dez 2016, 14:29
von w4gi
Hi ngbr,

vielen Dank für deine Antwort und Hilfe, also war ich mit meiner Vermutung nicht ganz so falsch.

Sollte wer mal so ein ähnliches Problem haben, habs jetzt ohne Login Script, sondern mit einem ganz normalen Setup gelöst. Ist zwar nicht wirklich eine schöne Lösung, aber erfüllt für mich den Zweck momentan.

[Actions]
DefVar $FilialordnerShare$
DefVar $Storage$
DefVar $FilialordnerLetter$
DefVar $Benutzer$
DefVar $ErrorLevel$

set $Benutzer$ = "%username%"
set $ErrorLevel$ = "%errorlevel%"

set $Storage$ = "share.domain.at"
set $FilialordnerLetter$ = "Y"

set $FilialordnerShare$ = getProductProperty("Filialordner", "fil_1")

DosInAnIcon_Filialordner

[DosInAnIcon_Filialordner]
ECHO @echo off > "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO if%^^% ^%%%^^%username^%%==Administrator GOTO END >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO reg query "HKEY_CURRENT_USER\Network\$FilialordnerLetter$" >nul 2>&1 >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO if %%errorlevel%%==0 GOTO DEL >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO if %%errorlevel%%==1 GOTO INS >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO :DEL >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO echo Delete Network Drive with letter $FilialordnerLetter$: >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO net use $FilialordnerLetter$: /delete /yes >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO :INS >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO echo Mount Network Drive $Storage$: $FilialordnerShare$ >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO net use $FilialordnerLetter$: \\$Storage$\$FilialordnerShare$ >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat"
ECHO :END >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\filialordner.bat