Benutzer mit den meisten Antworten
AD User Faxnummer auslesen und Neue hinzufügen

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
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
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
}
}
}Viel Erfolg :)
-
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.csvSo 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
-
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
-
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
-
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
-
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".
-
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
-
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