g0dl!k3 Geschrieben 31. Mai 2006 Geschrieben 31. Mai 2006 Mahlzeit, ich habe ein Script was mir Benutzer im AD anlegt. Das Script funktioniert soweit einwandfrei. Jetzt will ich aber das dieses Script bei den angelegten Benutzern gleich einen Hacken bei "Benutzer kann Kennwort nicht ändern" setzt. Kann mir jemand sagen was ich in diesem Script ändern muss damit dieser Hacken gesetzt wird ? Das Script sieht immo wie folgt aus: Dim fso, f, Zeile, Feld Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile ("user.txt",1,0) Do while not f.AtEndOfLine Zeile = f.readLine Feld = split(Zeile,",") Benutzer = Feld(0) Vorname = Feld(1) Nachname = Feld(2) Passwort = Feld(3) Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort) Loop f.Close Wscript.Quit(0) Sub BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort) Dim ouo, b Set ouo = GetObject("LDAP://OU=LT's,DC=dom30,DC=local") Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname) Dim WshShell, ret Set WshShell = WScript.CreateObject("WScript.Shell") b.Put "sAMAccountName", Benutzer b.Put "displayName", Vorname & " " & Nachname b.Put "givenName", Vorname b.Put "sn", Nachname b.Put "userAccountControl", 66082 b.Put "userPrincipalName", Benutzer & "@DOM30.local" b.Put "profilePath", "\\te140-30-server\daten\profile\" & Benutzer b.Put "homeDirectory", "\\te140-30-server\daten\home\" & Benutzer b.Put "homeDrive", "H:" b.Put "scriptPath", "login.cmd" b.SetInfo b.SetPassword Passwort b.AccountDisabled = False b.SetInfo WScript.Sleep(1000) ret = WshShell.Run ("verz.cmd " & Benutzer,0,1) End Sub Gefunden habe ich ein anderes Script was diesen Hacken setzen soll. Ich müsste es halt nur nach anderen Script ausführen. Problem ist das es nicht funktioniert Das 2te schaut wie folgt aus: Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6 Const ADS_ACEFLAG_OBJECT_TYPE_PRESENT = &H1 Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}" Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100 Set objUser = GetObject _ ("LDAP://ou=LT's,dc=dom30,dc=local") Set objSD = objUser.Get("ntSecurityDescriptor") Set objDACL = objSD.DiscretionaryAcl arrTrustees = array("nt authority\self", "EVERYONE") For Each strTrustee in arrTrustees Set objACE = CreateObject("AccessControlEntry") objACE.Trustee = strTrustee objACE.AceFlags = 0 objACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT objACE.Flags = ADS_ACEFLAG_OBJECT_TYPE_PRESENT objACE.ObjectType = CHANGE_PASSWORD_GUID objACE.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS objDACL.AddAce objACE Next objSD.DiscretionaryAcl = objDACL objUser.Put "ntSecurityDescriptor", objSD objUser. SetInfo Das Problem liegt in Zeile 24 also diese hier: objUser.Put "ntSecurityDescriptor", objSD Die Fehlermeldung lautet "Die Struktur der Sicherheitskennung ist unzulässig" Ich kenne mich mit der Materie zu wenig aus um zu sagen wo das Problem liegt. Ich geh einfach davon aus das in den "" was anderes stehen muss wie "ntSecurityDescriptor" nur was :confused: Zu diesem Thema hab ich noch folgendes gefunden: http://www.microsoft.com/technet/scriptcenter/guide/sas_usr_vrbt.mspx?mfr=true Nur werde ich daraus nicht schlau. Die Daten die dort in der Tabelle stehen habe ich schon in die "" eingesetzt , das Ergebnis ist aber das gleiche. Ich hoffe jemand von Euch kann mir hier weiterhelfen *hoff* Zitieren
k4fu Geschrieben 8. Juni 2006 Geschrieben 8. Juni 2006 kann dir so ned weiterhelfen.... warum machst du nicht einfach einen select, ob der benutzer schon existiert? wenn ja --> hacken wenn nein --> kein hacken Zitieren
Klotzkopp Geschrieben 8. Juni 2006 Geschrieben 8. Juni 2006 Hast du ein englisches Windows? Falls nicht, könnte es daran liegen, dass du "nt authority\self" und "EVERYONE" durch die lokalisierten Texte ersetzen musst. Übrigens (auch an k4fu): "Hacken" bedeutet teilen oder spalten. Ihr meint "Haken". Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.