The estimated reading time 3 minutes

Viele der kleineren Kunden benutzen CTI Software für die Verbindung von Telefon und PC. Oftmals ist diese auch mit dem ActiveDirectory des Unternehmens verknüpft und verwendet SIP Adresse im Attribut „proxyaddresses“. Manchmal übernimmt eine solche Software bei der Installation einfach den UPN (UserPrincipalName), welcher aber nicht immer der E-Mail Adresse entspricht. „Falsche“ SIP Adressen sind die Konsequenz dieser Aktion, und wenn dann ein AD Sync zu Azure gemacht wird, fällt regelmäßig auf, dass sich keiner mit seiner E-Mail Adresse in Skype for Business anmelden kann.

HINWEIS: Für das folgendes Skript wird administrativer Zugang zum AD + das PowerShell Modul AD benötigt.

In meiner Demo-Umgebung existieren nur drei generierte Benutzer, es sollte aber auch in größeren Umgebungen mit dem Skript kein Problem sein.

Wie man im nächsten Screenshot sehen kann, haben die Benutzer eine E-Mail Adresse aber eine andere SIP Adresse.

Es existieren teilweise sogar zwei SIP Adressen, welche beide falsch sind.

Was macht also mein Skript:
1. sucht nach allen Benutzer die überhaupt eine E-Mail Adresse definiert haben
2.exportiert alle SIP Adressen in eine CSV Datei (vor der Änderung)
3. sucht nach SIP Adressen und entfernt alle
4. fügt die neue SIP Adresse anhand der Mailadresse hinzu
5. exportiert alle neuen SIP Adressen in eine separate Datei

Import-Module ActiveDirectory
#OU Path where users with false SIP addresses are stored (distinguishedName)
$ou = "OU=DEMO-USERS,OU=DEMO,DC=demo,DC=it-koehler,DC=com"
#export path for csv before editing
$exppath = "C:\temp" 
$exportpath = "$exppath\sip-orig.csv"
#export path after correction of sip address
$exportpathedit = "$exppath\sip-edited.csv"
# searches and writes all users into varialbe users where E-Mail attribute is not empty and contains @demo
$users = (Get-ADUser -Filter * -Properties * -SearchBase "$ou" | Where-Object {$_.mail -ne $null} | Sort-Object mail)
# NOTE: if you want to filter your mail addresses you can replace the line above with the following line and replace also "@demo"
#$users = (Get-ADUser -Filter * -Properties * -SearchBase "$ou" | Where-Object {($_.mail -ne $null) -and ($_.mail -like "*@demo*")} | Sort-Object mail) 
#export to csv before editing anything 
# https://www.blackforce.co.uk/2016/09/23/export-list-users-ad-proxy-addresses
$users | Select-Object Name, @{L = "ProxyAddresses"; E = { $_.ProxyAddresses -join ";"}} | Export-Csv -Path $exportpath -Delimiter ";" -NoTypeInformation
#the following code is done for every user found in $users 
foreach($user in $users){
  #getting emailaddress  
  $email = (($user).mail)
  #getting all SIP addresses from attribute "proxyaddresses"
  $proxy = (($user).proxyAddresses) | Where-Object {$_ -like "*SIP:*"}
  Write-Host "User: $email changed"
   #remove every sip address from user (even if there are more than one)   
   foreach ($addr in $proxy){
       Set-Aduser -identity "$User" -Remove @{proxyAddresses="$addr"}
   }
    #adding one sip address from the mail attribute 
    Set-ADUser -Identity "$user" -Add @{proxyAddresses ="SIP:"+"$email"}
}
#export all SIP Addresses after editing
$users = (Get-ADUser -Filter * -Properties * -SearchBase "$ou" | Where-Object {$_.mail -ne $null} | Sort-Object mail)
$users | Select-Object Name, @{L = "ProxyAddresses"; E = { $_.ProxyAddresses -join ";"}} | Export-Csv -Path $exportpathedit -Delimiter ";" -NoTypeInformation

Zwei Parameter müssen im Skript angepasst werden:
1. $ou = “OU=DEMO-USERS,OU=DEMO,DC=demo,DC=it-koehler,DC=com”
2. $exppath = “C:\temp”

CSV vor der Änderung bzw. danach sehen identisch aus, es sollten nur unterschiedliche Werte stehen:

Es lassen sich also sehr schnell SIP Adressen von vielen Benutzern korrigieren. Aber Vorsicht: bitte zuvor bei einigen Benutzern testen um eventuelle Probleme mit der CTI Software zu prüfen.
Viel Spaß mit dem Skript, drückt auf „helpful“ wenn euch der Artikel gefallen hat.

Print Friendly, PDF & Email
  • Was this Helpful ?
  • yes   no