Lokalen Benutzer anlegen

uncle_scrooge
Beiträge: 650
Registriert: 21 Feb 2012, 12:03
Wohnort: Mainz

Re: Lokalen Benutzer anlegen

Beitrag von uncle_scrooge »

>>nichts in die Registry geschrieben.
Dann bin ich außen vor.
Bevor ich mich unfreundlich geäußert habe, wurde das bei mir getestet.
Die Einträge wurden sauber geschrieben.
Funktioniert hat es zwar nicht, da noch
set "DefaultDomain" = REG_SZ:"$LocalDomain$"
fehlte.
($LocalDomain$ am besten über %PCNAME% definieren.)

Leider spuckt mir (uns) Microsoft weiter in die Suppe.
Selbst mit korrekten Einträgen, egal, ob manuell, oder über ein OPSI-Skript, mault das System beim AutoLogin über einen falschen Benutzer, bzw. Passwort. (Mit dem angeblich falschen Benutzer/Passwort kann ich mich problemlos manuell anmelden.)
Erst ein Aufruf control userpasswords2 und einmal Häkchen "Benutzer müssen....." setzen, Anwenden, Häkchen wieder raus, Anwenden machte den AutoLogon möglich.
Ob, und wie, man das automatisieren kann? Keine Ahnung.
dslthomas
Beiträge: 86
Registriert: 26 Mär 2012, 15:49

Re: Lokalen Benutzer anlegen

Beitrag von dslthomas »

Hmm,- wenn das eh nicht funktioniert, wäre das doof...

ich weiß nicht ob ich den PCNAME richtig definiert habe, aber selbst wenn nicht, so trägt er noch nicht mal ansatzweise etwas in meine Registry ein:

Code: Alles auswählen

[Actions]
requiredWinstVersion >= "4.11.2.1"
 
setLogLevel=3
DefVar $ProductName$
DefVar $local_user$
DefVar $Group$
DefVar $SearchResult$
DefVar $flag_active$
DefVar $val_userpasswd$
DefVar $val_username$
DefVar $val_groupmember$
DefVar $val_expires$
DefVar $UserExists$
DefVar $UserGroup$
DefVar $date_tomorrow$
DefVar $pwd_expires$
DefVar $val_autologin$
DefVar $pcname$
 
DefStringlist $ResultList$
DefStringlist $ResultList2$
DefStringlist $ResultList3$
 
sub_get_properties
 
comment "get the name of the admin group"
comment "using psgetsid from sysinernals pstools"

set $pcname$ = "%PCNAME%" 

if $UserGroup$ = "Administratoren"
set $ResultList$ = getOutStreamFromSection("DosInAnIcon_get_admin_group")
endif
 
if $UserGroup$ = "Benutzer"
set $ResultList$ = getOutStreamFromSection("DosInAnIcon_get_user_group")
endif
 
if $UserGroup$ = "Gaeste"
set $ResultList$ = getOutStreamFromSection("DosInAnIcon_get_guest_group")
endif
 
