repa
Goto Top

Problem mit Logon Script (Printer Mapping)

Hallo,

ich muss ein VBS erstellen, dass Drucker löscht und neu erstellt. habe das wie folgt gemacht.

nun, die Drucker werden gelöscht, jedoch nciht neu erstellt. Hat jemand eine Idee warum ? Die msgBox beim Printermapping erscheint nicht.

Anbei der code:
'On Error Resume Next  

Set objSysInfo = CreateObject("ADSystemInfo")  
Set objNetwork = CreateObject("Wscript.Network")  
Set objPrinters = objNetwork.EnumPrinterConnections
Set objDrives = objNetwork.EnumNetworkDrives


strUserPath = "LDAP://" & objSysInfo.UserName  
Set objUser = GetObject(strUserPath)

For Each strGroup in objUser.MemberOf
    strGroupPath = "LDAP://" & strGroup  
    Set objGroup = GetObject(strGroupPath)
    strGroupName = objGroup.CN
Next
	
		'********************************************************************************   
		'Delete Network Printer  
		'********************************************************************************   
		For LOOP_COUNTER = 0 To objPrinters.Count - 1 Step 2
			If Left(objPrinters.Item(LOOP_COUNTER +1),2) = "\\" Then  
				objNetwork.RemovePrinterConnection objPrinters.Item(LOOP_COUNTER +1),True,True
			End If
		msgbox ( "Delete PRinter" )  
		Next
		'********************************************************************************   
		'Map Network Printer  
		'******************************************************************************** 	   
		Select Case strGroupName
			Case "printserveR_user"  
				objNetwork.AddwindowsPrinterConnection "printserver\prt22"  
		msgBox ( " Map Printer" )  
		End Select
msgbox ( "END" )  
Danke für Eure Hilfe.

Content-Key: 68256

Url: https://administrator.de/contentid/68256

Printed on: April 23, 2024 at 06:04 o'clock

Member: Biber
Biber Sep 10, 2007 at 07:24:25 (UTC)
Goto Top
Moin repa,

dann scheint es doch weniger mit der beabsichtigten Aktion (sei es "Drucker zuweisen" oder "Urlaub streichen") zu tun zu haben, sondern damit, dass der Gruppenname-Vergleich in die Grütze geht.

Ersetze doch mal
...
Select Case strGroupName
Case "printserveR_user"  
...
...durch....
...
Select Case LCase(strGroupName)
Case "printserver_user"  
...

...und/oder setz doch mal zu Debug-Zwecken ein Wscript.echo strGroupName an eine Dir genehme Stelle.

Außerdem ist es irgendwie merkwürdig, dass Du weiter oben in der "For Each strGroup.."_Schleife zwar alle Gruppen durchwackelst, denen der User angehört, aber nur die letzte davon speicherst.... ist das bei Euch so Vorschrift?
Ich würde die For Each-Klamotte eher um die Seclect Case...end case-Zeilen legen.

Grüße
Biber
Member: repa
repa Sep 10, 2007 at 08:53:37 (UTC)
Goto Top
hi

habs mittlerweile rausgekriegt.

das script sieht nun wie folgt aus:
On Error Resume Next

Set objSysInfo = CreateObject("ADSystemInfo")  
Set objNetwork = CreateObject("Wscript.Network")  
Set objPrinters = objNetwork.EnumPrinterConnections
Set objDrives = WshNetwork.EnumNetworkDrives


strUserPath = "LDAP://" & objSysInfo.UserName  
Set objUser = GetObject(strUserPath)

'********************************************************************************  
'In this section, we define all things, used later in this script  
'********************************************************************************  

'Define, what should be done:  
MapPrinter = enable
DelPrinter = enable
mapNetworkDrive = enable
DelNetworkDrive = enable

'Define Network Drives  
NetDriveI = "i:"  
NetDriveJ = "j:"  
NetDriveK = "k:"  
NetDriveL = "l:"  
NetDriveM = "m:"  
NetDriveN = "n:"  
NetDriveO = "o:"  
NetDriveP = "p:"  
NetDriveQ = "q:"  
NetDriveR = "r:"  
NetDriveS = "s:"  
NetDriveT = "t:"  
NetDriveU = "u:"  
NetDriveV = "v:"  
NetDriveY = "y:"  
NetDriveX = "x:"  
NetDriveZ = "z:"  

'Define Servers  
Server1 = "\\12"  
Server2 = "\\13"  
Server3 = "\\15"  
Server4 = "\\14"  
PSRV1 = "\\16"  

'********************************************************************************  
'END  
'********************************************************************************  


'********************************************************************************   
'Remove Network Drives  
'********************************************************************************   
	
	objNetwork.RemoveNetworkDrive NetDriveI, True, True 
	objNetwork.RemoveNetworkDrive NetDriveJ, True, True 
	objNetwork.RemoveNetworkDrive NetDriveK, True, True 
	objNetwork.RemoveNetworkDrive NetDriveL, True, True 
	objNetwork.RemoveNetworkDrive NetDriveM, True, True 
	objNetwork.RemoveNetworkDrive NetDriveN, True, True 
	objNetwork.RemoveNetworkDrive NetDriveO, True, True 
	objNetwork.RemoveNetworkDrive NetDriveP, True, True 
	objNetwork.RemoveNetworkDrive NetDriveQ, True, True 
	objNetwork.RemoveNetworkDrive NetDriveR, True, True 
	objNetwork.RemoveNetworkDrive NetDriveS, True, True 
	objNetwork.RemoveNetworkDrive NetDriveT, True, True 
	objNetwork.RemoveNetworkDrive NetDriveU, True, True 
	objNetwork.RemoveNetworkDrive NetDriveV, True, True 
	objNetwork.RemoveNetworkDrive NetDriveY, True, True 
	objNetwork.RemoveNetworkDrive NetDriveX, True, True 
	objNetwork.RemoveNetworkDrive NetDriveZ, True, True 

