pixel0815
Goto Top

AD Vorwahl von 04xxxx auf +49 xxx ändern per Skript

Hallo zusammen,

ich würde gern auf einen schlag alle Rufnummern die mit einer 0xxxxx anfangen ein +49 xxx machen..
Hat da einer von euch mal sowas per Skript gemacht?

Gruß
Heiko

Content-Key: 243422

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

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

Member: ChrisDynamite
ChrisDynamite Jul 11, 2014 at 14:19:29 (UTC)
Goto Top
hallo!

du meinst wahrscheinlich --> rechte maustaste auf den user, --> eigenschaften --> reiter rufnummern? diese änderungen kann man mit autoit automatisieren. codeaufwand: max 50 zeilen.

grüße chris
Member: pixel0815
pixel0815 Jul 11, 2014 at 14:23:22 (UTC)
Goto Top
Ja genau das Attribut TelephoneNumber.
Mit AutoIT? Hmm...
Member: AnkhMorpork
AnkhMorpork Jul 11, 2014 at 14:28:32 (UTC)
Goto Top
Hi,

die Powershell könnte da auch dein Freund sein/werden. Es gibt nur gaaanz wenige Sachen, die damit nicht realisierbar sind.

Gruß

ANKH
Member: ChrisDynamite
ChrisDynamite Jul 11, 2014 at 14:30:42 (UTC)
Goto Top
ja, aber ini beiden fällen ist es skript-aufwand. ob es das wert ist weiß ich nicht zu beurteilen.
Member: AnkhMorpork
AnkhMorpork Jul 11, 2014 at 14:33:55 (UTC)
Goto Top
Zitat von @ChrisDynamite:

ja, aber ini beiden fällen ist es skript-aufwand. ob es das wert ist weiß ich nicht zu beurteilen.

Aber du hast doch nach Script gefragt???

ANKH
Member: jsysde
jsysde Jul 11, 2014 at 14:34:06 (UTC)
Goto Top
Mahlzeit.

ADModify.NET?

Cheers,
jsysde
Member: Dani
Dani Jul 11, 2014 at 14:52:15 (UTC)
Goto Top
Hallo Heiko,
es gibt dazu einen Blogartikel von Microsoft.


Gruß,
Dani
Member: ChrisDynamite
ChrisDynamite Jul 11, 2014 at 15:42:27 (UTC)
Goto Top
ganz kuhl face-big-smile ich meinte dass sowohl powershell als auch autoit scriptaufwand bedeutet.
Member: AnkhMorpork
AnkhMorpork Jul 11, 2014 updated at 16:26:14 (UTC)
Goto Top
Zitat von @ChrisDynamite:

ganz kuhl face-big-smile ich meinte dass sowohl powershell als auch autoit scriptaufwand bedeutet.

Tut es auch! Aber wo ist dein Problem?
Hat da einer von euch mal sowas per Skript gemacht?
Wie soll das denn nun interpretiert werden???

ANKH
Member: colinardo
colinardo Jul 11, 2014, updated at Jul 12, 2014 at 19:39:29 (UTC)
Goto Top
Moin zusammen,
ist doch alles halb so wild ... könnte vereinfacht so aussehen, wenn es hier nur um die Hauptrufnummer geht, ließe sich aber problemlos auch auf andere Nummern ausweiten:
get-aduser -Filter * -Properties telephoneNumber | ?{$_.telephoneNumber -match '^0049'} | %{set-aduser $_ -Replace @{telephoneNumber=$($_.telephoneNumber -replace '^0049','+49 ')}}  
Die einzelne 0 bei 04 am Anfang kam mir jetzt etwas komisch vor, deshalb hab ich im Script mal den Match auf 0049 am Anfang der Nummer gesetzt. Lässt sich ja einfach anpassen und wenn gewünscht zusätzlich auch weitere Muster berücksichtigen, wenn man im Regex-Pattern die Muster mit einer Pipe voneinander trennt.

Grüße Uwe
Member: pixel0815
pixel0815 Jul 14, 2014 at 11:55:11 (UTC)
Goto Top
Hallo Uwe,

