मैं सक्रिय निर्देशिका पूछताछ करके अपने स्थानीय कंप्यूटर के objectGuid
को खोजने के लिए सी # का उपयोग कर रहा हूं। , मैं वर्तमान में एक DirectorySearcher
उपयोग कर रहा हूँ, यह खोज रूट के रूप में एक (hardcoded) पथ से गुजर रहा है, और फिर कंप्यूटर का नाम के आधार पर फ़िल्टर ऐसा करने के लिए:क्या एडी में स्थानीय कंप्यूटर को अपने डोमेन को हार्डकोड किए बिना खोजना संभव है?
string adRootPath = @"LDAP://OU=foo,DC=bar,DC=baz,DC=com";
DirectoryEntry adRoot = new DirectoryEntry(adRootPath);
DirectorySearcher searcher = new DirectorySearcher(adRoot);
searcher.Filter = @"(&(objectCategory=Computer)(CN=" + Environment.MachineName + "))";
मैं खोज जड़ को हार्डकोड नहीं करना चाहता है, और यह सोच रहा था कि कोई बेहतर तरीका है या नहीं। मैंने बस एक खाली खोज रूट का उपयोग करने के बारे में सोचा, लेकिन मुझे चिंता थी कि कंप्यूटर नाम हमेशा अलग-अलग डोमेन में अद्वितीय नहीं हो सकते हैं।
क्या कोई बेहतर तरीका है? आप पहले से ही नहीं है, तो
// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// define a "query-by-example" principal - here, we search for a ComputerPrincipal
// and with the name of "MyPC"
ComputerPrincipal cp = new ComputerPrincipal(ctx);
cp.Name = "MyPC";
// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(cp);
// find all matches
foreach(var found in srch.FindAll())
{
// do whatever here - "found" is of type "Principal" - it could be user, group, computer.....
}
- बिल्कुल:
धन्यवाद। FindAll() को केवल एक परिणाम (यह स्थानीय कंप्यूटर होने) की गारंटी दी जाएगी, भले ही विभिन्न ओयू में डुप्लिकेट कंप्यूटर नाम हों? – Eric
@Eric: नहीं, 'FindAll()' ** ** सभी ** अवसरों को मिलेगा जो निर्दिष्ट मानदंडों से मेल खाते हैं (जैसा कि इसका नाम इंगित करता है)। फिर आप निरीक्षण कर सकते हैं उदा। 'कंप्यूटर प्रिंसिपल' पर 'विशिष्ट नाम 'संपत्ति यह देखने के लिए कि कंप्यूटर के एडी पेड़ में कहां रहता है। एक'FindOne() 'विधि भी है जो पहला मैच लौटाती है - लेकिन आपको शायद यह नहीं पता कि आपके मानदंडों से मेल खाने वाले अन्य कंप्यूटर हैं। –
आह मैं देखता हूँ। खैर, मैं वास्तव में * स्थानीय * कंप्यूटर की एडी जानकारी खोजने की कोशिश कर रहा हूं। ऐसा लगता है कि इस विधि के साथ, मेरे पास मेरे कंप्यूटर में कौन सा कंप्यूटर स्थानीय कंप्यूटर है यह अंतर करने का कोई तरीका नहीं होगा। – Eric