Benutzer mit den meisten Antworten
E-Mail Adressen hinzufügen

Frage
-
Hallo,
ich habe hier folgende Aufgabenstellung: Es sollen neue primäre Mailadressen vergeben und die Alten als Sekundäre noch ca. ein 1/2 Jahr vorgehalten werden.
Wir haben eine 2003-Domänenstruktur und einen Exchange 2003 im Einsatz.
Gruß
Armin
Antworten
-
du hast:
$c.proxyaddresses = "SMTP:" + $newaddress
solltest aber
$c.proxyaddresses+="SMTP:"+$newaddress
bei deinem = ersetz du alle durch die neue mit += addest du eine weitere in den array....
hilft dir das?
- Als Antwort vorgeschlagen KloinerFeigling83 Sonntag, 23. Januar 2011 19:16
- Als Antwort markiert AucheinName Montag, 24. Januar 2011 15:37
Alle Antworten
-
http://mostlymail.blogspot.com/2008/03/modify-exchange-2003-users-primary-smtp.html
das ist glaube ich das was du suchst, leider hab ich keinen exchange aber es geht auch ohne quest, in meinem script suche ich alle user unterhalb einer best ou. bei denen ich das mail-objekt in der ad setze, da ich keinen exchangeserver habe müsstest du dir den smtp part aus dem script rausziehen....
$strFilter = "(objectCategory=User)" # nur user wenn account expires etc $objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://ou=testusers,dc=myinternaldomain,dc=local") $objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = $objDomain $objSearcher.PageSize = 1000 $objSearcher.Filter = $strFilter $objSearcher.SearchScope = "Subtree" $colResults = $objSearcher.FindAll() foreach ($objResult in $colResults) { $givenname = $objResult.properties["givenname"] Write-Output $givenname $sn = $objResult.properties["sn"] Write-Output $sn Write-Output $objResult.properties["mail"] $objResult.properties["mail"] = "$($givenname).$($sn)@domain.com" #.... hier der smtp part }
-
nein, es kommt kein Fehler. Sieht aus wie wenn alles funktioniert, passieren tut allerdings nichts.
mit dem folgenden Skript wird die angezeigte Mailadresse geändert, dei SMTP-Zuordnung allerdings nicht.
$g=get-qadgroup "Saftnasen"
for ($members=0; $members -le $g.member.count-1 ;$members++)
{
$b=$g.member[$members]
$c=[ADSI]"LDAP://$b"
$primarySMTP=$c.mail
$email=$c.proxyAddresses
$first=[STRING]$c.givenname
$last=[STRING]$c.sn
$newaddress=[STRING]$first+"."+[STRING]$last+"@wir.de"
$already=get-qaduser -searchroot "wir.local/" -LdapFilter "(proxyaddres-ses=smtp:$newaddress)"
if ($already.dn -eq $null)
{
"$PrimarySMTP Gets a new Primary SMTP address of $newaddress"
} Else
{
$already.name + " already has this Address $primarySMTP"
}
$newaddress + " " + $c.mail
}
-
Hallo,
also jetzt hab ich die Sache schonmal soweit, dass die neue Adresse eigetragen wird.
Leider werden alle anderen Adressen gelöscht. Unter anderem stehen da unserse Faxnummern (also nicht SMTP-Einträge sondern FAX-Einträge).
Hier mein Ansatz:
$g=get-qadgroup "UnsereGruppe"
for ($members = 0; $members -le $g.member.count-1 ;$members++)
{
$b=$g.member[$members]
$c=[ADSI]"LDAP://$b"
$primarySMTP=$c.mail
$email=$c.proxyAddresses
$first=[STRING]$c.givenname
$last=[STRING]$c.sn
$newaddress=[STRING]$first+"."+[STRING]$last+"@beiuns.de"
$already=get-qaduser -searchroot "unsereDomain.local/" -LdapFilter "(proxyaddresses=SMTP:$newaddress)"
if ($already.dn -eq $null)
{
"$PrimarySMTP Gets a new Primary SMTP address of $newaddress"
for ($address = 0; $address -le $email.count-1 ;$address++)
{
$email[$address]
$text=$email[$address]
$up = $text.substring(0,5)
if ($up -ceq "SMTP:")
{
$low=$up.tolower()
$oldprimary = $low + $primarySMTP
"Primary Address $text has been Changed to $oldprimary"
$email[$address] = $oldprimary
$c.proxyaddresses = "SMTP:" + $newaddress
$c.mail=$newaddress
$c.setinfo()
}
Else
{
$already.name + " already has this Address $primarySMTP"
}
$newaddress + $oldprimary
}
"done"
}
}Vieleicht sieht jemand gleich den Fehler.
Danke
Armin
-
du hast:
$c.proxyaddresses = "SMTP:" + $newaddress
solltest aber
$c.proxyaddresses+="SMTP:"+$newaddress
bei deinem = ersetz du alle durch die neue mit += addest du eine weitere in den array....
hilft dir das?
- Als Antwort vorgeschlagen KloinerFeigling83 Sonntag, 23. Januar 2011 19:16
- Als Antwort markiert AucheinName Montag, 24. Januar 2011 15:37
-
Hallo KloinerFeigling83,
das war der Trick. Ich habe jetzt das Skript beisammen und lass mir über die Änderungen gleich ein Protokoll mitschreiben und die
Umlaute sowie ein paar Sonderzeichen ersetzen. Vielen Dank für Deine Mühe.
Hier die Lösung:
for ($members = 0; $members -le $g.member.count-1 ;$members++)
{
$b=$g.member[$members]
$c=[ADSI]"LDAP://$b"
$primarySMTP=$c.mail
$email=$c.proxyAddresses
$first=[STRING]$c.givenname
$last=[STRING]$c.sn
$anmelde = [STRING]$c.samaccountname
$newaddress=[STRING]$first+"."+[STRING]$last+"@beiuns.de"
if ($newaddress -match "ä") {$newaddress = $newaddress -replace "ä", "ae"}
if ($newaddress -match "ö") {$newaddress = $newaddress -replace "ö", "oe"}
if ($newaddress -match "ü") {$newaddress = $newaddress -replace "ü", "ue"}
if ($newaddress -match "ß") {$newaddress = $newaddress -replace "ß", "ss"}
if ($newaddress -match "é") {$newaddress = $newaddress -replace "é", "e"}
if ($newaddress -match "Dr. ") {$newaddress = $newaddress -replace "Dr. ", ""}
$already=get-qaduser -searchroot "unsereDomain.local/" -LdapFilter "(proxyaddresses=SMTP:$newaddress)"
$ausgabe = $anmelde + " " + $first + " " + $last + " " + $newaddress + " " + $primarySMTP |out-file c:\liste.txt -append
if ($already.dn -eq $null)
{
"$PrimarySMTP Gets a new Primary SMTP address of $newaddress"
for ($address = 0; $address -le 5 ;$address++)
{
$email[$address]
$text=$email[$address]
$up = $text.substring(0,5)
if ($up -ceq "SMTP:")
{
$low=$up.tolower()
$oldprimary = $low + $primarySMTP
"Primary Address $text has been Changed to $oldprimary"
$email[$address] = $oldprimary
$c.proxyaddresses += "SMTP:" + $newaddress
$c.mail=$newaddress
$c.setinfo()
}
Else
{
$already.name + " already has this Address $primarySMTP"
}
}
$newaddress + $oldprimary
"done"
}
}