Jump to content

Probleme mit VBS Logonscript


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo, hallo

 

Ich habe ein Problem welches ich nicht nachvollziehen kann und ich möchte gern wissen warum das Problem auftritt.

 

Unser LogonScript ist ein VBS und liest per Rekursion die Gruppen unserer User aus. Jetzt habe ich unsere Drucker umgezogen und das Script angepasst, dabei ist mir aufgefallen das einige User die Drucker verbunden und richtig zugewiesen bekommen, andere nicht.

Also das "'On Error Resume Next" wieder auskommentiert und das "WScript.Echo("Gruppen: " & strGroups)" wieder aktiviert und das Script laufen lassen. Ernüchterung machte sich breit als die Fehlermeldung kam "Active Directory" : Die Verzeichniseigenschaft wurden nicht im Cache gefunden. Danach poppt das Fenster auf mit "Gruppen:" und es steht nichts drin.

Jetzt habe ich das mit einem anderen User probiert, da läuft das Script sauber durch und er zeigt die Gruppen an. Also habe ich die User verglichen und keinen Unterschied festellen können, auch das OS spielt keine Rolle. Wenn es bei einem User nicht funktioniert geht es bei XP und auch bei Win7 nicht.

Meine DC's sind Server 2008 R2 und ein Server 2003 32 Bit.

 

Ich wundere mich halt warum es bei manchen geht und bei anderen nicht, wo könnte der Fehler liegen?

 

Hier mal noch der Codeschnipsel:

'Setzt das Script bei Fehlern fort
'On Error Resume Next

Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D

'Trennen der vorhandenen Netzlaufwerke
Set wshNetwork = CreateObject("WScript.Network")
Set shell = CreateObject("WScript.Shell")
shell.run "net use * /d /y",0

'Wartezeit des Scripts vor Ausführung (5 sek)
WScript.sleep 5000

'Auslesen des AnzeigeName des Users.
Set objSysInfo = CreateObject("ADSystemInfo")
strUserDN = objSysInfo.UserName

' Bind to user object.
Set objUser = GetObject("LDAP://" & strUserDN)

' Display user NT name (sAMAccountName), Distinguished Name,
' Common Name, Display Name, first name, and last name.
' The last three might not have values.
'Wscript.Echo "sAMAccountName: " & objUser.sAMAccountName
'Wscript.Echo "Distinguished Name: " & objUser.distinguishedName
'Wscript.Echo "Common Name: " & objUser.cn
'Wscript.Echo "Display Name: " & objUser.displayName
'Wscript.Echo "First Name: " & objUser.givenName
'Wscript.Echo "Last Name: " & objUser.sn

'Festlegen div. Variablen
Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set ObjNetwork = CreateObject("WScript.Network")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
Dim objWshNet
Set objWshNet = CreateObject("Wscript.Network")
Set objWshNet = Nothing
Dim drv, drvpath, drvname

'Ermittlung der Gruppe mit Hilfe einer Rekursion 

objGroups = CurrentUser.GetEx("memberOf")   

Dim strGroups
	Call GetGroupsOfUser(objGroups, strGroups)
	Private Sub GetGroupsOfUser(ByVal objGroups, ByRef strGroups)
    For Each strGroup in objGroups
    
		Set objCurrentGroup = GetObject("LDAP://" & strGroup)
    
		strGroups = strGroups + strGroup + " "
	
	On Error Resume Next

		objCurrentGroups = objCurrentGroup.GetEx("memberOf")

		If Err.Number <>  E_ADS_PROPERTY_NOT_FOUND Then
			Call GetGroupsOfUser(objCurrentGroups, strGroups)
		End if
	
	Next
End Sub

'Umwandlung in Kleinbuchstaben
strGroups = lcase(strGroups)
WScript.Echo("Gruppen: " & strGroups)

Danke und Gruss

 

Thomas

Link zu diesem Kommentar

Moin,

 

sorry, wer soll durch deinen Spaghetti-Code durchsehen?

 

dafür kann er nichts - leider stellt die neue Boardsoftware längere Listings immer so dar.

 

@jpanse: Was genau ist das Ziel deines Codes? Wenn es darum geht, Aktionen abhängig davon auszuführen, ob jemand in einer bestimmten Gruppe ist, geht das viel effizienter. Dafür braucht es keine AD-Abfragen im Logonskript.

 

Gruß, Nils

Link zu diesem Kommentar

Auf nem ipad sieht's normal aus.

Ja, wenn man davon absieht, dass die Forensoftware das Kommentarzeichen falsch interpretiert ;)

 

Ich denke, man kann sich behelfen, in dem man am Ende des Kommentares noch mal ein ' -Zeichen setzt.

 

Und das macht er auch auf meinem iPhone. Prüft das bitte noch mal

bearbeitet von iDiddi
Link zu diesem Kommentar

Moin,

 

grad entdeckt, mit Firefox sieht es auch normal aus. Scheinbar mag der IE (hier 10) das nicht richtig darstellen.

 

oh, tatsächlich. Na sowas. Scheint wohl ein Fehler in der Skriptlogik zu sein, denn manchmal sieht man, dass der Text zunächst "roh" dargestellt wird und dann ins Syntax Highlighing wechselt. Anscheinend erzeugt das Code, den der IE10 nicht richtig interpretiert.

 

Gruß, Nils

Link zu diesem Kommentar

Moin,

 

grummel ... warum können die Leute nicht mal richtig und deutlich antworten?

 

Mit "Genau das soll das skript aber machen" meinst du: "Wenn es darum geht, Aktionen abhängig davon auszuführen, ob jemand in einer bestimmten Gruppe ist"? Dann ist der Ansatz des Skriptes ohnehin falsch, denn die Gruppen im AD sind nicht notwendig die Gruppenmitgliedschaften, die in der jeweiligen Anmeldesitzung gültig sind. Darüber entscheidet das Anmeldetoken, das bei der Anmeldung erzeugt wird. Die Gruppen im AD könnten Änderungen enthalten, die nach der Anmeldung erfolgt sind und daher in der aktiven Session gar nicht gültig sind.

 

Ein effizienter Weg, um zu prüfen, ob jemand Mitglied in der Gruppe "Gruppe47" ist:

 

whoami /groups | find /i "Gruppe47"

 

Für Druckerverbindungen geht es aber noch besser, schneller und fehlerärmer, und zwar über GPP (Group Policy Preferences). Dazu gibt es eigentlich einen super Artikel bei gruppenrichtlinien.de, aber den finde ich gerade nicht. Falls ich ihn wiederfinde, gebe ich Bescheid ...

 

Gruß, Nils

Link zu diesem Kommentar

Die GPP habe ich mir auch schon angeschaut. Ich denke ich werde es darüber Lösen.

Den Artikel habe ich schon gelesen, ausserdem ist es recht selbsterklärend.

 

Die Ursprüngliche Frage war lediglich: Worin der Unterschied liegen könnte das dass Script bei einem User die Gruppen in denen er Mitglied ist ausliest und bei dem Anderen nicht. Im AD gleichen sie sich, ich muss wohl mal mit LDAP da ran...irgendwo ist da noch ein Fehler drin und der ist über die GUI nicht zu sehen.

 

Jetzt könnte man der Thread eigentlich schliessen...

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...