set $Group$ = takeString(6,$ResultList$)
set $Group$ = takeString(1,splitstring($Group$,"\"))
 
comment "Check if user exists."
comment "If user exists, the password will be altered. Otherwise, the user will be created."
set $ResultList2$ = getOutStreamFromSection("DosInAnIcon_checkuser")
set $UserExists$ = takeString(0,$ResultList2$)
 
setLogLevel=0
 
comment "create our local user"
if $UserExists$ = "no"
	DosInAnIcon_makeadmin
else
	DosInAnIcon_alter_pw
endif
 
setLogLevel=3
 
comment "Enables or disables the user."
comment "flag_active is set to 'no' by the product properties for not opening accidently a security risk *g*."
if $flag_active$ = "on"
	DosInAnIcon_enable_admin
else
	DosInAnIcon_disable_admin
endif
 
set $ResultList3$ = getOutStreamFromSection("DosInAnIcon_get_date_tomorrow")
set $date_tomorrow$ = takeString(2,$ResultList3$)
;set $date_tomorrow$ = takeString(1,splitstring(" ",$date_tomorrow$))
 
if $val_expires$ = "never"
	DosInAnIcon_expires_never
else
	DosInAnIcon_expires_tomorrow
endif
 
if $pwd_expires$ = "never"
        DosInAnIcon_pwd_expires_never
endif

ExitWindows /Reboot

[sub_get_properties]
comment "flag_active"
comment "description: User active"
Set $flag_active$ = GetProductProperty("flag_active", "off")
 
comment "val_userpasswd"
comment "description: password"
Set $val_userpasswd$ = GetProductProperty("val_userpasswd", "SecurePW!")
 
comment "val_username"
comment "description: admin username"
set $local_user$= GetProductProperty("val_username", "locsupp")
 
comment "val_groupmember"
comment "description: Groupemembership"
set $UserGroup$= GetProductProperty("val_groupmember", "Administratoren")
 
comment "val_expires"
comment "description: expires"
set $val_expires$ = GetProductProperty("val_expires", "tomorrow")
 
comment "pwd_expires"
comment "description: pwd expires"
set $pwd_expires$ = GetProductProperty("pwd_expires", "never")

comment "val_autologin"
comment "description: automatischer login"
set $val_autologin$ = GetProductProperty("val_autologin", "1")
  
[DosInAnIcon_checkuser]
@echo off
net user $local_user$ >nul 2>&1 && echo yes || echo no
 
[DosInAnIcon_get_admin_group]
@echo off
"%ScriptPath%\psgetsid.exe" /accepteula S-1-5-32-544
 
[DosInAnIcon_get_user_group]
@echo off
"%ScriptPath%\psgetsid.exe" /accepteula S-1-5-32-545
 
[DosInAnIcon_get_guest_group]
@echo off
"%ScriptPath%\psgetsid.exe" /accepteula S-1-5-32-547
 
[DosInAnIcon_makeadmin]
NET USER $local_user$ $val_userpasswd$ /ADD /comment:"Lokaler User erstellt durch OPSI" /fullname:"Citrix User Elbe" /passwordchg:no /passwordreq:yes
NET LOCALGROUP $Group$ /ADD $local_user$
 
[DosInAnIcon_alter_pw]
NET USER $local_user$ $val_userpasswd$
 
[DosInAnIcon_enable_admin]
NET USER $local_user$ /active:yes
 
[DosInAnIcon_disable_admin]
NET USER $local_user$ /active:no
 
[DosInAnIcon_get_date_tomorrow]
%ScriptPath%\morgen.bat
 
[DosInAnIcon_expires_never]
NET USER $local_user$ /expires:never
 
[DosInAnIcon_pwd_expires_never]
; Fix siehe: https://forum.opsi.org/viewtopic.php?f=5&t=7326
wmic useraccount where name='$local_user$' set PasswordExpires=FALSE
 
[DosInAnIcon_expires_tomorrow]
NET USER $local_user$ /expires:$date_tomorrow$

Registry_PathPatch /sysnative
;Sonst landet das Zeugs in HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon

[Registry_PathPatch]
; Set system variable
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
set "AutoAdminLogon" = REG_SZ:"$val_autologin$"
set "DefaultUserName" = REG_SZ:"$val_username$"
set "DefaultUserPassword" = REG_SZ:"$val_userpasswd$"
set "DefaultDomain" = REG_SZ:"$LocalDomain$"
uncle_scrooge
Beiträge: 650
Registriert: 21 Feb 2012, 12:03
Wohnort: Mainz

Re: Lokalen Benutzer anlegen

Beitrag von uncle_scrooge »

Sigh.
Wenn im Norden das Wetter auch nur ansatzweise passabel ist, nimm Dir mindestens eine Stunde Auszeit, und geh mal um den Block.

Du hast am (logischen) Ende des Skriptes, also vor Beginn der ganzen Sektionen, ein ExitWindows /Reboot.
Das führt, wie der Name schon suggeriert, einen Neustart durch.
Dein Aufruf für Registry_PathPatch /sysnative kommt aber erst kilometerweit dahinter.
Und wird verständlicherweise nie ausgeführt.

//Das jetzt nicht in den falschen Hals bekommen:
Bevor Du über einen Einsatz von OPSI nachdenkst, solltest Du Dir in Ruhe die Handbücher zu Gemüte führen.
Und verstehen, wie ein WINST-Skript aufgebaut ist, und wie es abläuft.
Sich ohne Sinn und Verstand etwas zusammenzukopieren mag funktionieren. Aber im Normalfall fällt es einem auf die Füße. Unabhängig vom eingesetzten Produkt. Ich spreche durchaus aus Erfahrung.
dslthomas
Beiträge: 86
Registriert: 26 Mär 2012, 15:49

Re: Lokalen Benutzer anlegen

Beitrag von dslthomas »

Jep,- da hast du recht.... der Reboot-Part ist mit versehentlich in die Dokumentation geraten. Das ist eigentlich ganz am Ende und natürlich nicht mitten drinnen

In den falschen Hals bekomme ich das auf gar keinen Fall denn du hast ja absolut recht. Das Projekt OPSI soll ja letztlich auch nicht wirklich komplett von mir betreut werden. Ich brauche halt nur etwas für Geschäftsführung. Wenn die sehen dass so eine Installation mit allem drum und dran einmal funktioniert, kann ich dann Support dafür einkaufen. Allein könnte ich das gar nicht bewältigen und dafür haben wir zu viele Standorte.
uncle_scrooge
Beiträge: 650
Registriert: 21 Feb 2012, 12:03
Wohnort: Mainz

Re: Lokalen Benutzer anlegen

Beitrag von uncle_scrooge »

>>Das ist eigentlich ganz am Ende und natürlich nicht mitten drinnen
Dann stell' bitte das 'richtige' Skript noch mal hier ein.
dslthomas
Beiträge: 86
Registriert: 26 Mär 2012, 15:49

Re: Lokalen Benutzer anlegen

Beitrag von dslthomas »

OK,- gern,- hier noch mal das komplette Script, so wie ich es versuche einzusetzen:

Code: Alles auswählen

[Actions]
requiredWinstVersion >= "4.11.2.1"
 
setLogLevel=3
DefVar $ProductName$
DefVar $local_user$
DefVar $Group$
DefVar $SearchResult$
DefVar $flag_active$
DefVar $val_userpasswd$
DefVar $val_username$
DefVar $val_groupmember$
DefVar $val_expires$
DefVar $UserExists$
DefVar $UserGroup$
DefVar $date_tomorrow$
DefVar $pwd_expires$
DefVar $val_autologin$
DefVar $pcname$
 
DefStringlist $ResultList$
DefStringlist $ResultList2$
DefStringlist $ResultList3$

ShowBitmap "%scriptpath%\psc-lokaler-user.png" "Usereinrichtung"

sub_get_properties
 
comment "get the name of the admin group"
comment "using psgetsid from sysinernals pstools"

set $pcname$ = "%PCNAME%" 

if $UserGroup$ = "Administratoren"
set $ResultList$ = getOutStreamFromSection("DosInAnIcon_get_admin_group")
endif
 
if $UserGroup$ = "Benutzer"
set $ResultList$ = getOutStreamFromSection("DosInAnIcon_get_user_group")
endif
 
if $UserGroup$ = "Gaeste"
set $ResultList$ = getOutStreamFromSection("DosInAnIcon_get_guest_group")
endif
 
set $Group$ = takeString(6,$ResultList$)
set $Group$ = takeString(1,splitstring($Group$,"\"))
 
comment "Check if user exists."
comment "If user exists, the password will be altered. Otherwise, the user will be created."
set $ResultList2$ = getOutStreamFromSection("DosInAnIcon_checkuser")
set $UserExists$ = takeString(0,$ResultList2$)
 
setLogLevel=0
 
comment "create our local user"
if $UserExists$ = "no"
	DosInAnIcon_makeadmin
else
	DosInAnIcon_alter_pw
endif
 
setLogLevel=3
 
comment "Enables or disables the user."
comment "flag_active is set to 'no' by the product properties for not opening accidently a security risk *g*."
if $flag_active$ = "on"
	DosInAnIcon_enable_admin
else
	DosInAnIcon_disable_admin
endif
 
set $ResultList3$ = getOutStreamFromSection("DosInAnIcon_get_date_tomorrow")
set $date_tomorrow$ = takeString(2,$ResultList3$)
;set $date_tomorrow$ = takeString(1,splitstring(" ",$date_tomorrow$))
 
if $val_expires$ = "never"
	DosInAnIcon_expires_never
else
	DosInAnIcon_expires_tomorrow
endif
 
if $pwd_expires$ = "never"
        DosInAnIcon_pwd_expires_never
endif

[sub_get_properties]
comment "flag_active"
comment "description: User active"
Set $flag_active$ = GetProductProperty("flag_active", "off")
 
comment "val_userpasswd"
comment "description: password"
Set $val_userpasswd$ = GetProductProperty("val_userpasswd", "SecurePW!")
 
comment "val_username"
comment "description: admin username"
set $local_user$= GetProductProperty("val_username", "locsupp")
 
comment "val_groupmember"
comment "description: Groupemembership"
set $UserGroup$= GetProductProperty("val_groupmember", "Administratoren")
 
comment "val_expires"
comment "description: expires"
set $val_expires$ = GetProductProperty("val_expires", "tomorrow")
 
comment "pwd_expires"
comment "description: pwd expires"
set $pwd_expires$ = GetProductProperty("pwd_expires", "never")

comment "val_autologin"
comment "description: automatischer login"
set $val_autologin$ = GetProductProperty("val_autologin", "1")
  
[DosInAnIcon_checkuser]
@echo off
net user $local_user$ >nul 2>&1 && echo yes || echo no
 
[DosInAnIcon_get_admin_group]
@echo off
"%ScriptPath%\psgetsid.exe" /accepteula S-1-5-32-544
 
[DosInAnIcon_get_user_group]
@echo off
"%ScriptPath%\psgetsid.exe" /accepteula S-1-5-32-545
 
[DosInAnIcon_get_guest_group]
@echo off
"%ScriptPath%\psgetsid.exe" /accepteula S-1-5-32-547
 
[DosInAnIcon_makeadmin]
NET USER $local_user$ $val_userpasswd$ /ADD /comment:"Lokaler User erstellt durch OPSI" /fullname:"Citrix User Elbe" /passwordchg:no /passwordreq:yes
NET LOCALGROUP $Group$ /ADD $local_user$
 
[DosInAnIcon_alter_pw]
NET USER $local_user$ $val_userpasswd$
 
[DosInAnIcon_enable_admin]
NET USER $local_user$ /active:yes
 
[DosInAnIcon_disable_admin]
NET USER $local_user$ /active:no
 
[DosInAnIcon_get_date_tomorrow]
%ScriptPath%\morgen.bat
 
[DosInAnIcon_expires_never]
NET USER $local_user$ /expires:never
 
[DosInAnIcon_pwd_expires_never]
; Fix siehe: https://forum.opsi.org/viewtopic.php?f=5&t=7326
wmic useraccount where name='$local_user$' set PasswordExpires=FALSE
 
[DosInAnIcon_expires_tomorrow]
NET USER $local_user$ /expires:$date_tomorrow$

Registry_PathPatch /sysnative
;Sonst landet das Zeugs in HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon

[Registry_PathPatch]
; Set system variable
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
set "AutoAdminLogon" = REG_SZ:"$val_autologin$"
set "DefaultUserName" = REG_SZ:"$val_username$"
set "DefaultUserPassword" = REG_SZ:"$val_userpasswd$"
set "DefaultDomain" = REG_SZ:"$LocalDomain$"
An meiner Registry ändert er rein gar nicht. Komischer Weise fliegt das AutoAdminLogin=1 nach einem Reboot sofort wieder raus (wird also zurück auf 0 gestellt)
uncle_scrooge
Beiträge: 650
Registriert: 21 Feb 2012, 12:03
Wohnort: Mainz

Re: Lokalen Benutzer anlegen

Beitrag von uncle_scrooge »

jammerzeterschluchzheul

So sieht es am Ende Deines Skriptes aus:

Code: Alles auswählen

[DosInAnIcon_expires_tomorrow]
NET USER $local_user$ /expires:$date_tomorrow$

Registry_PathPatch /sysnative
;Sonst landet das Zeugs in HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon

[Registry_PathPatch]
Eine WINST-Sektion beginnt immer mit [SektionsName]. Und hört erst dann auf, wenn sie wieder auf eckige Klammern [] trifft.
Im Klartext: Der Aufruf Registry_PathPatch /sysnative wird von WINST nicht als eigenständiger Call, sondern als Teil der Sektion DosInAnIcon_expires_tomorrow gesehen.
Und diese Sektion wird nur dann aufgerufen, wenn Dein Property val_expires auf 'tomorrow' steht.
Schieb' also den Aufruf oberhalb der Sektion [sub_get_properties]

Daß AutoAdminLogon auf 0 gesetzt wird (wobei ich mich frage, wie der auf 1 stehen konnte, wenn das doch alles nicht funktioniert....) ist normal, wenn DefaultDomain leer ist, oder mit einem 'falschen' Wert versehen ist.
dslthomas
Beiträge: 86
Registriert: 26 Mär 2012, 15:49

Re: Lokalen Benutzer anlegen

Beitrag von dslthomas »

OK,- erst einmal 1000 Dank für deine Hilfe!!!!! Es gibt dinge, die ich gut kann und es gibt Dinge für die ich einfach zu doof bin. Ich bei uns im Unternehmen für die komplette Virenscannerlösungen (sowohl für die Virtualisierungsumgebung als auch für die Clients) zuständig. Der komplette ThinClient-Part gehört ebenfalls zu meinen Aufgaben und ganz nebenbei bin ich noch für die Virtualisierungslösung zuständig auf der über 230 VM´s auf 8 Hypervisor (wie heißt eigentlich die Mehrzahl von Hypervisor? :lol: ). Onsite-Support in Vertretung und die Digitalisierungen mit eigenen Netzwerken runden mein Aufgabengebiet ab. Aufgrund von Personalschwund kommt nun der Part des Imaging dazu. Hier hatte nun in OPSI die Zauberfee gesehen.

Dank Deiner ruhigen und vor allem Sachlichen Hilfe, habe ich es nun hin bekommen und sogar ein wenig verstanden was ich falsch gemacht habe. Allerdings hat sich deine Prophezeiung bewahrheitet. Die Werte werden korrekt in die Registry geschrieben (ok das mit dem Hostname habe ich auch nicht hin bekommen, daher habe ich zum testen den Hostnamen in Klartext rein geschrieben. Nach einem Reboot war Windows ja bemüht, aber wie du schon fest gestellt hast,- bleibt es bei den Bemühungen. Der wirkliche automatsiche Login wäre erst nach einem händischen control userpasswords2 möglich was dann aber den ganzen Vorgang in Frage stellt. Denn ob ich nun auch den User händisch anlege oder nicht,- speilt keine Rolle. Ich muss an den Rechner und damit ist wieder Handarbeit notwendig.

Ich hatte schon meine Mühe, die Install.wim zu zerpflücken alles raus zu nehmen was da nicht rein gehört und sämtliche lokalen GPOs und Profile mit rein zu packen (was auch immer sich MS dabei gedacht hat, diese ganzen Apps so fest mit einer Enterprise-Version zu verbandeln).

Wenn ich jetzt noch bedenke dass ich noch keine Lösung für die Zertifikate unserer internen Websites und Citrix habe (denn die Clients sind ja nicht in der Domäne), der automatische Login nicht funktioniert, werde ich wohl oder über weiter mit Imges arbeiten müssen.

1000 Dank!!!!!
Benutzeravatar
ThomasT
uib-Team
Beiträge: 529
Registriert: 26 Jun 2013, 12:26

Re: Lokalen Benutzer anlegen

Beitrag von ThomasT »

Hast du es mal über die Gruppenrichtlinie versucht?
http://www.grouppolicy.biz/2010/10/how- ... uto-logon/
Kein Support per DM!
_________________________
opsi support - https://www.uib.de/
For productive opsi installations we recommend support contracts.
Antworten