none
AD User Faxnummer auslesen und Neue hinzufügen RRS feed

  • Frage

  • Hallo,

    ich sollte die Faxnummern der benutzer auslesen. Diese sind in der Exchangeerweiterung E-Mail-Adressen und vom Typ "FAX". Unsere Durchwahl ist dreistellig.

    Da manche Faxserver die Empfängerkennung auf die komplette Nummer setzen, muss ich die alte auslesen und einen Eintrag "FAX" mit der dann 6-stelligen Nummer

    erstellen.

    Mein Ansatz war qaduser zu nehmen, hab aber keine Ahnung wie ich den Benutzer komplett (also mit den Exchangefeldern) auslesen kann.

    Gruß

    Armin

    Donnerstag, 21. Juli 2011 12:51

Antworten

  • Hallo,

    ich kann Vollzug melden.

    Hier die Lösung:

     $g=get-qadgroup "faxtest"
    for ($members = 0; $members -le $g.member.count-1 ;$members++)
    {
        $b=$g.member[$members]
        $c=[ADSI]"LDAP://$b"
        $primarySMTP=$c.mail
        $email=$c.proxyAddresses
        $newaddress="FAX:795796"

        for ($address = 0; $address -le 2 ;$address++)
        {
           
            $text=$email[$address]
            $up = $text.substring(0,4)
                if ($up -ceq "FAX:")
                {
                $c.proxyaddresses += "fax:795796"
                $c.setinfo()
           
                }
           }    
        "done"
       
    }

    Das Auslesen und abändern der Faxnummer ist hier nicht berücksichtigt, aber schon fertig.

    Vielen Dank

    Armin


    • Als Antwort markiert AucheinName Montag, 25. Juli 2011 13:48
    Montag, 25. Juli 2011 13:47