das schaut ja super aus. Ich verstehe nur nicht warum keine Änderung durchgeführt wird. Es gibt nicht mal eine Fehlermeldung face-sad
Member: colinardo
colinardo Jul 14, 2014 updated at 12:05:50 (UTC)
Goto Top
Zitat von @pixel0815:
das schaut ja super aus. Ich verstehe nur nicht warum keine Änderung durchgeführt wird. Es gibt nicht mal eine
Fehlermeldung face-sad
les mal meinen Kommentar, ich habe den Pattern Match auf 0049 am Anfang einer Nummer gesetzt weil mir das 04 komisch vorkam.. musst du halt entsprechend an eure Situation anpassen. geht hier übrigens einwandfrei ...
Member: pixel0815
pixel0815 Jul 14, 2014 at 13:05:28 (UTC)
Goto Top
Ich habe es so angepasst das am Anfang +49 steht und dann auf 0049 geändert werden soll um es mal zu probieren.
Die Telefonnummern sind tatsächlich die Ortsvorwahlen. 041xxx ... die 0 soll weg und dafür ein +49 hin.
Member: colinardo
colinardo Jul 14, 2014 updated at 13:09:24 (UTC)
Goto Top
Zitat von @pixel0815:
Die Telefonnummern sind tatsächlich die Ortsvorwahlen. 041xxx ... die 0 soll weg und dafür ein +49 hin.
achso ... dann haben wir uns missverstanden face-smile
in diesem Fall müsste es so aussehen
get-aduser -Filter * -Properties telephoneNumber | ?{$_.telephoneNumber -match '^0'} | %{set-aduser $_ -Replace @{telephoneNumber=$($_.telephoneNumber -replace '^0','+49 ')}}
Member: pixel0815
pixel0815 Jul 14, 2014 at 13:11:49 (UTC)
Goto Top
Spielt es eine rolle ob dies eine 2012 R2 domäne ist? ..
Member: colinardo
colinardo Jul 14, 2014 updated at 13:14:45 (UTC)
Goto Top
Zitat von @pixel0815:
Spielt es eine rolle ob dies eine 2012 R2 domäne ist? ..
normalerweise nicht. Script läuft hier sowohl auf einem 2012R2 als auch 2008R2.
Member: pixel0815
pixel0815 Jul 14, 2014 at 13:22:30 (UTC)
Goto Top
Es funktioniert. Ich habe den betreffenden Server einmal neugestartet. Super! Du kannst das ja richtig gut. Kann ich damit auch aus Vorname und Nachname eine Emailadresse in das AD schreiben in ein bestimmtes Feld? Ich möchte aus Vorname und Nachname eine Emailadresse generieren. Wir haben leider keinen Exchange Server mehr, aber müssen jetzt eine Software einsetzen die diese Attribute in unserer Domäne abfragt und nicht in unserem externen Mailcenter face-sad ...
Member: colinardo
colinardo Jul 14, 2014 at 13:25:13 (UTC)
Goto Top
Zitat von @pixel0815:
Kann ich damit auch aus Vorname und Nachname eine Emailadresse in das AD schreiben in ein bestimmtes Feld? Ich möchte aus Vorname und Nachname
eine Emailadresse generieren. Wir haben leider keinen Exchange Server mehr, aber müssen jetzt eine Software einsetzen die
diese Attribute in unserer Domäne abfragt und nicht in unserem externen Mailcenter face-sad ...
sicher, kein problem.
Member: pixel0815
pixel0815 Jul 14, 2014 at 13:28:03 (UTC)
Goto Top
face-smile Ich hab mich schon für einen Powershell Workshop angemeldet. Das ist ne tolle Sache.
Member: colinardo
colinardo Jul 14, 2014 updated at 13:36:37 (UTC)
Goto Top
Kann ich damit auch aus Vorname und Nachname eine Emailadresse in das AD schreiben in ein bestimmtes Feld?
Beispiel um eine Mail-Adresse im Format vorname.nachname@domain.local im Description-Feld der User zu erzeugen.
get-aduser -Filter * | ?{$_.Surname -ne $null -and $_.Givenname -ne $null} | %{set-aduser $_ -Replace @{Description="$($_.givenname).$($_.surname)@domain.local"}}

Hier noch ein paar Links zum lernen von Powershell:
Powershell Grundlagen- und Praxisvermittlung:

Viel Erfolg
Grüße Uwe
Member: pixel0815
pixel0815 Jul 14, 2014 at 14:01:33 (UTC)
Goto Top
function ChangeEmail {
$ad.name= $args
$ad.vorname= $args[1]
set-aduser $_ -Replace @{mail="$($_.vorname).$($_.nachname)@domain.de"}}
$ad.Put()
}

$benutzer = Import-Csv “OhneMailAttribut.csv”

foreach ($benutzer in $benutzers) {
ChangeEmail $benutzer.vorname, $benutzer.nachname
}

So würd ichs am liebsten machen. Ich möchte ja eventuelle Sonderzeichen in den Feldern vorher anpassen.
Member: colinardo
colinardo Jul 14, 2014 updated at 15:10:00 (UTC)
Goto Top
Ich möchte ja eventuelle Sonderzeichen in den Feldern vorher anpassen.
Das geht auch in meiner abgekürzten Zeile problemlos, sogar mehrere Zeichen auf einmal mit RegEx !! naja egal, wenn, dann würde das in deiner gewümschten Variante so aussehen, wenn in der CSV Das Semikolon als Trennzeichen eingesetzt wird und der SamAccountName in der entsprechend benannten Spalte der CSV-Datei steht. Die Übergabe der Namen an die Funktion ist Quatsch wenn man den Usernamen hat, Vornamen und Nachnamen stehen ja schon im AD.
function ChangeEmail ($username) {
$user = get-aduser $username -Erroraction SilentlyContinue
if ($user){
  set-aduser $user -Replace @{mail="$($user.givenname).$($user.surname)@domain.de"}  
}Else{
  write-host 'User existiert nicht'  
}
}

$benutzer = Import-Csv "c:\OhneMailAttribut.csv” -delimiter ";"  
foreach($b in $benutzer){
  ChangeEmail $b.SamAccountname
}
Das ist aber jetzt alles schon ziemlich Offtopic, bitte mach bei Fragen dazu und Powershell einen neuen Thread auf und markiere diesen jetzt als gelöst. Merci.

Mach erst mal deinen Kurs, dann sehen wir weiter...

Grüße Uwe