Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Active Directory Forum


Alles zum Thema Active Directory — Q & A zu Active Directory Architektur, Konfiguration, Troubleshooting


Antwort
     
Themen-Optionen
Alt 09.02.2010, 10:25   #1
Member
 
Offline
Registriert seit: 11-2006
Ort: mcseboard.de/Users/
Beiträge: 138
adsi Attribute per Script setzen

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.

Ich wäre euch wirklich dankbar wenn ihr da was aus eurer Schatzkiste zabern könnt.

Signatur
Die Welt ist eine Google

    Mit Zitat antworten
Alt 09.02.2010, 11:17   #2
Expert Member
 
Benutzerbild von NorbertFe
 
Offline
Registriert seit: 07-2007
Beiträge: 15.931
Wie wäre es, wenn du einfach admodify nimmst?

Bye
Norbert

Signatur
Frank, I never thought I'd say this again. I'm getting the pig!

    Mit Zitat antworten
Alt 09.02.2010, 11:19   #3
Junior Member
 
Benutzerbild von P.Foeckeler
 
Offline
Registriert seit: 11-2009
Beiträge: 108
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


Code:
On Error resume next
inputFilename = "c:\usernames.txt"   'hier eigene Werte einsetzen!
domainDN = "DC=yourdomain,dc=com"                   'wert für Domäne "yourdomain.com"


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  = 180000				'Werte setzen
			user.mDBOverQuotaLimit = 200000
			user.mDBOverHardQuotaLimit = 240000
			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
    Mit Zitat antworten
Alt 09.02.2010, 12:15   #4
Expert Member
 
Benutzerbild von NilsK
 
Offline
Registriert seit: 06-2008
Ort: Hannover
Beiträge: 7.352
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

Signatur
Nils Kaczenski

MVP Directory Services: Architecture
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!

    Mit Zitat antworten
Alt 09.02.2010, 12:43   #5
Member
 
Offline
Registriert seit: 11-2006
Ort: mcseboard.de/Users/
Beiträge: 138
Zitat von P.Foeckeler Beitrag anzeigen
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


Code:
On Error resume next
inputFilename = "c:\usernames.txt"   'hier eigene Werte einsetzen!
domainDN = "DC=yourdomain,dc=com"                   'wert für Domäne "yourdomain.com"


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  = 180000				'Werte setzen
			user.mDBOverQuotaLimit = 200000
			user.mDBOverHardQuotaLimit = 240000
			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.

Signatur
Die Welt ist eine Google

    Mit Zitat antworten
Alt 09.02.2010, 12:47   #6
Expert Member
 
Benutzerbild von BrainStorm
 
Offline
Registriert seit: 11-2004
Ort: Karlsruhe/Heilbronn
Beiträge: 2.415
Hallo abra-x-as,

Zitat von abra-x-as Beitrag anzeigen
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.

Signatur
MCT

    Mit Zitat antworten
Alt 09.02.2010, 12:50   #7
Expert Member
 
Benutzerbild von NorbertFe
 
Offline
Registriert seit: 07-2007
Beiträge: 15.931
Zitat von BrainStorm Beitrag anzeigen
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

Signatur
Frank, I never thought I'd say this again. I'm getting the pig!

    Mit Zitat antworten
Alt 09.02.2010, 12:51   #8
Expert Member
 
Benutzerbild von BrainStorm
 
Offline
Registriert seit: 11-2004
Ort: Karlsruhe/Heilbronn
Beiträge: 2.415
Zitat von NorbertFe Beitrag anzeigen
Danke, wollt mich grad dazu äußern.
Darfst gerne ergänzen

Signatur
MCT

    Mit Zitat antworten
Alt 09.02.2010, 13:04   #9
Junior Member
 
Benutzerbild von P.Foeckeler
 
Offline
Registriert seit: 11-2009
Beiträge: 108
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.

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.

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?? 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
    Mit Zitat antworten
Alt 09.02.2010, 14:47   #10
Member
 
Offline
Registriert seit: 11-2006
Ort: mcseboard.de/Users/
Beiträge: 138
Hallo,

super, Danke Jungs. Mit ADModify hats funktioniert.

Ich kannte das Programm nicht. Aber man lernt ja nie aus

Signatur
Die Welt ist eine Google

    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
ILO setzen mit xml script edocom Windows Server Forum 1 13.05.2010 14:36
VBS-Script useraccountcontrol setzen Thunderdragon17 Windows Forum — Scripting 0 11.03.2009 11:13
Script - Drucker als std. setzen magiceye Windows Forum — Scripting 3 06.02.2008 17:03
ADSI-Script: Benutzeranlage ginka Active Directory Forum 4 18.10.2005 17:23
per script ip-adresse setzen heckenbichler Windows Forum — Allgemein 3 09.01.2005 21:39


Alle Zeitangaben in MEZ/CET. Es ist jetzt 04:46 Uhr. Seite generiert in 0,044 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang