Die Frage ist eigentlich ganz einfach: Gegeben ein NetBIOS-Benutzername (d.h. im Format netBIOSdomain\samAccountName, also etwa "contoso\andresen"), wie kann der UPN gefunden werden. Viele Antworten sind dann in der Form "einfache String-Ersetzung" "contoso\andresen" -> "andresen@contoso.de". Aber so einfach ist die Welt meistens nicht. (Als einfaches Beispiel könnte schon einmal sein, dass der UPN vielleicht eher "nils.andresen@contoso-weltweit.de" ist.)
Am "einfachsten" ist das vermutlich über TranslateNameA()
aus der Secur32.dll
gelöst. Oder?
Ich habe eine kleine Lösung geschrieben, die im Grunde mit reinen LDAP-Anfragen gegen das AD auskommt. Diese ist als PowerShell Cmdlet vorhanden:
Zusätzlich gibt es das auch in c#: