Powershell - Active Directory Nummern bearbeiten
Moinsen zusammen,
nach vielem Hin und Her habe bin ich jetzt soweit gekommen und nu hört s gerade irgendwie auf.
Ich möchte im AD die Telefonnummer anpassen - so weit so gut.
Das Skript macht das auch ganz gut inzwischen, allerdings habe ich ein Problem mit Bindestrichen und Schrägstrichen zwischen den Nummern.
Dann bekomme ich den Fehler: Cannot convert value "+494121/111111" to type "System.Double". Error: "Input string was not in a correct format."
Er macht dann folgendes in der Anzeige.
Alte Nummer
+49 4121/111-111 +49 494121 111 111
Ich möchte damit lediglich die Nummern die vorhanden sind in die Internationale Variante konvertieren.
Hier der Code:
nach vielem Hin und Her habe bin ich jetzt soweit gekommen und nu hört s gerade irgendwie auf.
Ich möchte im AD die Telefonnummer anpassen - so weit so gut.
Das Skript macht das auch ganz gut inzwischen, allerdings habe ich ein Problem mit Bindestrichen und Schrägstrichen zwischen den Nummern.
Dann bekomme ich den Fehler: Cannot convert value "+494121/111111" to type "System.Double". Error: "Input string was not in a correct format."
Er macht dann folgendes in der Anzeige.
Alte Nummer
+49 4121/111-111 +49 494121 111 111
Ich möchte damit lediglich die Nummern die vorhanden sind in die Internationale Variante konvertieren.
Hier der Code:
Add-PSSnapin Quest.ActiveRoles.ADManagemetn
#Benutzeraccounts in OU
$OU = "OU=TestOUT=_Benutzer,DC=kit,DC=pi"
$users = get-qaduser -SearchRoot $OU -SizeLimit 0
foreach ($user in $users)
{
if (($user.PhoneNumber).length -gt 1)
{
$user.PhoneNumber -replace "[).( -]"|
ForEach-Object {
#format regio nummern
$i = "{0: +49 ##### ### ###}" -f [double]$_
$output = New-Object PSObject
$output | Add-Member -MemberType NoteProperty UserName($user.DisplayName)
$output | Add-Member -MemberType NoteProperty OldNumber($user.PhoneNumber)
$output | Add-Member -MemberType NoteProperty NewNumber($i)
#set-qaduser $user.dn -PhoneNumber $i
}
Write-Output $output
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 244573
Url: https://administrator.de/contentid/244573
Ausgedruckt am: 16.11.2024 um 21:11 Uhr
16 Kommentare
Neuester Kommentar
Moin,
warum ein AD-Zusatzmodul verwenden ? Geht doch alles mit Bordmitteln ... Für dich nochmal länger ausgeschrieben
Du solltest aber mal posten ob in allen Nummern der Schrägstrich die Vorwahl vom Rest trennt und ob die Extensions jeweils immer 3 Stellen lang sind. Dann wäre das für uns einfacher
Grüße Uwe
p.s. Die Kategorie C++ ist wohl nicht sehr passend gewählt, schiebe es in Batch & Shell
warum ein AD-Zusatzmodul verwenden ? Geht doch alles mit Bordmitteln ... Für dich nochmal länger ausgeschrieben
Import-Module ActiveDirectory
$OU = "OU=TestOUT=_Benutzer,DC=kit,DC=pi"
$users = get-aduser -Filter * -SearchBase $OU -Properties telephoneNumber -ResultSetSize $null | ?{$_.telephoneNumber -ne $null}
$log = @()
foreach($user in $users){
$oldNumber = $user.telephoneNumber
$newNumber = $oldnumber -replace '^(0|\+49|49)[^\d]*(0?(\d{4}))[^\d]*(\d{3})[^\d]*(\d*)$','+49 $3 $4 $5'
#set-aduser $user -Replace @{telephoneNumber=$newNumber}
$log += New-Object PSObject -Property @{"Username"=$user.Name;"OldNumber"=$oldNumber;"NewNumber"=$newNumber}
}
$log | select Username,OldNumber,NewNumber | ft
Grüße Uwe
p.s. Die Kategorie C++ ist wohl nicht sehr passend gewählt, schiebe es in Batch & Shell
teste mal die oben korrigierte Fassung. Es ist hier nicht so einfach alle Varianten zu erfassen ohne zu wissen wie lang die Orts-Vorwahl ist wenn diese nicht von den anderen Zahlen getrennt ist, dann müsste man dies mit einer Liste von Vorwahlen vergleichen ... Es reicht aber normal schon das alle Sonderzeichen raus sind und +49 vorne dran steht. Ich würde es nicht so kompliziert machen.
Zitat von @pixel0815:
Wenn das noch gehn würde dann mach ich alles andere von Hand und schließe dich in mein Nachtgebet ein
:o)))))
dann bete mal , Anpassung siehe oben.Wenn das noch gehn würde dann mach ich alles andere von Hand und schließe dich in mein Nachtgebet ein
:o)))))
Achtung ganze Zeile 7 korrigiert ...
[OT]
danke, aber leider hat es hier gerade das Gegenteil bewirkt, hier is grad das ###haus übergelaufen wat ne Sauerei ....Na dem Seppel der hier grad so'n Monster abgeseilt hat, werd ich aber was erzählen
[/OT]
Viel Erfolg weiterhin
Grüße Uwe
danke, aber leider hat es hier gerade das Gegenteil bewirkt, hier is grad das ###haus übergelaufen wat ne Sauerei ....Na dem Seppel der hier grad so'n Monster abgeseilt hat, werd ich aber was erzählen
[/OT]
Viel Erfolg weiterhin
Grüße Uwe
Hallo,
ich würde mit Deinem Skript gerne Handynummern (mobile) bearbeiten wollen.
Für das Regex habe ich mit den Schlüssel "'^(\+\d{1,4})([\s-])(\(\d{1,4}\))([\s-])(\d{1,9})'" gebaut.
Nun würde ich einfach aus deinem Skript "telefonnumber" gegen "mobile" tauschen und gut.
Was ich aber nicht so ganz verstehe ist wie setze ich die Änderungen jetzt um?
Wie machst du das '+49 $3 $4 $5' fest? Dies zerreißt meinen Schlüssel natürlich.
Hast du da mal einen Tipp zu?
ich würde mit Deinem Skript gerne Handynummern (mobile) bearbeiten wollen.
Für das Regex habe ich mit den Schlüssel "'^(\+\d{1,4})([\s-])(\(\d{1,4}\))([\s-])(\d{1,9})'" gebaut.
Nun würde ich einfach aus deinem Skript "telefonnumber" gegen "mobile" tauschen und gut.
Was ich aber nicht so ganz verstehe ist wie setze ich die Änderungen jetzt um?
Wie machst du das '+49 $3 $4 $5' fest? Dies zerreißt meinen Schlüssel natürlich.
Hast du da mal einen Tipp zu?
Auch wenn der Beitrag schon älter ist, eine umfassende Lösung zur einheitlichen Formatierung alle Rufnummern der User im AD mit automatischer Erkennung des Ländercodes und deutscher Vorwahlen habe ich hier gepostet:
Telefonnummern im Active Directory per Powershell formatieren bzw. vereinheitlichen
Grüße Uwe
Telefonnummern im Active Directory per Powershell formatieren bzw. vereinheitlichen
Grüße Uwe
Hallo,
ich versuche das Script laufen zu lassen, scheitere aber an folgender fehlermeldung..
MethodInvocationException: C:\Scripts\format_phone_numbers.ps1:78
Line |
78 | … $acode = $acode.Substring(0,$acode.Length - $ecode.Length …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Exception calling "Substring" with "2" argument(s): "length ('-2') must be a non-negative value. (Parameter
| 'length') Actual value was -2."
Kann mir jemand helfen?
Das Format ist momentan +49123412312345 und soll so aussehen +49 1234 123 - 1234
Danke
ich versuche das Script laufen zu lassen, scheitere aber an folgender fehlermeldung..
MethodInvocationException: C:\Scripts\format_phone_numbers.ps1:78
Line |
78 | … $acode = $acode.Substring(0,$acode.Length - $ecode.Length …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Exception calling "Substring" with "2" argument(s): "length ('-2') must be a non-negative value. (Parameter
| 'length') Actual value was -2."
Kann mir jemand helfen?
Das Format ist momentan +49123412312345 und soll so aussehen +49 1234 123 - 1234
Danke