abra-x-as 10 Geschrieben 9. Februar 2010 Melden Teilen Geschrieben 9. Februar 2010 Hallo zsammen, ich habe eine Liste mit Accountnamen. Für diese Accountnamen möchte ich die ADSI Einträge mDBOverHardQuotaLimit, mDBOverQuotaLimit, mDBStorageQuota verändern. Hat zufällig jemand ein Script bei der Hand, dass diese Einträge ändert? Am besten wäre natürlich ein Script dass aus einer csv liest. Normalerweise würde ich das bei ein paar Benutzern mit der Hand machen. Dummerweise sprechen wir hier von 12000+ Benutzern. :shock: Ich wäre euch wirklich dankbar wenn ihr da was aus eurer Schatzkiste zabern könnt. Zitieren Link zu diesem Kommentar
NorbertFe 2.027 Geschrieben 9. Februar 2010 Melden Teilen Geschrieben 9. Februar 2010 Wie wäre es, wenn du einfach admodify nimmst? Bye Norbert Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 9. Februar 2010 Melden Teilen Geschrieben 9. Februar 2010 Hallo Abraxas, probiers mal hiermit... das Script liest die Anmeldenamen der Benutzer aus einer Input-Datei, sucht dann das entsprechenden User-Objekt und setzt dann die Werte. Ich habe mal angenommen, dass Du fixe Werte setzen willst, wenn die Werte sich noch pro User unterscheiden und dass in der Input-Datei hinter dem User stehen muß, dann gibt's noch was zu Ändern am Script... Aber mit einer Text-Datei, in der pro Zeile ein Anmeldename eines Users steht, müßte es funktionieren. Vergiss nicht, deinen eigenen Domänennamen als LDAP-PFad einzusetzen. Anregungen/Erklärungen, wie das Script die User sucht und die Werte setzt, gibt's hier: SelfADSI : LDAP Objekte im Verzeichnis suchen mit ADO SelfADSI : LDAP Objekt-Attribute schreiben On Error resume next [color="Red"]inputFilename = "c:\usernames.txt" 'hier eigene Werte einsetzen! domainDN = "DC=yourdomain,dc=com" 'wert für Domäne "yourdomain.com"[/color] Set ado = CreateObject("ADODB.Connection") 'Neue ADO Connection erzeugen ado.Provider = "ADSDSOObject" 'Die ADSI-Schnittstelle verwenden ado.Open "ADS-Search" 'Beliebigen Namen für die Connection vergeben Set adoCmd = CreateObject("ADODB.Command") 'Neues ADO-Kommando erzeugen adoCmd.ActiveConnection = ado 'Zuordnung zur bestehenden ADO-Connection Set fso = CreateObject ("Scripting.Filesystemobject") 'Input-Datei öffnen Set inputFile = fso.OpenTextFile(inputFilename) While Not inputFile.AtEndOfStream 'Zeilen mit Usernamen lesen... userName = Trim(inputFile.ReadLine()) If (Len(userName) > 0) Then wscript.Echo "<LDAP://" & domainDN & ">;(sAMAccountName=" & userName & ");ADsPath;subtree" adoCmd.CommandText = "<LDAP://" & domainDN & ">;(sAMAccountName=" & userName & ");ADsPath;subtree" Set objectList = adoCmd.Execute 'Suche durchführen If (objectList.RecordCount = 1) Then Err.Clear 'mit dem UserObject verbinden Set user = GetObject(objectList.Fields("ADsPath")) If (Err.Number <> 0) Then WScript.Echo "ERROR: Could not connect to user: " & userName & " : " & Err.Number End If user.mDBStorageQuota = [color="Red"]180000[/color] 'Werte setzen user.mDBOverQuotaLimit = [color="Red"]200000[/color] user.mDBOverHardQuotaLimit = [color="Red"]240000[/color] Err.Clear user.SetInfo If (Err.Number <> 0) Then WScript.Echo "ERROR: Could not set limits for user: " & userName & " : " & Err.Number End If Else WScript.Echo "ERROR: User not found: " & userName End If End If Wend Gruß, Philipp Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 9. Februar 2010 Melden Teilen Geschrieben 9. Februar 2010 Moin, faq-o-matic.net Bearbeiten von Mailboxattributen mit Admodify Die beste Variante (wie Norbert schon richtig sagte). Kann nämlich auch Undo und ist grafisch. Scripting ist prima, aber will bei solchen Aktionen sehr gut getestet sein. Gruß, Nils Zitieren Link zu diesem Kommentar
abra-x-as 10 Geschrieben 9. Februar 2010 Autor Melden Teilen Geschrieben 9. Februar 2010 Hallo Abraxas, probiers mal hiermit... das Script liest die Anmeldenamen der Benutzer aus einer Input-Datei, sucht dann das entsprechenden User-Objekt und setzt dann die Werte. Ich habe mal angenommen, dass Du fixe Werte setzen willst, wenn die Werte sich noch pro User unterscheiden und dass in der Input-Datei hinter dem User stehen muß, dann gibt's noch was zu Ändern am Script... Aber mit einer Text-Datei, in der pro Zeile ein Anmeldename eines Users steht, müßte es funktionieren. Vergiss nicht, deinen eigenen Domänennamen als LDAP-PFad einzusetzen. Anregungen/Erklärungen, wie das Script die User sucht und die Werte setzt, gibt's hier: SelfADSI : LDAP Objekte im Verzeichnis suchen mit ADO SelfADSI : LDAP Objekt-Attribute schreiben On Error resume next [color="Red"]inputFilename = "c:\usernames.txt" 'hier eigene Werte einsetzen! domainDN = "DC=yourdomain,dc=com" 'wert für Domäne "yourdomain.com"[/color] Set ado = CreateObject("ADODB.Connection") 'Neue ADO Connection erzeugen ado.Provider = "ADSDSOObject" 'Die ADSI-Schnittstelle verwenden ado.Open "ADS-Search" 'Beliebigen Namen für die Connection vergeben Set adoCmd = CreateObject("ADODB.Command") 'Neues ADO-Kommando erzeugen adoCmd.ActiveConnection = ado 'Zuordnung zur bestehenden ADO-Connection Set fso = CreateObject ("Scripting.Filesystemobject") 'Input-Datei öffnen Set inputFile = fso.OpenTextFile(inputFilename) While Not inputFile.AtEndOfStream 'Zeilen mit Usernamen lesen... userName = Trim(inputFile.ReadLine()) If (Len(userName) > 0) Then wscript.Echo "<LDAP://" & domainDN & ">;(sAMAccountName=" & userName & ");ADsPath;subtree" adoCmd.CommandText = "<LDAP://" & domainDN & ">;(sAMAccountName=" & userName & ");ADsPath;subtree" Set objectList = adoCmd.Execute 'Suche durchführen If (objectList.RecordCount = 1) Then Err.Clear 'mit dem UserObject verbinden Set user = GetObject(objectList.Fields("ADsPath")) If (Err.Number <> 0) Then WScript.Echo "ERROR: Could not connect to user: " & userName & " : " & Err.Number End If user.mDBStorageQuota = [color="Red"]180000[/color] 'Werte setzen user.mDBOverQuotaLimit = [color="Red"]200000[/color] user.mDBOverHardQuotaLimit = [color="Red"]240000[/color] Err.Clear user.SetInfo If (Err.Number <> 0) Then WScript.Echo "ERROR: Could not set limits for user: " & userName & " : " & Err.Number End If Else WScript.Echo "ERROR: User not found: " & userName End If End If Wend Gruß, Philipp Hallo Philipp, Das Script sieht gut aus. Dummerweise kommt, egal nach welchem User ich suche User not found: User Ich weiß noch nicht wirklich woran das liegt. @Norbert: ADModify kann ich nicht benutzen, da ich keine Rechte habe über die Powershell Werte zu ändern. Zitieren Link zu diesem Kommentar
BrainStorm 10 Geschrieben 9. Februar 2010 Melden Teilen Geschrieben 9. Februar 2010 Hallo abra-x-as, ADModify kann ich nicht benutzen, da ich keine Rechte habe über die Powershell Werte zu ändern. Wie kommst du zu der Annahme dass ADModify ein Powerhell Befehl wäre? Und die Berechtigungen sind ausserdem nicht an das Werkzeug (Powershell, ADModify, LDIFDE...) gebunden. Zitieren Link zu diesem Kommentar
NorbertFe 2.027 Geschrieben 9. Februar 2010 Melden Teilen Geschrieben 9. Februar 2010 Hallo abra-x-as, Wie kommst du zu der Annahme dass ADModify ein Powerhell Befehl wäre? Und die Berechtigungen sind ausserdem nicht an das Werkzeug (Powershell, ADModify, LDIFDE...) gebunden. Danke, wollt mich grad dazu äußern. ;) Bye Norbert Zitieren Link zu diesem Kommentar
BrainStorm 10 Geschrieben 9. Februar 2010 Melden Teilen Geschrieben 9. Februar 2010 Danke, wollt mich grad dazu äußern. ;) Darfst gerne ergänzen ;) Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 9. Februar 2010 Melden Teilen Geschrieben 9. Februar 2010 Hey, ich nochmal, also grundsätzlich haben die anderen Jungs natürlich Recht und ADModify kann das auch, wobei du immer Rechte brauchst, das zu tun, was du tun willst im AD, egal ob mit einem VBScript, Powershell oder inem Tool.... also daran kann es nicht liegen. Naja, das Script hat in unserem Fall halt die Stärke, dass man eben genau die User aus der Datei auslesen kann, deren Wert man setzen will, und dass man es später erweitern kann wenn man für verschiedene User verschiedene Werte setzen will... Wenn du einfach ALLE User der Domäne oder unterhalb einer bestimmten OU mit einem Einheitswert beglücken willst, dann geht es mit ADModify wirklich _viel_ schneller... Jetzt zu Deinen nicht gefundenen Benutzern: Sicher dass Du oben bei domainDN = ... den richtigen LDAP-PFad Deiner Domäne gesetzt hast... Also für firma.de müßte z.B. DC=firma,DC=de da stehen, und für support.firma.de entsprechend dann DC=support,DC=firma,DC=de. :eek: Außerdem mußt Du das Script auf einem Domänenmitglied ausführen, und zwar als Benutzer, der das Recht dazu hat, im AD die entsprechenden Benutzereigenschaften zu ändern. :eek: Und: Bitte geh sicher, dass in deiner Input-Textdatei mit Benutzernamen pro Zeile _NUR_ der Anmeldenamen des Benutzers dasteht. Ist da vielleicht noch ein Semicolon hinter jedem Namen?? :eek: Die Fehlermeldung wirkt so, als wenn in der Datei in mindestens in der erten Zeile "User" steht, vielleicht als Spalten-Header irgendeines CSVDE-Exports.... Gruß, Philipp Zitieren Link zu diesem Kommentar
abra-x-as 10 Geschrieben 9. Februar 2010 Autor Melden Teilen Geschrieben 9. Februar 2010 Hallo, super, Danke Jungs. Mit ADModify hats funktioniert. Ich kannte das Programm nicht. Aber man lernt ja nie aus :D Zitieren Link zu diesem Kommentar
NorbertFe 2.027 Geschrieben 9. Februar 2010 Melden Teilen Geschrieben 9. Februar 2010 Hallo, super, Danke Jungs. Mit ADModify hats funktioniert. Welch Wunder. ;) Ich kannte das Programm nicht. Aber ... mußte erst mal Mutmaßungen äußern. ;) Bye Norbert Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.