Kixtart does not map all drives/install all printers for all users??

Hi Experts,
I am having a problem with our Kixtart logon script.  I have groups for each share and for each printer.  The script removes all drives and printers then reconnects but for some users one or more drives and/or printers are not mapping at all.  I added verbosity to see what was going on and it never even attempts to map the drive/printer in question.
I originally thought that it might be a typo or they weren't assigned to the proper group but everything is correct and when i log in on a different computer with their profile, everything maps fine.
This issue is only affecting about 6/60 user's, one of which is my boss who is the worst case and lost 4 drives and a printer... : /
Also it works on all operating systems and there is no obvious connection between the PCs that are affected.

I attached the script, although the script seems to be fine

What could be causing this?

DIM $PrtServerName, $FileServerName
DIM $Prt, $Share, $Drive, $HomeDrive
DIM $ArrPtrs, $ArrShares, $ArrShareDrives
DIM $Loop

$PrtServerName = "\\server1\"
$FileServerName ="\\server1\"
$ArrPtrs = SPLIT("printer1,printer2,printer3,printer4,printer5,printer6,printer7,printer8,printer9,printer10,printer11,printer12,printer13,printer14",",")
$ArrShares = SPLIT("share1,share2$,share3$,share4$,share5$,share6$,share7$,share8,share9$,share10$,share11$,share12,share13,share14",",")
$ArrShareDrives = SPLIT("F:,I:,J:,K:,M:,N:,O:,P:,Q:,R:,T:,U:,V:,W:",",")
$HomeDrive = "H:"


; Delete local drive mappings
? "Removing Drive Mappings..."
USE "*" /DELETE
SLEEP 2

; Map Home Drive
? "Mapping " + $HomeDrive + " as " + $FileServerName + "@USERID$" 
USE $HomeDrive $FileServerName + "@USERID$"

; Map Drives by Groups
FOR $Loop = 0 To UBOUND($ArrShares)
	IF INGROUP("mapto-" + $ArrShares[$Loop])
		? "Mapping " + $ArrShareDrives[$Loop] + " as " + $FileServerName + $ArrShares[$Loop]
		USE $ArrShareDrives[$Loop] $FileServerName + $ArrShares[$Loop]
	ENDIF
NEXT

; Remove Printer Connections
FOR $Loop = 0 To UBOUND($ArrPtrs)
	IF PriMapState($PrtServerName + $ArrPtrs[$Loop]) > 0
		? "Removing " + $ArrPtrs[$Loop] + " -- " + DELPRINTERCONNECTION($PrtServerName + $ArrPtrs[$Loop])
	ENDIF
NEXT

; Map Printers
FOR $Loop = 0 To UBOUND($ArrPtrs)
	IF INGROUP("Printers-" + $ArrPtrs[$Loop])
	   ? "Adding " + $PrtServerName + $ArrPtrs[$Loop] + " -- " + ADDPRINTERCONNECTION ($PrtServerName + $ArrPtrs[$Loop])
		IF INGROUP("DefaultPrinter-" + $ArrPtrs[$Loop])
			? "Setting " + $PrtServerName + $ArrPtrs[$Loop] + " as default printer. -- " + SETDEFAULTPRINTER($PrtServerName + $ArrPtrs[$Loop])
		ENDIF
	ENDIF
NEXT

; Set time to domain controller
SETTIME "\\server1"

; EXIT
:EXIT

FUNCTION PriMapState($_Pri)
	IF @inwin=1
		IF LEN(READVALUE("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices",$_Pri))
			IF SPLIT(READVALUE("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device"),",")[0]=$_Pri
				$PriMapState=2
			ELSE
				$PriMapState=1
			ENDIF
		ENDIF
	ELSE
		DIM $_Root,$_C,$_C2 $_Root="HKLM\System\CurrentControlSet\control\Print\Printers"
		FOR $_C=0 to 259
			$_C2=ENUMKEY($_Root,$_C)
			IF INSTR(READVALUE($_Root+"\"+$_C2,"Port"),$_Pri)
				IF INSTR(READPROFILESTRING("%windir%\win.ini","windows","device"),$_Pri)
					$PriMapState = 2
				ELSE
					$PriMapState = 1
				ENDIF
			ENDIF
			IF $_C2=259 $_C=$_C2 ENDIF
		NEXT
	ENDIF
ENDFUNCTION

Open in new window


Thanks
-Jeremy
LVL 10
FamousMortimerAsked:
Who is Participating?
 
FamousMortimerAuthor Commented:
well, i deleted then recreated the groups and it seems to be working now.  i still dont understand why it worked for some and not for others but recreating the groups seems to be the solution.
0
 
-tjsCommented:
I would look into the aspect of it being a login script.  Perhaps it is not even being called during logon at all.  Where exactly is it specified to run at logon?  GPO? Registry? Start Menu->Startup?  If it is in a GPO perhaps the computer has some delay processing the GPO and misses the script.

As an aside KIX is 1990's tool that has been obsolete for 11 years.  This might be an opportunity to update your login scripts and utilize GPOs (or GPPs if you Windows 2008 DCs) to manage printers and drive letters.
0
 
-tjsCommented:
Actually let me correct myself.  Just looked up kixstart and wouldn't you know it - someone has been maintaining it all this time, so I guess it's still out there after all.
0
 
FamousMortimerAuthor Commented:
The script is running and in fact some of the drives/printers do map correctly. I added pauses so i can watch it but it seems like it never tries to map the drives/printers as if it doesnt recognize that the user is part of the group, but the odd part is that when i login as the user in my virtual PCs, it will map everything properly
The script is specified as the login script on the AD accounts
I know Kix is an old tool but it is corporately approved so i an somewhat obligated to use it.  It is a pretty nice tool though, a lot of great built-in functions

It doesnt seem to know what groups the user account is part of at startup and i dont know where to go from here, but maybe i will try a vbscript and see if it does map properly
0
 
FamousMortimerAuthor Commented:
done
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.