Active Directory Attribut aendern
.
Hey Leute
Ich versuche unser AD zu aendern (wir wanderen mit userer Domaine gerade in einen neuen Forest und da passiert leider etwas unangenehmes:
Jeder User mit Mailadresse hat nun in das Attribut "legacyExchangeDN" "\" eingespeichert.
z.B. Atrribut "LegacyExchangeDN":
/o=%Domainname%/ou=Exchange Administrative Group (ADWSDE2342)/cn=Recipients/cn=Lastname\, Firstname
Unser neuer Exchange mag den "\" aber so gar nicht. Also muss ich aus jedem Account das "\" entfernen. Was bei der Zahl unser USer hier wohl lange dauert wenn ich das von Hand mache.
Daher will ich das wenn moeglich mit Skript machen, haenge aber bei einer bestimmten Stelle.
Ich kann das Atribut auslesen, es ein ein .txt fuer jeden User geben usw. aber ich schaff es nicht das Ding zu aendern.
(Ich dachte an irgendwas mit replace "\", "" oder so aehnlich)
Ich hoffe der Hintergrund ist verstaendlich - Alles in allem brauche ich von jedem USeraccount dem attribut den "\" nicht mehr oder weniger
Ich habe ein paar Skripte gefunden die mit objRecordSet.put arbeiten, leider funktioniert das nicht bei mir.
(http://www.winfrastructure.net/article.aspx?BlogEntry=VBScript-to-modif ..)
Hier was ich bisher zusammen habe und das Attribut schon mal echo't:
(Bitte verzeiht wenn nicht alles richtig im Skript ist. Es funktioniert, ich bin jedoch nicht so Erfahren das ich den "besten" Weg sofort kennen wuerde)
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
'Set objFSO=CreateObject("Scripting.FileSystemObject")
LDAP = "OU=USERS,OU=COMPANY TEST,DC=COMPANY,DC=Local"
' Select a path to save logfile:
'Set objTXT = objFSO.CreateTextFile ("C:\z\legacy_without_ServiceAccounts2.txt", ForAppending = 2)
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = "SELECT legacyExchangeDN FROM 'LDAP://" & LDAP & "' " & "WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
Call SetAccountInfo(objRecordSet)
Sub SetAccountInfo(objRecordSet)
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
'IN DIESE FOLGENDE ZEILE MUESSTE WOHL DAS REPLACE REIN - zum sehen hier nur ein echo
wscript.Echo (objRecordSet.Fields("legacyExchangeDN").Value)
objRecordSet.MoveNext
Loop
wscript.echo " End of Skript!"
end sub
1000 Dank an jeden der sich die Zeit nimmt und reinschaut - egal ob es am ende Hilft oder nicht !
Hey Leute
Ich versuche unser AD zu aendern (wir wanderen mit userer Domaine gerade in einen neuen Forest und da passiert leider etwas unangenehmes:
Jeder User mit Mailadresse hat nun in das Attribut "legacyExchangeDN" "\" eingespeichert.
z.B. Atrribut "LegacyExchangeDN":
/o=%Domainname%/ou=Exchange Administrative Group (ADWSDE2342)/cn=Recipients/cn=Lastname\, Firstname
Unser neuer Exchange mag den "\" aber so gar nicht. Also muss ich aus jedem Account das "\" entfernen. Was bei der Zahl unser USer hier wohl lange dauert wenn ich das von Hand mache.
Daher will ich das wenn moeglich mit Skript machen, haenge aber bei einer bestimmten Stelle.
Ich kann das Atribut auslesen, es ein ein .txt fuer jeden User geben usw. aber ich schaff es nicht das Ding zu aendern.
(Ich dachte an irgendwas mit replace "\", "" oder so aehnlich)
Ich hoffe der Hintergrund ist verstaendlich - Alles in allem brauche ich von jedem USeraccount dem attribut den "\" nicht mehr oder weniger
Ich habe ein paar Skripte gefunden die mit objRecordSet.put arbeiten, leider funktioniert das nicht bei mir.
(http://www.winfrastructure.net/article.aspx?BlogEntry=VBScript-to-modif ..)
Hier was ich bisher zusammen habe und das Attribut schon mal echo't:
(Bitte verzeiht wenn nicht alles richtig im Skript ist. Es funktioniert, ich bin jedoch nicht so Erfahren das ich den "besten" Weg sofort kennen wuerde)
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
'Set objFSO=CreateObject("Scripting.FileSystemObject")
LDAP = "OU=USERS,OU=COMPANY TEST,DC=COMPANY,DC=Local"
' Select a path to save logfile:
'Set objTXT = objFSO.CreateTextFile ("C:\z\legacy_without_ServiceAccounts2.txt", ForAppending = 2)
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = "SELECT legacyExchangeDN FROM 'LDAP://" & LDAP & "' " & "WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
Call SetAccountInfo(objRecordSet)
Sub SetAccountInfo(objRecordSet)
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
'IN DIESE FOLGENDE ZEILE MUESSTE WOHL DAS REPLACE REIN - zum sehen hier nur ein echo
wscript.Echo (objRecordSet.Fields("legacyExchangeDN").Value)
objRecordSet.MoveNext
Loop
wscript.echo " End of Skript!"
end sub
1000 Dank an jeden der sich die Zeit nimmt und reinschaut - egal ob es am ende Hilft oder nicht !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 195276
Url: https://administrator.de/contentid/195276
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
Sicher das du es so machen willst?
Und dich mit den nebenwirkungen beim Ändern des LegacyExchangeDN schon auseinander gesetzt? Sonst nützt dir evtl. dieses Tool Microsoft Exchange Server LegacyDN Utility von MS zum Ändern.
Gruß,
Peter
Sicher das du es so machen willst?
cn=Lastname\, Firstname
Wie kommt das "\" in eure Namen denn rein? Das muss doch einen zwingenden Grund haben, oder?Und dich mit den nebenwirkungen beim Ändern des LegacyExchangeDN schon auseinander gesetzt? Sonst nützt dir evtl. dieses Tool Microsoft Exchange Server LegacyDN Utility von MS zum Ändern.
Gruß,
Peter