xm-bit
Goto Top

Loginscript mit Gruppenabfrage

Hallo und guten morgen,

ich habe ein Problem und brauche eure Unterstützung.

Nach langen suchen habe ich nun ein Script gefunden was ich gerne einsetzen möchte. Nur leider funktioniert es nicht so wie ich möchte.

Ich möchte ein Script haben, was prüft, welcher User in welchen Gruppen ist, sollte ein Übereinstimmung sein, dann bekommt er das jeweilige Laufwerk und den jeweiligen Drucker.

Der DC ist ein Server 2008, es sind mehrere Terminalserver da.
Es ist ein Fileserver vorhanden, und die Workstation bestehen zum größten Teil aus Igel-Thinclients.
Hier ist ein Script was ich gefunden , und ein wenig angepaßt habe.

Aber ich bin mir nicht sicher, ob es richtig ist, was ich gemacht habe.

Wenn ihr euch das mal anschaut, und mir eine Tipp geben könnt, den auch eine "Laie in Scripting" versteht, bin ich euch sehr dankbar.

Dim strComputerName 
Dim strUserName 
Dim strDomainName 
Dim strPrintSRV
Dim strPrintSRV2

Dim objADSysInfo 
Dim wshNetwork 
Dim WshShell 
Dim WshSysEnv 
Dim oShell 
Dim oShFolder 
Dim objUser 
Dim objOU 
Dim rootDSE 
Dim oPq 
Dim ws
Set wshNetwork = WScript.CreateObject( "WScript.Network" )   
Set WshShell = WScript.CreateObject("WScript.Shell")   
Set WshProcEnv = WshShell.Environment("Process")   
Set WshUserEnv = WshShell.Environment("USER")   
Set objADSysInfo = CreateObject("ADSystemInfo")   
Set oShell = CreateObject("Shell.application") 				  
Set oShFolder = oShell.Namespace(17) 
Set objUser = GetObject("LDAP://" & objADSysInfo.UserName)   
Set objOU = GetObject(objUser.parent) 
Set objFSO = CreateObject("Scripting.FileSystemObject")   
strPrintSRV = "printsrv"  
Server1 = "DC-Server"   
Server2 = "file-Server"   

'Warten bis der Anmeldename des Users ermittelt wurde   
Do While wshNetwork.username = ""   
   WScript.Sleep 25 
Loop 

strComputerName = wshNetwork.computerName 
strUserName = wshNetwork.userName 
strDomainName = wshNetwork.userDomain 

Call subdrivemap 'Aufruf der Subroutine zum Laufwerkmappen   

Sub subdrivemap() 

' ### ADSI abfragen   
adspath = "WinNT://" & strDomainName & "/" & strUserName   

Set adsobj = GetObject( adspath ) 
WScript.Echo (Test)
'##### vorhandene Laufwerke löschen   

On Error Resume Next 
wshNetwork.RemoveNetworkDrive "I:", True, True   
wshNetwork.RemoveNetworkDrive "J:", True, True   
wshNetwork.RemoveNetworkDrive "K:", True, True   
wshNetwork.RemoveNetworkDrive "L:", True, True   
wshNetwork.RemoveNetworkDrive "H:", True, True   
wshNetwork.RemoveNetworkDrive "N:", True, True   
wshNetwork.RemoveNetworkDrive "O:", True, True   
wshNetwork.RemoveNetworkDrive "Z:", True, True   
wshNetwork.RemoveNetworkDrive "P:", True, True   
wshNetwork.RemoveNetworkDrive "Q:", True, True   
wshNetwork.RemoveNetworkDrive "S:", True, True   
wshNetwork.RemoveNetworkDrive "W:", True, True   
wshNetwork.RemoveNetworkDrive "X:", True, True   
wshNetwork.RemoveNetworkDrive "M:", True, True   

'##### für jeden gültige Laufwerke mappen   
'wshNetwork.MapNetworkDrive "I:", "\\"&Server2&"\User\"& strUserName   
'wshNetwork.MapNetworkDrive "L:", "\\"&Server2&"\AUS"   
wshNetwork.MapNetworkDrive "V:", "\\" & Server2 & "\Vorlagen"  
wshNetwork.MapNetworkDrive "X:", "\\" & Server1 & "\Xerox"  

'Drucker mappen  
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\BrotherH"  
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\GPKlassig"  
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\KyoceraF"  

'##### Gruppenabhängige Laufwerke mappen   

For Each prop In adsobj.groups 

'* ACHTUNG! Gruppennamen immer GROSS schreiben   
Select Case UCase(prop.name) 

Case "MITARBEITER"   
	wshNetwork.MapNetworkDrive "K:", "\\" & Server2 & "\Kanzleiverwaltung"  
	wshNetwork.MapNetworkDrive "M:", "\\" & Server2 & "\Mandantenstamm"  
	wshNetwork.MapNetworkDrive "P:", "\\" & Server2 & "\Software"  
	
Case "GESCHÄFTSLEITUNG"   
  wshNetwork.MapNetworkDrive "I:", "\\" & Server2 & "\Kanzlei_intern"  
	
'Case "HR"   
  'wshNetwork.MapNetworkDrive "L:", "\\"&Server2&"Groups$\Profile"   

End Select 

Next 

End Sub 

Nach langem testen habe ich nun festgestellt, wenn ich folgende Konfiguration habe:
OU=Gruppe, OU=untergruppe.
in untergruppe sind nun meine Gruppen auf die das Script greifen soll.

Dann funktioniert es nicht.

Setze ich nun die Gruppen, direkt in die OU=gruppe dann greift auch mein Script. Woran liegt das???

