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-ID: 243422

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

Ausgedruckt am: 24.11.2024 um 09:11 Uhr

ChrisDynamite
ChrisDynamite 11.07.2014 um 16:19:29 Uhr
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
pixel0815
pixel0815 11.07.2014 um 16:23:22 Uhr
Goto Top
Ja genau das Attribut TelephoneNumber.
Mit AutoIT? Hmm...
AnkhMorpork
AnkhMorpork 11.07.2014 um 16:28:32 Uhr
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
ChrisDynamite
ChrisDynamite 11.07.2014 um 16:30:42 Uhr
Goto Top
ja, aber ini beiden fällen ist es skript-aufwand. ob es das wert ist weiß ich nicht zu beurteilen.
AnkhMorpork
AnkhMorpork 11.07.2014 um 16:33:55 Uhr
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
jsysde
jsysde 11.07.2014 um 16:34:06 Uhr
Goto Top
Mahlzeit.

ADModify.NET?

Cheers,
jsysde
Dani
Dani 11.07.2014 um 16:52:15 Uhr
Goto Top
Hallo Heiko,
es gibt dazu einen Blogartikel von Microsoft.


Gruß,
Dani
ChrisDynamite
ChrisDynamite 11.07.2014 um 17:42:27 Uhr
Goto Top
ganz kuhl face-big-smile ich meinte dass sowohl powershell als auch autoit scriptaufwand bedeutet.
AnkhMorpork
AnkhMorpork 11.07.2014 aktualisiert um 18:26:14 Uhr
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
colinardo
colinardo 11.07.2014, aktualisiert am 12.07.2014 um 21:39:29 Uhr
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
pixel0815
pixel0815 14.07.2014 um 13:55:11 Uhr
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
colinardo
colinardo 14.07.2014 aktualisiert um 14:05:50 Uhr
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 ...
pixel0815
pixel0815 14.07.2014 um 15:05:28 Uhr
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.
colinardo
colinardo 14.07.2014 aktualisiert um 15:09:24 Uhr
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 ')}}
pixel0815
pixel0815 14.07.2014 um 15:11:49 Uhr
Goto Top
Spielt es eine rolle ob dies eine 2012 R2 domäne ist? ..
colinardo
colinardo 14.07.2014 aktualisiert um 15:14:45 Uhr
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.
pixel0815
pixel0815 14.07.2014 um 15:22:30 Uhr
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 ...
colinardo
colinardo 14.07.2014 um 15:25:13 Uhr
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.
pixel0815
pixel0815 14.07.2014 um 15:28:03 Uhr
Goto Top
face-smile Ich hab mich schon für einen Powershell Workshop angemeldet. Das ist ne tolle Sache.
colinardo
colinardo 14.07.2014 aktualisiert um 15:36:37 Uhr
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
pixel0815
pixel0815 14.07.2014 um 16:01:33 Uhr
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.
colinardo
colinardo 14.07.2014 aktualisiert um 17:10:00 Uhr
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