Alle Antworten

  • Hallo Armin,

     

    in Ermangelung an Fax-Adressen ein, von mir, nicht getester Ansatz in der Powershell:

    $category = "(&(objectclass=user)(objectcategory=user)(proxyaddresses=fax*))"
    $AD = [ADSI]"LDAP://DC=testdom,DC=intern"
    $properties = "samaccountname", "proxyaddresses"

    $search = New-Object System.DirectoryServices.DirectorySearcher($AD,$category)
    $search.PageSize = 1000

    foreach ($value in $properties) {
    $search.PropertiesToLoad.Add($value)
    }


    $result = $search.Findall()


    foreach ($val1 in $result) {
    write-host
    write-host
    write-host $val1.properties.samaccountname
    write-host =======================

    foreach ($val2 in $val1.properties.proxyaddresses) {
    if ($val2 -like "fax*") {
    write-host $val2
    }
    }

    }

    Quelle

    Viel Erfolg :)

    Donnerstag, 21. Juli 2011 14:42
  • Hi Armin,

    wenn du es mit dem ActiveRoles Mgmt von Quest machen willst, dann ist es doch kein Problem die User mit dem Fax AD Attribut auszulesen. Das würde dann wie folgt aussehen:

    $Ou = "OU=DeineOU,DC=Domain,DC=local"
    get-qaduser -SearchRoot $Ou  |select-Object Name,SamAccountName,fax | export-csv c:\Faxnummern.csv

    So hast du schon mal alle User, samit Faxnummern in einer CSV und kannst diese anpassen und wieder zurück importieren.
    Das Importieren wird dann etwas kniffliger:

    $Faxnummern = "c:\Faxnummern.csv"
    import-csv $Faxnummern | % {Get-QADuser -ldap "(SamAccountName = $($_.SamAccountName))" | set-qaduser Fax $_.Fax}

    Das Importieren ist ohne Gewähr. Also erstmal mit 2,3 Dummy Accounts ausprobieren, bevor du dich an die produktiven User ranmachst.

    Gruß

    Martin


    Donnerstag, 21. Juli 2011 14:48
  • Hi Bodo,

    gut gemeint, aber mit dem Output wird man als Admin nicht viel anfangen können ;-).

    Gruß

    Martin

    Donnerstag, 21. Juli 2011 15:08
  • Hi Martin,

     

    kannst Du das begründen? In dem Thread (als Quelle angegeben) wird doch von einem positiven Erfolg berichtet. Danach hatte ich mich gerichtet. Mich würde es schon interessieren, was da nicht passt im Output. Mache ich sonst heute Abend selber in meinem Testlab. Ansonsten sind dort ja noch mehr Lösungsansätze genannt :)

     

    LG Bodo

    Donnerstag, 21. Juli 2011 15:16
  • Es ist ja nichts gegen das Script als solches. Es funktiniert bestimmt auch. Das Problem ist nur, dass die Ausgabe dann innerhalb der PS bekomme, wenn ich das richtige lese. Wenn ich die Werte irgendwie weiter verwenden will, dann muss ich diese umständlich aus dem PS Fenster in einer andere Datei kopieren...naja, aber vielleicht ist das alles nicht schlimm und ich bin nur faul (auch gedanklich) ;-)

    LG,Martin

    Donnerstag, 21. Juli 2011 15:29
  • Hi Martin,

     

    Danke Dir für die Antwort. Ich hatte das Script ja selber nicht geschrieben und nur als Lösungsansatz gepostet. Daher ja auch die Quellenangabe. Selber konnte ich zu dem Zeitpunkt nicht wirklich testen oder selbst schreiben. Die Ausgabe des Ergebnisses kann man ja in eine Datei umleiten, das ist doch kein so großes Problem :)

    Aber mit Deinem Script dürfte es ja auf Anhieb funktionieren und Armin muss gar nicht mehr viel lesen :)

     

    LG Bodo

    Donnerstag, 21. Juli 2011 16:19
  •  

    Man kann die Sache auch deutlich vereinfachen und beschleunigen, indem man die dreistellige Nummer automatisiert um die weiteren drei Stellen (die ja wahrscheinlich immer gleich sind) erweitert und dann wieder einträgt.

    Vorausgesetzt, der Attribut-Name "fax" stimmt (mangels Exchange ungetestet):

     

    $ADsearcher = New-Object System.DirectoryServices.DirectorySearcher 
    $ADsearcher.Filter = "(objectCategory=person)"
    $allusers = $ADsearcher.findall()
    
    foreach ($user in $allusers) {
    
     $newfax = "123" + $user.properties.fax
     $userpath = $user.Properties.adspath
     
     $objUser = [ADSI]"$userpath"
     $objUser.put(“fax”, $newfax)
     $objUser.setInfo()
    
    }
    
    


    Wie immer erst innerhalb einer Testdomain oder mit Einzelusern testen.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".



    Donnerstag, 21. Juli 2011 17:47
    Moderator
  • Hallo,

    vielen Dank für Eure Antworten, leider bin ich bis jetzt noch nicht so richtig weitergekommen.

    Folfende Erfolge kann ich schon mal vermelden (mit Hilfe von Quest):

    get-qaDUser <User> -IncludeAllProperties -SerializeValues | Format-List -Property proxyAddresses

    Hiermit kann ich wenigstens schon mal die alte Faxnummer auslesen und die Neue zusammenbasteln.

    Was nur nicht funktionieren will ist das hinzufügen der neuen Faxnummer.

     

    Gruß

    Armin

    Montag, 25. Juli 2011 11:24
  • Hallo,

    ich kann Vollzug melden.

    Hier die Lösung:

     $g=get-qadgroup "faxtest"
    for ($members = 0; $members -le $g.member.count-1 ;$members++)
    {
        $b=$g.member[$members]
        $c=[ADSI]"LDAP://$b"
        $primarySMTP=$c.mail
        $email=$c.proxyAddresses
        $newaddress="FAX:795796"

        for ($address = 0; $address -le 2 ;$address++)
        {
           
            $text=$email[$address]
            $up = $text.substring(0,4)
                if ($up -ceq "FAX:")
                {
                $c.proxyaddresses += "fax:795796"
                $c.setinfo()
           
                }
           }    
        "done"
       
    }

    Das Auslesen und abändern der Faxnummer ist hier nicht berücksichtigt, aber schon fertig.

    Vielen Dank

    Armin


    • Als Antwort markiert AucheinName Montag, 25. Juli 2011 13:48
    Montag, 25. Juli 2011 13:47