1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 6: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134:
Wahl ausdrücklich Const ADS_PROPERTY_DELETE = 4 Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2 Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4 Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8 Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000 schwaches Elternteil, intRow, Benutzer, Benutzer Schwaches objDelGroup, objRootLDAP, objGroup, objUser, objOU, objmemberOf Schwaches objParent, objWorkbook, objExcel, strValue, strMail, strDescription, strInfo, intgroupType, distinguishedName, strSAMAccountName schwaches groupParentLdap, strName, strUser, strDNSDomain, strLDAP, strList, Wurzel objFSO = CreateObject („Scripting.FileSystemObject“) einstellen objInputFile einstellen = objFSO.CreateTextFile („c:\temp\shdrv.log“, 2) const ROOT_OU = „ou=“ 'Benutzerliste von lesen übertreffen Akte objExcel = CreateObject („Excel.Application“) einstellen objWorkbook = objExcel.Workbooks.Open („C:\temp\users _list.xls“ einstellen) intRow = 1 Benutzer = objExcel.Cells (intRow, 1).Value Bis Benutzer = "" tun wenn Benutzer = "" dann Benutzer = Benutzer sonst Benutzer = Benutzer u. „,“ u. Benutzer beenden wenn intRow = intRow + 1 Benutzer = objExcel.Cells (intRow, 1).Value Schleife objRootLDAP = GetObject einstellen („LDAP: //RootDSE“) strDNSDomain = objRootLDAP.Get („DefaultNamingContext“) Wurzel = „LDAP: /“ u. ROOT_OU u. „,“ u. strDNSDomain objInputFile.WriteLine Wurzel RecurseOUs GetObject (Wurzel) VorRecurseOUs (objOU) Schwaches objOUObject, strConnString Für jedes objOUObject im objOU Wenn UCase (gelassen (objOUObject.Name, 3)) = „OU=“ dann strConnString = objOUObject.DistinguishedName strConnString objInputFile.WriteLine ObjUser = GetObject einstellen („LDAP: /“ u. strConnString) strConnString CheckUser RecurseOUs ObjUser Beenden wenn Zunächst Enden-Unterseeboot VorCheckUser (strConnString) Auf Störungs-Zusammenfassung zunächst für jeden Benutzer in der Spalte (Benutzer, „, ") objInputFile.WriteLine objInputFile.WriteLine „Benutzer: “ u. Benutzer strUser = " cn= " u. Benutzer u. „,“ strLDAP = " LDAP: /„u. strUser u. strConnString objInputFile.WriteLine strLDAP objUser = GetObject (strLDAP) einstellen Wenn Err.Number = 0 dann Gesetztes objParent = GetObject (GetObject (objUser.Parent). Elternteil) objParent.GetInfo Elternteil = ersetzen (objParent.Name, „CN=“, "") objInputFile.WriteLine „Elternteil-Aufstellungsort: “ u. Elternteil objmemberOf = objUser.GetEx („memberOf“) Für jedes objGroup im objmemberOf objInputFile.WriteLine objInputFile.WriteLine „Gruppe LDAP: “ u. objGroup objGroup = GetObject einstellen („LDAP: /“ u. objGroup) objGroup.GetInfo strName = objGroup.Get („Name“) strSAMAccountName = objGroup.Get („sAMAccountName“) intgroupType = objGroup.Get („groupType“) distinguishedName = objGroup.Get („distinguishedName“) objInputFile.WriteLine „distinguishedName: “ u. distinguishedName objInputFile.WriteLine „Name: “ u. strName objInputFile.WriteLine „sAMAccountName: “ u. strSAMAccountName WScript.StdOut.Write „Gruppenbereich: “ Wenn intGroupType UND ADS_GROUP_TYPE_LOCAL_GROUP dann objInputFile.WriteLine „Gebietseinheimisches“ ElseIf intGroupType UND ADS_GROUP_TYPE_GLOBAL_GROUP dann objInputFile.WriteLine „global“ ElseIf intGroupType UND ADS_GROUP_TYPE_UNIVERSAL_GROUP dann objInputFile.WriteLine „Universalität“ Sonst objInputFile.WriteLine „Unbekanntes“ Beenden wenn WScript.StdOut.Write „Gruppenart: “ Wenn intGroupType UND ADS_GROUP_TYPE_SECURITY_ENABLED dann objInputFile.WriteLine „Sicherheitsgruppe“ Sonst objInputFile.WriteLine „Verteilungsgruppe“ Beenden wenn objInputFile.WriteLine objInputFile.WriteLine „*****, das Benutzergruppe [ANFANG] validiert ********“ objInputFile.WriteLine „Suchen“ u. Elternteil u. „in“ u. distinguishedName wenn InStr (UCase (distinguishedName), UCase (Elternteil)) > 0 dann objInputFile.WriteLine „Gruppe“ u. strName u. „ist unter dem gleichen Aufstellungsort wie Benutzer“ u. Benutzer groupParentLdap = „LDAP: /“ u. ROOT_OU u. „,“ u. strDNSDomain objInputFile.WriteLine „bereiten vor sich, Gruppe“ u. strName u. „ von“ u. groupParentLdap zu entfernen objDelGroup = GetObject (groupParentLdap) einstellen objDelGroup.Delete „Gruppe“, „cn=“ u. strName objInputFile.WriteLine „Gruppe“ u. strName u. „wurde entfernt“ beenden wenn objInputFile.WriteLine „*****, das Benutzergruppe [ENDE] validiert ********“ objInputFile.WriteLine Zunächst Beenden WENN Zunächst Enden-Unterseeboot objInputFile.Close WScript.Quit