none
E-Mail Adressen hinzufügen RRS feed

  • 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

     

    Donnerstag, 13. Januar 2011 09:03

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?

    Freitag, 21. Januar 2011 19:13

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
          
           }  
    Donnerstag, 13. Januar 2011 21:44
  • Vielen Dank,

    komm aber erst am Montag zum testen.

    Gruß

    Armin

    Freitag, 14. Januar 2011 08:50
  • Hallo Armin

    hat es geklappt?

    Gruß
    Andrei

    Dienstag, 18. Januar 2011 08:20
    Moderator
  • Hallo Andrei,

    leider nicht. Auslesen und den neuen Namen zusammenbasteln funktioniert. Zurückschreiben kann ich die Adresse nicht.

    Gruß

    Armin

    Dienstag, 18. Januar 2011 14:09
  • kommt ein fehler?
    Dienstag, 18. Januar 2011 15:04
  • 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
    }


    Mittwoch, 19. Januar 2011 09:11
  • für die bestehende must bei der SMTP groß geschrieben ist musst du sie klein machen und für die neue primäre  SMTP groß

    siehe artikel im 1. post...  da musst du ein wenig von der logik raussuchen...

    Mittwoch, 19. Januar 2011 14:43
  • 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

    Donnerstag, 20. Januar 2011 15:45
  • 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?

    Freitag, 21. Januar 2011 19:13
  • 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:

     

    $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
        $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"
        }
    }
    Montag, 24. Januar 2011 15:37