Anpassungen nach der Installation

Antworten
dslthomas
Beiträge: 87
Registriert: 26 Mär 2012, 15:49

Anpassungen nach der Installation

Beitrag von dslthomas »

Moin, Moin,

ich habe nun erfolgreich Windows installiert und auch einige Programme via OPSI installiert. Nun muss aber einiges noch am System eingestellt wie zum Beispiel der automatische Login des Standardusers. Dafür wollte ich ein eigenes Paket "basteln" welches am besten nach der Installation des BS ausgeführt wird und zum Beispiel dafür sorgt, dass der Standarduser automatisch eingeloggt wird sofern dies als Option ausgewählt wurde. Ähnlich dem opsi-client-agent wo ich ja auch einige Property-Konfigurationen vornehmen kann.

Frage: Wie stelle ich das am dümmsten an? Hat vielleicht jemand ein Beispiel dafür wo ich mir das ganze "abgucken" und umbauen kann?

Danke und Gruß aus Hamburg


___________________________________________________ E D I T_______________________________________________________

Also jetzt wird der Hund in der Pfanne verrückt. Über 60 Versionen habe ich jetzt ausprobiert und komme einfach nicht weiter. Ich habe etwas gefunden was recht gut passt,- nur der automatische Userlogin funktioniert nicht. Dafür habe ich am Ende (im Abschnitt [Registry_install]) aber die entsprechenden Zeilen eingefügt die eben dafür sorgen sollen. Leider tut sich da so gar nichts. Dabei ist es auch völlig unerheblich in welcher Konstellation oder an welcher Stelle ich das ganze einfüge. Es tut sich einfach nichts. Was mache ich hier falsch? Das ist alles super kompliziert und wenn das so weiter geht, wird OPSI nier zum Einsatz weil ich in 10 Jahren noch nicht fertig bin damit....

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$

 
DefStringlist $ResultList$
DefStringlist $ResultList2$
DefStringlist $ResultList3$
 
sub_get_properties
 
comment "get the name of the admin group"
comment "using psgetsid from sysinernals pstools"
 
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 "Überprüfe ob der Benutzer schon vorhanden ist."
comment "Wenn der Benutzer vorhanden ist, wird das Passwort geändert. Andernfalls wird der Benutzer erstellt."
set $ResultList2$ = getOutStreamFromSection("DosInAnIcon_checkuser")
set $UserExists$ = takeString(0,$ResultList2$)
 
setLogLevel=0
 
comment "Erstellt einen lokalen Benutzer"
if $UserExists$ = "no"
	DosInAnIcon_makeadmin
else
	DosInAnIcon_alter_pw
endif
 
setLogLevel=3
 
comment "Aktiviert oder deaktiviert den Benutzer."
comment "flag_active ist auf ON."
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$ = "niemals"
	DosInAnIcon_expires_never
else
	DosInAnIcon_expires_tomorrow
endif
 
if $pwd_expires$ = "niemals"
        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", "123456")
 
comment "val_username"
comment "description: admin username"
set $local_user$= GetProductProperty("val_username", "testuser")
 
comment "val_groupmember"
comment "description: Groupemembership"
set $UserGroup$= GetProductProperty("val_groupmember", "Administratoren")
 
comment "val_expires"
comment "description: expires"
set $val_expires$ = GetProductProperty("val_expires", "Morgen")
 
comment "pwd_expires"
comment "description: pwd expires"
set $pwd_expires$ = GetProductProperty("pwd_expires", "niemals")
	
[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 durch die testfirma erstellt" /fullname:"testuser" /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:niemals
 
[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_install]
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
set "AutoAdminLogon" = REG_SZ:"1"
set "DefaultUserName" = REG_SZ:"$local_user$"
set "DefaultPassword" = REG_SZ:"$val_userpasswd$" 
hadro
Beiträge: 57
Registriert: 14 Mär 2013, 15:37

Re: Anpassungen nach der Installation

Beitrag von hadro »

Hallo,

ich würde behaupten, dass du die "Registry_install" nie aufrufst. :ugeek:

Code: Alles auswählen

Registry_install /SysNative
Dann würde er schonmal die Einträge in die Registry machen. Dann musst du dem Script noch sagen, dass er jetzt neu starten soll:

Code: Alles auswählen

ExitWindows /ImmediateReboot
Das führt einen Neustart durch - nach dem Neustart würde er das Script erneut starten, da es nicht komplett abgeschlossen wurde.
Das bedeutet, dass du dem Script irgendwie mitteilen musst, an welcher Stelle er sich gerade befindet.

Zum Beispiel durch ein "ReebotFlag"

Das könnte dann so aussehen:

Code: Alles auswählen

Message "handle Rebootflag"
Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst"
Set $RebootFlag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag")

if not ( ($RebootFlag$ = "1") )
	[b]WAS SOLL ICH VOR DEM ERSTEN REBOOT MACHEN?[/b]
	[b]AutoLogin Daten hier setzen lassen[/b]
	
	
	set $RebootFlag$ = "1"
	Registry_SaveRebootFlag /32bit
	
	ExitWindows /ImmediateReboot
	[b]Alternativ: ExitWindows /Reboot - Wenn du mit diesem Script nichts weiter mehr durchführen willst und er sich "nur" anmelden soll.[/b]
endif

if ($RebootFlag$ = "1")
	[b]Jetzt mach ich meinen Login und setze dabei die RebootFlag schnell um :)[/b]
	[b]Damit [/b]
	
	set $RebootFlag$ = ""
	Registry_SaveRebootFlag /32bit

	setActionProgress "Create Local Profile"
	
	[b]Ausloggen nicht vergessen :D - Sonst macht er mit anderen Scripten nicht weiter.[/b]
	[b]Hier bin ich mir nicht sicher, dass muss eventuell auch mit hilfe eines anderen Scriptes und RunOnce passieren.[/b]
	[b]Ich hab das bei mir doppelt gemoppelt drinne :D[/b]
	
	ExitWindows /ImmediateLogout
endif

Code: Alles auswählen

[Registry_SaveRebootFlag]
openKey [$WinstRegKey$]
set "RebootFlag" = "$RebootFlag$"

VIelleicht hab ich das Problem ja richtig verstanden und konnte dir ein wenig helfen. Lass es uns wissen, ob es funktioniert.

Gruß
hadro
Antworten