क्या यह संभव है? कोड नमूना अच्छा होगा।सक्रिय निर्देशिका से "कंपनी" और "विभाग" कैसे प्राप्त करें उपयोगकर्ताप्रणाली ऑब्जेक्ट दिया?
उत्तर
दरअसल, सवाल था कि कैसे एक .NET 3.5 (System.DirectoryServices.AccountManagement.)UserPrincipal
के लिए गुणों के दो पाने के लिए एक userPrincipalName
नहीं दिया -object।
यहाँ एक extension method साथ कि कैसे करना है:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
namespace MyExtensions
{
public static class AccountManagementExtensions
{
public static String GetProperty(this Principal principal, String property)
{
DirectoryEntry directoryEntry = principal.GetUnderlyingObject() as DirectoryEntry;
if (directoryEntry.Properties.Contains(property))
return directoryEntry.Properties[property].Value.ToString();
else
return String.Empty;
}
public static String GetCompany(this Principal principal)
{
return principal.GetProperty("company");
}
public static String GetDepartment(this Principal principal)
{
return principal.GetProperty("department");
}
}
}
ऊपर कोड ज्यादातर मामलों में काम करेंगे (है कि यह मानक पाठ के लिए काम करेगा/स्ट्रिंग एकल मूल्य सक्रिय निर्देशिका विशेषताएँ)। आपको कोड को संशोधित करने और अपने पर्यावरण के लिए अधिक त्रुटि हैंडलिंग कोड जोड़ने की आवश्यकता होगी।
आप द्वारा इसका इस्तेमाल अपनी परियोजना के लिए "विस्तार कक्षा" जोड़ने और फिर आप यह कर सकते हैं:
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(domain, "youruser");
Console.WriteLine(userPrincipal.GetCompany());
Console.WriteLine(userPrincipal.GetDepartment());
Console.WriteLine(userPrincipal.GetProperty("userAccountControl"));
(BTW, यह एक्सटेंशन गुण के लिए एक महान प्रयोग हो गया होता - too bad it won't be in C# 4 either।)
ऐसा कुछ ऐसा करना चाहिए यदि उपयोगकर्ता के लिए विभाग और कंपनी गुण मौजूद हैं।
DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://dnsNameOfYourDC.my.company.com";
DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.PropertiesToLoad.Add("department");
deSearch.PropertiesToLoad.Add("company");
deSearch.SearchScope = SearchScope.Subtree;
deSearch.Filter = "(&(objectClass=User)(userPrincipalName=MyPrincipalName))";
SearchResultCollection results = deSearch.FindAll():
foreach (SearchResult result in results)
{
ResultPropertyCollection props = result.Properties;
foreach (string propName in props.PropertyNames)
{
//Loop properties and pick out company,department
string tmp = (string)props[propName][0];
}
}
एक छोटा नाइटपिक: एलडीएपी फ़िल्टर में, मैं ऑब्जेक्ट क्लास के बजाय "ऑब्जेक्ट श्रेणी" का उपयोग करना पसंद करूंगा। क्यूं कर? ऑब्जेक्ट श्रेणी एकल मूल्यवान है, और यह सक्रिय निर्देशिका में अनुक्रमित है, इस प्रकार खोजकर्ता ऑब्जेक्ट श्रेणी का उपयोग कर तेज़ी से है। –
दरअसल, ऑब्जेक्ट क्लास-विशेषता डिफ़ॉल्ट रूप से अनुक्रमित होती है यदि आप Windows Server 2008 पर हैं। यह नहीं है कि आप Windows Server 2000 या 2003 पर हैं। –
यह एक अच्छा समाधान है और धन्यवाद। मुझे नीचे दिए गए एक को सही के रूप में चिह्नित करना था, हालांकि मैं सिस्टम से निपट रहा हूं। डायरेक्टरी सर्विसेज। खाता प्रबंधन। उपयोगकर्ता प्रिंसिपल विशेष रूप से। – wgpubs
- 1. सक्रिय निर्देशिका से उपयोगकर्ता की समूह सदस्यता प्राप्त करें
- 2. नकली सक्रिय निर्देशिका कैसे करें?
- 3. सक्रिय निर्देशिका
- 4. सक्रिय निर्देशिका
- 5. सक्रिय निर्देशिका
- 6. एलडीएपी: सक्रिय निर्देशिका में सभी समूह कैसे प्राप्त करें?
- 7. सक्रिय निर्देशिका
- 8. सी # सक्रिय निर्देशिका: उपयोगकर्ता का डोमेन नाम प्राप्त करें?
- 9. सक्रिय निर्देशिका से सभी प्रत्यक्ष रिपोर्ट प्राप्त करना
- 10. PHP में लिंक्डइन कंपनी यूआरएल से कंपनी आईडी कैसे प्राप्त करें?
- 11. सक्रिय निर्देशिका
- 12. सक्रिय निर्देशिका
- 13. सक्रिय निर्देशिका
- 14. सक्रिय निर्देशिका
- 15. सक्रिय निर्देशिका
- 16. सक्रिय निर्देशिका से SAMAccountName को पुनर्प्राप्त कैसे करें
- 17. सक्रिय निर्देशिका सहायक वर्ग
- 18. सक्रिय निर्देशिका
- 19. सभी उपयोगकर्ताओं को सक्रिय निर्देशिका से शेयरपॉइंट
- 20. सक्रिय निर्देशिका उपयोगकर्ता
- 21. सक्रिय निर्देशिका PartialResultException
- 22. सक्रिय निर्देशिका नेस्टेड समूह
- 23. सक्रिय निर्देशिका नीति
- 24. अंतिम सक्रिय विंडो प्राप्त करें: पिछली सक्रिय विंडो प्राप्त करें
- 25. सी में निर्देशिका निर्देशिका कैसे प्राप्त करें?
- 26. आईफोन संपर्क - कंपनी का नाम प्राप्त करें
- 27. सी # में एक प्रदर्शन नाम से सक्रिय निर्देशिका में उपयोगकर्ता नाम कैसे प्राप्त करें?
- 28. वर्तमान निर्देशिका कैसे प्राप्त करें?
- 29. सार्वजनिक निर्देशिका कैसे प्राप्त करें?
- 30. RuntimePropertyInfo से ऑब्जेक्ट कैसे प्राप्त करें?
इसके अलावा आप प्रिंसिपल एक्सटेंशंस (http://msdn.microsoft.com/en-us/library/bb552835.aspx) पर विशिष्ट प्रिंसिपल बनाने के लिए कस्टम प्रिंसिपल बनाने के लिए देख सकते हैं। –
आप "सेट" विधि और मूल्य को सहेजने के बारे में कैसे जाएंगे? – JustinStolle
@PerNoalt कोड के लिए धन्यवाद लेकिन क्या कोई संपत्ति प्राप्त करने के लिए कोई छोटा रास्ता नहीं है उदाहरण के लिए: उपयोगकर्ता प्रिंसिपल से सीधे एक्सटेंशन का उपयोग किए बिना विभाग? – Rama