Wie schon gesagt, ich bin noch Anfänger was scripting angeht, und lerne mit jedem Script dazu...

mfg
Sascha

Content-Key: 128931

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: Miyamoto
Miyamoto Nov 09, 2009 at 09:51:06 (UTC)
Goto Top
Hi,
ich würde mal sagen das liegt an deinem LDAP-Pfad in Zeile 25.
Woher soll das Skript wissen das es noch eine Weitere Gruppe gibt.

Ist aber nur eine Vermutung.

Gruß Miyamoto
Member: xm-bit
xm-bit Nov 09, 2009 at 10:39:21 (UTC)
Goto Top
Hi miyamoto,

ok, und was trage ich dort ein???
Wie schon gesagt, bin noch blutiger Anfänger.

Wäre dann in dem Fall etwas wie

LDAP://OU=untergruppe, OU=gruppe, DC=server, DC=local

das richtige??

mfg
Sascha
Member: Miyamoto
Miyamoto Nov 09, 2009 at 10:49:02 (UTC)
Goto Top
Wenn ich mich richtig erinnere ist das so weit richtig.
Wenn es nicht klappt würde ich es noch mal ohne die "untergruppe" ausprobieren.

Weiß das auch nicht mehr so gut, ist einfach schon zulange her wo ich so was gemacht habe face-smile

Gruß Miyamoto
Member: xm-bit
xm-bit Nov 09, 2009 at 11:00:21 (UTC)
Goto Top
Hi,

das habe ich getestet, aber leider bekomme ich dann folgende Fehlermeldung:

Script: \\server\netlogon\test.vbs
Zeile: 25
Zeichen: 1
Fehler: 0x80005000
Code: 80005000
Quelle: (null)

Beim googlen habe ich gefunden, das es am Pfad liegen soll. Aber den habe ich überprüft...

Bin ein wenig ratlos...

mfg
Sascha
Member: Miyamoto
Miyamoto Nov 09, 2009 at 11:03:40 (UTC)
Goto Top
wie sied den jetzt deine Zeile 25 aus?
Member: xm-bit
xm-bit Nov 09, 2009 at 11:09:06 (UTC)
Goto Top
Hi,

hier ist die Zeile 25:
Set objUser = GetObject("LDAP://OU=Usergruppen,OU=gruppe,DC=server,DC=local" & objADSysInfo.UserName)

Ich habe es auch schon ohne die OU untergruppe probiert. Aber das ging auch nicht.
Per Adsiedit habe ich den Pfad auch überprüft, der stimmt auch..

mfg
Sascha
Member: Miyamoto
Miyamoto Nov 09, 2009 at 12:14:47 (UTC)
Goto Top
Eine frage habe ich noch, was steht den in der Variable "objUser " drin, wenn dein Skript läuft?
Member: xm-bit
xm-bit Nov 09, 2009 at 12:22:12 (UTC)
Goto Top
Hi,

das würde ich dir gerne sagen, wenn du mir sagst, wie ich das mit Wscriptecho sichtbar machen kann.


edit:

Da wird mir der angemeldete Benutzer angezeigt, CN=nachname/ , vorname

mfg
Sascha
Member: Miyamoto
Miyamoto Nov 09, 2009 at 12:52:05 (UTC)
Goto Top
Schreib mal bitte in deine Zeile 25 das:
Set objUser = GetObject("LDAP://" & objADSysInfo.UserName & ",OU=Usergruppen,OU=gruppe,DC=server,DC=local")    
Member: bastla
bastla Nov 09, 2009 at 16:11:45 (UTC)
Goto Top
Hallo SasHW2k3!

Streiche die Zeilen 45 bis 49 und ersetze die Zeilen 81 durch:
For Each prop In objUser.groups
und 84 durch:
Select Case UCase(prop.cn)

Die ursprüngliche Zeile 25
Set objUser = GetObject("LDAP://" & objADSysInfo.UserName)
soll so bleiben, da diese Zeile den User als Objekt liefert, dessen Gruppenmitgliedschaften dann in der Schleife ab Zeile 81 ausgelesen werden.

Wie du schon bemerkt hast, wird bei Verwendung des Attributes ".Name" ein "CN=" vorangestellt, weswegen die Eigenschaft ".cn" für Deinen Zweck günstiger ist.

Grüße
bastla
Member: xm-bit
xm-bit Nov 09, 2009 at 19:43:49 (UTC)
Goto Top
Hi Bastla,

danke schön.
Das funktioniert wunderbar.
Alleine hätte ich das bestimmt nicht so schnell geschafft.

Eine kleine Frage hätte ich da doch noch.
Wenn ich nun eine Datei von einem Laufwerk X, an einen anderen Ort im Benutzerprofil eines Users kopieren will, um die vorhandene zu überschreiben, wie stelle ich das an??

mfg
Sascha
Member: bastla
bastla Nov 09, 2009 at 20:26:13 (UTC)
Goto Top
Hallo SasHW2k3!
Das funktioniert wunderbar.
Freut mich. face-wink

Wenn ich nun eine Datei von einem Laufwerk X, an einen anderen Ort im Benutzerprofil eines Users kopieren will ...
Auch wenn es vermutlich weiterhin um VBScript gehen soll, ist das eigentlich ein Thema für einen neuen Thread ...

Grüße
bastla
Member: xm-bit
xm-bit Nov 10, 2009 at 08:35:05 (UTC)
Goto Top
Guten morgen Bastla,

ok, dann setzte ich das in einen neuen Thread. Ist doch kein Problem...

mfg
Sascha