Start >> Anleitungen >> Anmeldescript mit Kixtart

Als Skriptdateien kommen entweder *.bat oder *.cmd (nur NT4/2000/XP) Stapelverarbeitungsdateien oder *.vbs in Frage. In die Stapelverarbeitungsdateien packt man üblicherweise Befehle, die man in der Eingabeaufforderung verwenden kann wie z.B.:

net use H: \\server\homefreigabe\%username%
net use lpt1: \\server\drucker

Prinzipiell geht alles, was man in der Eingabeaufforderung starten und machen kann. Dabei sollte man beachten, dass bei individuellen Zeilen je Benutzer mit Variablen gearbeitet wird. Wenn Stapelverarbeitungsdateien zu wenig können und VB-Skripte nicht in Frage kommen, dann sollten Sie sich einmal KiXtart ansehen.

Bei der Anbindung von Clients an einen oder mehrere Server bietet KiXtart für Administratoren eine leistungsfähige Batch-Sprache, um Benutzern Ressourcen abhängig von Client-Rechner, Benutzergruppe oder Aufgaben zuzuweisen. Zudem lassen sich Einträge in der Registry abfragen und verändern und OLE-Objekte aufrufen. Die strukturierte Skriptsprache unterstützt Subroutinen, If-then-else-Konstrukte, Schleifen und Select-Case-Anweisungen. KiXtart lässt sich neben dem Netzwerk-Login auch für alltägliche Routineaufgaben einsetzen.

KiXtart ist kostenlos. Der Windows-Scriptinghost (WSH) macht KiXtart zwar inzwischen Konkurrenz als Skriptsprache, der große Vorteil von KiXtart ist jedoch der direkte Zugriff auf Informationen wie Benutzername, IP-Adresse oder Gruppenzugehörigkeit des Benutzers.

Die neueste Version ist KiXtart 2010 4.51 und ist hier zu bekommen.

Im nachfolgendem beschreibe ich ein Login-Script, dass die Uhrzeit mit dem Server synchronisiert, Home- und Gruppenlaufwerke mappt, Virendefinitionen erneuert, Anmeldeinformationen anzeigt und die Anmeldung in ein Logfile schreibt.

Ich benutze es in meinem Homeoffice und habe es schon oft bei Kunden in abgewandelter Form realisiert.

Zuerst der Header:

; ****************************
; *** Programm: logon.kix ***
; *** Erstellt durch Norbert Heisig ***
; *** Datum: 30.03.2005 ***
; *** Version 0.8 ***
; *****

Break off
SetConsole("Hide")
Flushkb


Jetzt kommt die Anweisung, das das Script ausgeführt wird bevor der Desktop geladen wird:

$ScriptSync=READVALUE("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\Winlogon","RunLogonScriptSync")
If @ERROR > 0>
$TotalErrors = $TotalErrors + 1
$ScriptSync = $ScriptSync + 99
WRITEVALUE("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Winlogon","RunLogonScriptSync","1","REG_DWORD")
EndIf


Die Uhrzeit des Client wird mit der Uhrzeit des Servers synchronisiert

SETTIME "\\SVR"

Ein Logfile wird erstellt:

