xy2018
Goto Top

Massen Anpassung AD

Hallo,

ich möchte bei allen Userkonten im Active Directory die Rufnummer auf das E.164 Standard anpassen. Kurze google Suche ergab, dass es wohl bereits fertige Skripte oder Lösungen gibt, da ich so eine Massenanpassung jedoch noch nicht gemacht habe bin ich da vorsichtig zumal ich nichtmal weiss ob wirklich jede einzelne Tel. Nr. das selbe Format hat was für den Skript wichtig wäre?

Eine andere Idee die ich hatte wäre es händisch anzupassen, dafür möchte ich mich aber nicht durch die GUI Klicken sondern am besten alle User mit der Tel Nr exportieren und in eine Excel Tabelle etc. zu ändern danach zurück importieren.

Oder gibt es andere Möglichkeiten / Tools für solche Zwecke die ich jetzt übersehe?

Content-Key: 368203

Url: https://administrator.de/contentid/368203

Printed on: April 16, 2024 at 13:04 o'clock

Member: emeriks
emeriks Mar 15, 2018 at 12:49:30 (UTC)
Goto Top
Hi,
von wieviel Benutzerkonten reden wir denn?

am besten alle User mit der Tel Nr exportieren und in eine Excel Tabelle etc. zu ändern danach zurück importieren.
Na dann mach doch.
Siehe z.B. LDIFDE
Das exportiert zwar nicht tabellarisch, aber Du findest dazu im Web massig Anleitungen, wie man mit diesem Tool umgeht.

Oder Powershell.
siehe Get-ADUser und Set-ADUser
mit Get-ADUser abfragen und als Tabelle exportieren. DistingusihedName und telephoneNumber
Im Excel importieren und Bearbeiten
mit Excel und "Verketten" die Befehle zum Ändern generiern (Set-ADuser ....)
genrierten Befehle ausfühen

E.
Member: colinardo
Solution colinardo Mar 15, 2018, updated at Mar 19, 2018 at 08:27:52 (UTC)
Goto Top
Das war schon oft ein Thema, habe ich hier schon mal vor einiger Zeit ein Skript dazu gepostet
Telefonnummern im Active Directory per Powershell formatieren bzw. vereinheitlichen

Grüße Uwe
Member: emeriks
emeriks Mar 15, 2018 at 12:57:13 (UTC)
Goto Top
Ha, ha
Da haste ja das ganze ONB eingebaut. face-wink
Member: colinardo
colinardo Mar 15, 2018 updated at 13:03:33 (UTC)
Goto Top
Zitat von @emeriks:

Ha, ha
Da haste ja das ganze ONB eingebaut. face-wink
Ja das ist der Erkennung der diversen Nummern-Variationen geschuldet, wie willst du sonst "zuverlässig" Ortsvorwahlen und Ländervorwahlen auseinander halten, da gibt es einige Übereinstimmungen und nicht jede Nummer wird mit Trennen oder Leerzeichen getrennt, da hält sich ja kaum einer dran.
Member: XY2018
XY2018 Mar 19, 2018 at 17:09:22 (UTC)
Goto Top
Danke für den Tipp, das arbeitet aber "Live" an dem AD wäre ein Umweg über eine CSV o.ä. möglich (um erstmal zu testen)?

Wenn ich das richtig verstanden habe müsste ich dann einfach "$changed " in eine Datei umleiten lassen?

Funktioniert das auch bei uneinheitlich eingegebenen Nummern? Im extremfall z.B. kombinationen wie 01234/115818
oder 01234/1234-123 oder 01234 123 123 123 usw.
Member: colinardo
Solution colinardo Mar 19, 2018 updated at 17:19:33 (UTC)
Goto Top
Zitat von @XY2018:

Danke für den Tipp, das arbeitet aber "Live" an dem AD wäre ein Umweg über eine CSV o.ä. möglich (um erstmal zu testen)?
Klar.
Wenn ich das richtig verstanden habe müsste ich dann einfach "$changed " in eine Datei umleiten lassen?
Einfach Zeile 90 weg lassen und dir die Hashtable $changed in der Konsole ausgeben lassen, oder mit Set-Content in eine Datei umleiten lassen.
Funktioniert das auch bei uneinheitlich eingegebenen Nummern? Im extremfall z.B. kombinationen wie 01234/115818
oder 01234/1234-123 oder 01234 123 123 123 usw.
Selbstverständlich., das ist der Sinn des ganzen Aufwands.
Member: XY2018
XY2018 Mar 20, 2018 at 15:59:23 (UTC)
Goto Top
Top Danke funktioniert, indem ich die Zeile 90 weggelassen habe so sehe ich schon mal wie das Skript mit den Tel.Nr. umgeht.
Ich bräuchte nur noch Hilfe bei 2 Punkten

1.) Soll die Nr. gänzlich ohne Leerzeichen sein (E.164 Standard) also +49123456789

2.) Eine Ausgabe in eine Datei und dann die Hilfe wie ich ein Set-AdUser Skript schreibe der diese Datei verarbeitet und ins AD schreibt. Möchte/Muss diese Trennung vom eigentlichem Skript haben, also Daten erst verarbeiten - Anschauen - Dann erst schreiben lassen mit getrenntem Skript.

(Die "nerverei" basiert nicht an der unwilligkeit zum Lernen sondern eher an Zeitmangel sich da mehr im Detail reinzufuchsen, habe tieferes Wissen nur im Batchbereich daher komm ich schon klar bei den Grundlegenden Sachen aber wenns so in tiefergehendes geht habe ich ein besseres Gefühl wenn es derjenige übernimmt der den Skript geschrieben hat und sich mehr auskennt.)

Danke dafür!
Member: XY2018
XY2018 Mar 21, 2018 at 10:20:27 (UTC)
Goto Top
Nr 1.) habe ich lösen können

Zeile 58 von
    return "+$ccode $acode $rest".trim()  
einfach in
    return "+$ccode$acode$rest".trim()  

geändert also die Leerzeichen entfernt :D

Nr. 2 wäre noch offen
Member: XY2018
XY2018 Mar 21, 2018 updated at 13:00:00 (UTC)
Goto Top
Für Nr. 2 würde mir erstmal reichen wenn ich den ganzen Befehl bevor er ausgeführt wird einmal sehe und dann manuell bestätigen kann.

Leider verstehe überhaupt nicht was da im Rahmen von $_ und $changed ausgelöst wird und wie sich der Befehl "Set-AdUser" zusammensetzt.
Sehe ich diese eine kritische Zeile während der Ausführung in Klartext ist es schon was anderes
Member: XY2018
XY2018 Mar 22, 2018 at 07:54:40 (UTC)
Goto Top
Habe es nun so gelöst, das reicht mir als "Sicherheit"

$_ | Set-ADUser -Replace $changed **-Confirm**

So werde ich vor jedem Ausführen der Zeile gefragt und sehe welches Objekt dabei angefasst wird. (Leider nicht was genau geschrieben wird, aber da ja paar Zeilen vorher ohnehin der Inhalt von "$changed" angezeigt wird nehme ich das so hin)

@colinardo TOP! Vielen dank für das Skript welches mir viel Zeit gespart hat