msgbox ("Del Drive")  
	
'********************************************************************************   
'Map Network Drives  
'********************************************************************************   
if mapNetworkDrive = enable then


	
	
For Each strGroup in objUser.MemberOf
    strGroupPath = "LDAP://" & strGroup  
    Set objGroup = GetObject(strGroupPath)
    strGroupName = objGroup.CN

	
		objNetwork.MapNetworkDrive NetDriveI, Server2 & "\Installation"  
		objNetwork.MapNetworkDrive NetDriveJ, Server1 & "\Daten"  
		objNetwork.MapNetworkDrive NetDriveL, Server1 & "\se9"  

    Select Case strGroupName
	
		'Map SoftM drive if user in group GLSoftMAdmin  
        Case "GlSoftMAdmin"  
            objNetwork.MapNetworkDrive NetDriveS, Server1 & "\se8"  
		'Map SoftM drive if user in group GLSoftMUser  
        Case "GlSoftMUser"  
            objNetwork.MapNetworkDrive NetDriveS, Server1 & "\user"  
		'Map Unikis drive if user in group GlRohagSpedi  
        Case "GLRohagSpedi"  
            objNetwork.MapNetworkDrive NetDriveU, Server3 & "\se7$"  
		'Map Mammut drive if user in group GLMammut  
        Case "GLMammut"  
            objNetwork.MapNetworkDrive NetDriveM, Server3 & "\se4"  
		'Map Finanz drive if user in group GLDietikerFinanz  
        Case "GLDietikerFinanz"  
            objNetwork.MapNetworkDrive NetDriveN, Server1 & "\finanzen"  
		'Map Finanzen drive if user in group GLDietikerPersonal  
        Case "GLDietikerPersonal"  
            objNetwork.MapNetworkDrive NetDriveN, Server1 & "\finanzen"  
		'Map Finanzen drive if user in group GLDietikerKonzernleitung  
        Case "GLDietikerKonzernleitung"  
            objNetwork.MapNetworkDrive NetDriveN, Server1 & "\finanzen"  
		'Map Finanzen drive if user in group GLBuDiv  
        Case "GLBuDiv"  
            objNetwork.MapNetworkDrive NetDriveN, Server1 & "\finanzen"  
		'Map Finanzen drive if user in group GLDietikerIfrsUmstellung  
        Case "GLDietikerIfrsUmstellung"  
            objNetwork.MapNetworkDrive NetDriveN, Server1 & "\finanzen"  
		'Map Lager drive if user in group GLDiagLager  
        Case "GLDiagLager"  
            objNetwork.MapNetworkDrive NetDriveK, Server1 & "\lager$"  
		'Map Stahl drive if user in group GLStahl  
        Case "GLStahl"  
            objNetwork.MapNetworkDrive NetDriveV, Server1 & "\stahl"  
		'Map Alucd2003 drive if user in group GLAluCD  
        Case "GLAluCD"  
            objNetwork.MapNetworkDrive NetDriveY, Server1 & "\se3"  
		'Map Lohn drive if user in group GLLohn  
        Case "GLLohn"  
            objNetwork.MapNetworkDrive NetDriveO, Server1 & "\lohn$"  
		'Map SocoAG drive if user in group LOSoCoAG  
        Case "LOSocAG"  
            objNetwork.MapNetworkDrive NetDriveT, Server1 & "\se2"  
		'Map analysen drive if user in group GLAnalysen  
        Case "GLAnalysen"  
            objNetwork.MapNetworkDrive NetDriveR, Server1 & "\Analysen$"  
        'Map analysen drive if user in group G_SoCo_User  
		Case "G_SoCo_User"  
            objNetwork.MapNetworkDrive NetDriveZ, Server4 & "\se"  
		'Map analysen drive if user in group G_SoCo_IT  
        Case "G_SoCo_IT"  
            objNetwork.MapNetworkDrive NetDriveQ, Server4 & "\Backupstorage"  
			objNetwork.MapNetworkDrive NetDrivex, Server4 & "\Softwarestorage"  
         End Select
Next	 
End IF	

If delPrinter = enable then 	
		'********************************************************************************   
		'Delete Network Printer  
		'********************************************************************************   
		For LOOP_COUNTER = 0 To objPrinters.Count - 1 Step 2
			If Left(objPrinters.Item(LOOP_COUNTER +1),2) = "\\" Then  
				objNetwork.RemovePrinterConnection objPrinters.Item(LOOP_COUNTER +1),True,True
			End If
		msgbox ( "Delete PRinter" )  
		Next
end If

if mapPrinter = enable then
		'********************************************************************************   
		'Map Network Printer  
		'******************************************************************************** 	   
		
		For Each strGroup in objUser.MemberOf
    strGroupPath = "LDAP://" & strGroup  
    Set objGroup = GetObject(strGroupPath)
    strGroupName = objGroup.CN
	
		Select Case strGroupName
			Case "print_user"  
				objNetwork.AddwindowsPrinterConnection PSRV1 & "\printer_PRT22"  
		msgBox ( " Map Printer" )  
		End Select
Next
end If
msgbox ( "END" )  



Leider werden die Netzlaufwerke nicht gelöscht, alles andere funktioniert...

Hat jemand eine idee warum ?