If Open (3,"\\svr\administration\einloggen.log",5)=0
$x=WriteLine(3,@userid+" "+@fullname+"
"+"eingeloggt am: "+@day+" "+@mdayno+"
"+@month+" "+@year+" - "+@time)
$x=WriteLine(3," auf PC "+@wksta+chr(13)+chr(10))
endif


Es folgt die Versionsabfrage:

If @INWIN="1"
$w="Windows NT"
endif
if @INWIN="2"
$w="Windows 95/98"
endif


Nun die Anmeldeinformation, die auf dem Bildschirm ausgegeben wird. Zuerst die Begrüßung, abhängig von der Tageszeit:

$TimeofDay = VAL( SUBSTR(@TIME,1,2) )
SELECT
CASE $Timeofday < 8
$Greeting = "Du bist heute früh "
CASE $Timeofday => 8 AND $Timeofday < 12
$Greeting = "Guten Morgen "
CASE $Timeofday => 12 AND $Timeofday < 18
$Greeting = "Guten Tag "
CASE $Timeofday => 18 AND $Timeofday <= 22
$Greeting = "Guten Abend "
CASE $Timeofday > 19 AND $Timeofday >= 23
$Greeting = "Gute Nacht "
;$Greeting = "Solltest Du nicht schlafen? "
CASE 1
$Greeting = "Willkommen "
ENDSELECT


Nun der Teil für die Nachrichtenbox:

$Key = MessageBox ("Datum"+chr(9)+chr(9)+": "+@day+" "+@mdayno+" "+@month+" "+@year+chr(10)+
"Zeit"+chr(9)+chr(9)+": "+@time+chr(10)+ chr(10)+
"User ID"+chr(9)+chr(9)+": "+@userid+chr(10)+
"Full name"+chr(9)+chr(9)+": "+@fullname+chr(10)+
"Privileges"+chr(9)+chr(9)+": "+@priv+chr(10)+
"OS"+chr(9)+chr(9)+": "+$w+chr(10)+
"Version"+chr(9)+chr(9)+": "+@dos+chr(10)+
"Domain"+chr(9)+chr(9)+": "+@domain+chr(10)+
"Logon Server"+chr(9)+": "+@lserver+chr(9)+chr(9)+chr(10)+
"Computername"+chr(9)+": "+@wksta+chr(10)+
"Node adress"+chr(9)+": "+@address+chr(10)+chr(10)+
$greeting, "Anmelde Information", 4160, 7)


Das sieht dann so aus:



Anmerkung: Bei Logon Server steht eigentlich der Name des Servers. Da ich die Anleitung auf meiner Workstation geschrieben habe, erscheint dort der Name der Workstation.

Als nächstes werden die Virendefinitionen erneuert. Das Script ist so eingestellt, das es automatisch nach 7 Tagen die neuen DAT-Files vom Server lädt. Hier handelt es sich um Norton Antivirus. Die Nachrichtenbox wird 5 Sekunden angezeigt.

;Init Variables
; $YD is a dummy date
; $UPDT is the last time the Intelligent Updater was executed
; $JS Works with $YD to retrieve the date

$YD = "DUMMY" + @YDAYNO
$ReturnCode = ExistKey
("HKEY_LOCAL_MACHINE\SOFTWARE\YOURCOMPANYNAME")
If $ReturnCode <> 0
AddKey
("HKEY_LOCAL_MACHINE\SOFTWARE\YOURCOMPANYNAME")
WriteValue("HKEY_LOCAL_MACHINE\Software\YOURCOMPANYNAME","
Last_NAV_Update","000","REG_BINARY")
EndIf

$UPDT = ReadValue
( "HKEY_LOCAL_MACHINE\Software\YOURCOMPANYNAME" ,
"Last_NAV_Update" )
$JS = SUBSTR($YD, 6, 3)

If ((@YDAYNO - VAL($UPDT)) > 7) OR (@YDAYNO < VAL($UPDT))
Shell @LDRIVE + "\NAV_UPDATE.EXE /q"
WriteValue("HKEY_LOCAL_MACHINE\Software\YOURCOMPANYNAME",
"Last_NAV_Update", $JS, "REG_SZ")
$CHOICE=MessageBox("Norton AntiVirus Definitionen wurden erneuert.",
"Norton Update",4160,5)
Else
;Skipping-Recently Updated"
EndIF


Das sieht dann so aus:



Die Laufwerke werden gemappt:

$fileserver= "SVR"
Use P: "\\$FileServer\Public"
Use Q: "\\$FileServer\Install1"
Use H: "\\$FileServer\@USERID"

; Gruppen
;Users
IF INGROUP("Domain Users")
$Drive = "G:" $Path = "\\$FileServer\General"
GOSUB "MapDrive"
ENDIF
; Project1
IF INGROUP("Project1")
$Drive = "V:" $Path = "\\$FileServer\Project1"
GOSUB "MapDrive"
ENDIF


Damit das Script läuft, sind folgende Einstellungen nötig:

Das Script heißt in diesem Fall 'logon.kix'.
Auf dem PDC (Primary Domain Controller) muss das Script in die Ordner
C:\winnt\sysvol\domain\scripts
c:\winnt\sysvol\sysvol\domainenname\scripts
abgelegt werden (bei Win 2000 Server).

Die Virendefinitionen werden aus dem Internet gesaugt. Die Datei wird in 'nav_update.exe' umbenannt und ebenfalls in die Ordner kopiert. Natürlich muss sich dort auch die Datei 'kix32.exe' befinden.

Im Active Directory Benutzer und Computer-> Users-> Benutzername-> Profil muss im Feld Anmeldescript 'kix32 logon.kix' stehen.

Copyright © 2002 - 2014 Norbert Heisig
Impressum | Datenschutz | Disclaimer | Sitemap