গ্লোবাল ক্যাটালগ ব্যবহার করার সময় কোনও একক অ্যাকাউন্টের জন্য এডি তে কোনও এলডিএপি কোয়েরি নেটবায়োস ডোমেন নাম সরবরাহ করতে পারে?


11

AD এ একক ব্যবহারকারীর অ্যাকাউন্টের LDAP বৈশিষ্ট্যগুলি দেখতে ADSI সম্পাদনাটি ব্যবহার করছি। আমি ব্যবহারকারীর প্রিন্সিপাল নাম হিসাবে বৈশিষ্ট্যগুলি দেখতে পাচ্ছি, তবে আমি সম্পূর্ণরূপে যোগ্যতাসম্পন্ন ডোমেন নাম (এফকিউডিএন) বা নেটবিওস ডোমেন নামের জন্য একটিও দেখতে পাচ্ছি না।

আমরা একাধিক ডোমেনে এলডিএপ অ্যাক্সেস দিতে এবং একটি অ্যাপ্লিকেশনটিতে কনফিগারেশনের মাধ্যমে আমরা এলডিএপি বৈশিষ্ট্যগুলিকে অ্যাপ্লিকেশনটির মধ্যে ব্যবহারকারীর প্রোফাইল বৈশিষ্ট্যে ম্যাপ করতে গ্লোবাল ক্যাটালগ (জিসি) স্থাপন করব। টিপিক্যাল এডি সহ এফকিউডিএন এবং নেটবিওস ডোমেনের নাম সকল ব্যবহারকারীর জন্য একই, তবে জিসির সাথে জড়িত আমাদের এই অতিরিক্ত তথ্য প্রয়োজন। আমাদের সত্যিই কেবল নেটবিওস ডোমেন নাম প্রয়োজন (এফকিউডিএন যথেষ্ট ভাল নয়)।

সম্ভবত একটি এলডিএপি কোয়েরি রয়েছে যা এডি-তে আরও একটি শীর্ষ-স্তরের অবজেক্ট থেকে এই তথ্যের জন্য অনুরোধ করা যেতে পারে?

উত্তর:


5

আমি মনে করি আমি এটি বের করেছিলাম। এডিএসআই সম্পাদনা ব্যবহার করে আপনি কোনও বস্তুর বৈশিষ্ট্যগুলি দেখতে পারেন (যেমন, কোনও ব্যবহারকারী), কিন্তু ডিফল্টরূপে এটি "নির্মিত" বৈশিষ্ট্যগুলি ফিল্টার করে চলেছিল। বৈশিষ্ট্যগুলির পর্দার নীচে ডানদিকে ফিল্টার বোতামটি ব্যবহার করে আমি এই অতিরিক্ত বৈশিষ্ট্যগুলি প্রদর্শন করতে সক্ষম হয়েছি।

"এমএসডিএস-প্রিন্সিপালনাম" এর মান হিসাবে "[নেটবায়োস ডোমেন নাম] AMA [সামাউন্টাউন্টনাম]" রয়েছে বলে মনে হয়।

যদি আমি AD ব্যবহারকারী এবং কম্পিউটারে যাই এবং "ব্যবহারকারীর লগন নাম" "gwasington@test.kirkdev.local" থেকে "gwash2ington@test.kirk2dev.local" এ পরিবর্তন করি তবে এটি "ব্যবহারকারীর প্রিন্সিপাল নাম" বৈশিষ্ট্যটিকে প্রভাবিত করে তবে "এমএসডিএস- অধ্যক্ষনাম "বৈশিষ্ট্য। এটি আমার ক্ষেত্রে ভাল, কারণ আমার অন্যান্য সিস্টেম (শেয়ারপয়েন্ট) এই পরিবর্তনটিকেও স্বীকৃতি দেয় না।

যদি আমি এডি ব্যবহারকারী এবং কম্পিউটারে যাই এবং "ব্যবহারকারী লগন নাম (প্রাক উইন্ডোজ 2000)" কে "কিরকডিভি w গওয়াশিংটন" থেকে "কিরকডিভি \ জি 2 ওয়াশিংটন" তে পরিবর্তন করি (দ্রষ্টব্য, আমি প্রথম অংশটি পরিবর্তন করতে পারি না) এটি প্রভাবিত করে না "userPrincipalName" অ্যাট্রিবিউট কিন্তু নেই "MSDS-PrincipalName" অ্যাট্রিবিউট প্রভাবিত। আমি ঠিক এটি চাই কারণ আমার অন্যান্য সিস্টেম (শেয়ারপয়েন্ট) এই পরিবর্তনকে স্বীকৃতি দেয়।

পার্শ্ব দ্রষ্টব্য: আমি বলেছিলাম যে পয়েন্টটি শেয়ারপয়েন্টটি পরিবর্তনটি স্বীকৃতি দেয়, তবে এটি কেবলমাত্র যদি ব্যবহারকারী সেই শেয়ার পয়েন্ট সাইট সংগ্রহের আগে লগইন না করে থাকে। ব্যবহারকারী একবার শেয়ারপয়েন্ট সাইট সংগ্রহে লগইন করার পরে, ইউজারআইফোন টেবিলের টিপি_লগিন ক্ষেত্রটি "এমএসডিএস-অধ্যক্ষনাম" মানের সাথে সেট হয়ে যায় এবং এটি কোনও পরিবর্তন হয় বলে মনে হয় না। সুতরাং, জোর করে পরিবর্তন করার জন্য আমাকে একটি উপায় খুঁজে নিতে হতে পারে বা কেবল বলতে পারি যে এই দৃশ্যটি সমর্থিত নয়।


আমি যাচাই করিনি যে আমরা আসলে গ্লোবাল ক্যাটালগ থেকে "এমএসডিএস-অধ্যক্ষনাম" কোয়েরি করতে পারি। এটি পরবর্তী পদক্ষেপ হবে।
কર્ક লিমোহন

ঠিক আছে, আমি আমার উত্তরটিকে সঠিক হিসাবে চিহ্নিত করতে চলেছিলাম, কিন্তু এখন আমি দেখতে পাচ্ছি যে গ্লোবাল ক্যাটালগ এমএসডিএস-অধ্যক্ষনামকে জিজ্ঞাসা করতে পারে না। উঘ, এখনও নিশ্চিত না যে আমরা কীভাবে কিছু অনুমান করা ছাড়াই সেখান থেকে নেটবিওস ডোমেন নামটি বের করব (যেমন এটি এফকিউএনএন এর প্রথম অংশ)।
কर्क লিমোহন

আমার পার্শ্ব নোটটি সম্পর্কিত, লগইন পরিবর্তনকে স্বীকৃতি দেওয়ার জন্য শেয়ারপয়েন্ট পেতে সহায়তা করতে সার্ভারফল্ট / প্রশ্নগুলি / ২৩4526২//২ দেখুন ।
কर्क লিমোহন

এটাকেই বলা হয় একটি বিল্ডড অ্যাট্রিবিউট বলা হয় - এটি যখন কোনও বস্তুর জন্য অনুরোধ করা হয় তখন এটি চাহিদা অনুযায়ী গণনা করা হয়। আপনি এটির কারণে কোনও ক্যোয়ারিতে ফিল্টার করতে পারবেন না।
ব্রায়ান ডেসমন্ড

এই তথ্যের জন্য ধন্যবাদ - এসকিউএল সার্ভার থেকে এলডিএপি মাধ্যমে জিজ্ঞাসা করার সময় আমার পক্ষে খুব কার্যকর হয়েছিল।
ইয়ান ইয়েটস

3

আপনার শেষ প্রশ্নের উত্তর দেওয়ার জন্য আপনার কনফিগারেশন বিভাগ এবং তারপরে এডিএসআইডিডিটরে ডিরেক্টরি বিভাগগুলি পরীক্ষা করে নেটবায়সের নামটি ম্যানুয়ালি যাচাই করতে সক্ষম হওয়া উচিত:

CN=MYNETBIOSNAME,CN=Partitions,CN=Configuration,DC=mydomain,DC=internal

এটি উভয় nameএবং netBIOSNameবৈশিষ্ট্য আছে। অন্যথায় আমার মনে হয় স্কুইলম্যানের পরামর্শ অনুসারে আপনাকে এটি এফকিডিএন / ডিএন থেকে পেতে হবে।


ধন্যবাদ @ বয়মার্স। আমার ডোমেনের শীর্ষ স্তরে "সিএন = কনফিগারেশন" সন্ধান করতে আমার কিছুটা সমস্যা হয়েছিল। আমি কিছুটা হাঁপিয়েছি এবং "কনফিগারেশন" বা "ডিরেক্টরি পার্টিশন" খুঁজে পেলাম না। যাইহোক, আমি মনে করি আমার এটি খুঁজে পেতে পারে (উত্তর পোস্ট করার বিষয়ে)।
কર્ક লিমোহন

ঠিক আছে, আমি ঠিক কীভাবে সিএন = কনফিগারেশনে পৌঁছাতে পারি তা বুঝতে পেরেছি (দুঃখিত, আমি এলডিএপি এবং এডিএসআই সম্পাদনার সাথে প্রায় খেলে 6 বছর কেটে গেছে)। @ বয়মার্স, আপনি কী বলছেন তা আমি দেখতে পাচ্ছি। দুর্ভাগ্যক্রমে, নেটবিওস ডোমেন নামটি জিজ্ঞাসা করার জন্য, এটি সিএন = পার্টিশন, সিএন = কনফিগারেশনের অধীনে সমস্ত বস্তুর মধ্য দিয়ে লুপ করা দরকার বলে মনে হচ্ছে এবং এটির জন্য "নেটওয়াইওএসনাম" বৈশিষ্ট্য আছে কিনা তা প্রত্যেকে দেখতে হবে। হতে পারে এমন একটি কোয়েরি যা বলছে আমাকে সমস্ত ক্রসরেফ অবজেক্ট দাও যেখানে নেটবিআইওএসনেম এ্যাট্রিবিউটটি নাল নয়, ট্রিকটি করবে। কোডে এটি করা তুলনামূলক সহজ বলে মনে হয় তবে কনফিগারেশনের মাধ্যমে আমাকে এটি করতে হবে। :-(
কर्क লিমোহন

এখানে এমন একটি পৃষ্ঠা রয়েছে যা কীভাবে নেটবায়োসনামটি জিজ্ঞাসা করবে তা আলোচনা করে। তারা কোড ব্যবহার করছে, যদিও। আমি সন্দেহ করি যে এটি আমার পক্ষে কার্যকর হবে না। geekswithblogs.net/Tarq/archive/2009/07/30/133813.aspx
কার্ক লিমনহোব

তবে এটি অবস্থানটি ব্যাখ্যা করে "এডি পার্টিশন নামকরণের ধারকটিতে নেটবায়োসের নাম সংরক্ষণ করে যা কনফিগারেশন নামকরণ ধারকটির ভিতরে সংরক্ষণ করা হয়।"
বয়মারস

এটি তথ্যের একমাত্র অনুমোদনযোগ্য উত্স। বিশেষত, ক্রসরেফ অবজেক্টটি উল্লেখ করা হয়েছে।
ব্রায়ান ডেসমন্ড

3

একটি আবেদন জন্য? মাইক্রোসফ্ট। নেট এ এটি মোটামুটি সোজা করে তোলে makes এটি আপনাকে ডোমেন নেটবিওসের নামের একটি তালিকা সরবরাহ করবে যা আপনি ডোমেন ডিএন / ডিএনএস / নেটবিওসের নাম বা ক্রস-রেফারেন্সিং অভিধানের সাহায্যে কাস্টম অবজেক্টগুলির একটি তালিকা তৈরি করতে ব্যবহার করতে পারেন।

এছাড়াও, গ্লোবাল ক্যাটালগটিতে কোনও অ্যাট্রিবিউট উপলব্ধ কিনা তা নির্ধারণ করে (অন্য আরেকটি) বৈশিষ্ট্যটি হ'ল মেমবারঅফ পার্টিয়ালঅ্যাট্রিবিউটসেট। মাইক্রোসফ্ট সিসিন্টার্নালস এডি এক্সপ্লোরার ব্যবহার করে আপনি কোনও ডোমেনে স্কিমা ধারকটি অনুসন্ধান করতে পারেন এবং একটি জিসি ক্যোয়ারির জন্য উপলব্ধ সমস্ত বৈশিষ্ট্যগুলি দেখতে মেমবারঅফপার্টিয়ালঅ্যাট্রিবিউটসেট = সত্য রয়েছে এমন কোনও বস্তুর সন্ধান করতে পারেন।

using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;

private void GetNetbiosNamesTest()
{
    DomainCollection domains = Forest.GetCurrentForest().Domains;
    foreach (Domain domain in domains)
    {
        Console.WriteLine("Domain Netbios name: {0}", this.GetDomainNetBiosName(domain));
    }
}

private string GetDomainNetBiosName(Domain domain)
{
    ForestRootDirectoryEntry = Forest.GetCurrentForest().RootDomain.GetDirectoryEntry();
    string forestConfigurationBindPath = String.Format("LDAP://CN=Partitions,CN=Configuration,{0}", ForestRootDirectoryEntry.Properties["distinguishedName"].Value);
    ForestRootConfigurationDirectoryEntry = new DirectoryEntry(forestConfigurationBindPath);

    string netBiosName = String.Empty;

    using (DirectorySearcher directorySearcher = new DirectorySearcher(ForestRootConfigurationDirectoryEntry))
    {
        directorySearcher.Filter = String.Format("(&(nETBIOSName=*)(dnsRoot={0}))", domain.Name);
        directorySearcher.PropertiesToLoad.AddRange(new String[] { "dnsRoot", "nETBIOSName" });
        var result = directorySearcher.FindOne();

        if ((result != null) && (result.Properties.Contains("nETBIOSName"))) netBiosName = result.Properties["nETBIOSName"][0].ToString();
    }
    return netBiosName;
}

উত্তরের জন্য ধন্যবাদ, তবে আমার এটি উইন্ডোজবিহীন মেশিন থেকে চালানো দরকার। তবে প্রয়োজন হলে অনুমান করি আমি .NET- এ নিজের ওয়েব সার্ভিস তৈরি করতে এবং অন্যান্য মেশিনটিকে এই তথ্য সরবরাহ করতে পারি provide এটি একটি ফ্যালব্যাক পদ্ধতির হতে পারে।
কर्क লিমোহন

2
এটিও সহজবোধ্য হওয়া উচিত। আপনার বেস ডিএনকে "সিএন = পার্টিশন, সিএন = কনফিগারেশন" + ডোমেনের ডিজেস্টডনাম অ্যাট্রিবিউটের বেস ডিএন এবং অনুসন্ধান ফিল্টারকে (& (nETBIOSName = *) (ডিএনএসরুট = <ডিএনএসের নাম AD ডোমেন>)) এ সেট করুন। আপনি যদি dns নামের পরিবর্তে ডোমেনের dn প্রত্যয়টির সাথে মেলে করতে চান তবে dnsRoot এর পরিবর্তে ncName বৈশিষ্ট্যটি অনুসন্ধান করতে পারেন।
গ্রেগ অ্যাস্কিউ

1

আপনাকে এটি dn(ডিগ্রিযুক্ত নাম) বা AdsDSPathবৈশিষ্ট্যগুলির মধ্যে পার্স করতে হবে । "DC="এই বৈশিষ্ট্যগুলির সাথে ডোমেন নাম সত্ত্বাগুলি উপসর্গযুক্ত । বামদিকের DC=আপনার NetBIOS ডোমেন নাম থাকতে হবে।

উদাহরণ স্বরূপ: cn=myuser,ou=users,dc=mydomain,dc=mycompany,dc=com

mydomain নেটবায়োস ডোমেন নাম।

সম্পাদনা:
ব্রায়ান ডেসমন্ড যেমন উল্লেখ করেছেন, আসল নেটবায়োসের নাম সন্ধানের পক্ষে এটি অনুমোদিত কর্তৃত্বের উপায় নয়, এটি কেবল কাকতালীয় ঘটনা যে তারা সাধারণত সম্পর্কযুক্ত। অনুমোদনের জন্য বয়মার্সের উত্তর দেখুন।


কোনও fqdn বা DN স্ট্রিংয়ের মানগুলি ব্যবহার করার সময় 15 অক্ষরের নেটবিওস সীমাটির জন্য দেখুন, আমি এমন অনেকগুলি ডোমেন দেখিনি যা দীর্ঘকাল ধরে স্ট্রিং ব্যবহার করে :)
বয়মারস

ধন্যবাদ @squillman, কিন্তু যখন আমি এই ডোমেইনের নির্মিত আমি ইচ্ছাপূর্বক তৈরি NetBIOS ডোমেন নাম না FQDN প্রথম অংশ মাত্র, কারণ এটি সম্ভব ছিল হতে হবে এবং আমি আমার কোড একাধিক পরিবেশের মধ্যে কাজ করতে হয় সীমানা চেক করতে হবে। সুতরাং আমার ক্ষেত্রে এফকিউডিএন হ'ল টেস্ট.কির্কদেব.লোকাল (উদাহরণস্বরূপ ব্যবহারকারী ডিএনএন হ'ল "সিএন = জর্জ ওয়াশিংটন, সিএন = ব্যবহারকারী, ডিসি = পরীক্ষা, ডিসি = কিরকদেব, ডিসি = স্থানীয়") তবে নেটবিওস ডোমেনের নাম কিরকদেব।
কર્ક লিমোহন

আপনি যদি উইন্ডোজ ব্যবহার করে dsquery computer OU=OU,OU=You,OU=Need,DC=local.domain -o rdnথাকেন তবে কোটেশন চিহ্নগুলিতে নেটবিআইওএস নামের সাথে যা চান তা আপনাকে দেয়। যেহেতু এটি আপেক্ষিক, আপনার পুরো পথ পাওয়ার প্রয়োজন হবে না। এটি যদিও ওপিকে সাহায্য করবে কিনা তা নিশ্চিত নয়; তিনি এলডিএপি সম্পর্কে জিজ্ঞাসা করেছিলেন, সুতরাং এটি খাঁটি এলডিএপি উত্তর নয়।
songei2f

@ আলহারাকা মন্তব্যের জন্য ধন্যবাদ, তবে আমরা একটি নন-এমএস কম্পিউটার থেকে AD অনুসন্ধান করছি। আমরা সম্ভাব্যভাবে এটি মোকাবেলা করতে পারি, তবে আমরা সত্যিই এটি একটি এলডিএপি ক্যোয়ারির অংশ হতে চাই। এটি প্রদর্শিত হয় যে dsquery একটি উইন্ডোজ সার্ভার কমান্ড লাইন সরঞ্জাম।
কર્ક লিমোহন

1
দুঃখিত তবে এটি ভুল। শীর্ষ ডোমেন উপাদান (যেমন: ডিসি = মাইডোমেন) এবং ডোমেনের নেটবিআইওএস নামের মধ্যে একেবারে কোনও সম্পর্ক নেই। এটি কেবল একটি সাধারণ কাকতালীয় ঘটনা যা তারা সম্মত ছিল।
ব্রায়ান ডেসমন্ড

0

আপনার যদি ব্যবহারকারীর প্রিন্সিপাল নাম বা ডিএন থাকে তবে মানগুলি অনুবাদ করতে আপনি অ্যাক্টিভডিএস সিওএম লাইব্রেরি ব্যবহার করতে পারেন। নীচে ইউটিউর প্রিন্সিপালনামটি এনটি 4 (নেটবিওস) নামে অনুবাদ করার উদাহরণ রয়েছে।

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ActiveDs;

namespace Foo.Repository.AdUserProfile
{
    public class ADUserProfileValueTranslate
    {
        public static string ConvertUserPrincipalNameToNetBiosName(string userPrincipleName)
        {
            NameTranslate nameTranslate = new NameTranslate();
            nameTranslate.Set((int)ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_USER_PRINCIPAL_NAME, userPrincipleName);
            return nameTranslate.Get((int) ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4);
        }
    }
}

উত্তরের জন্য ধন্যবাদ, তবে আমার এটি একটি উইন্ডোজ নন মেশিন থেকে এবং আদর্শভাবে একটি এলডিএপি ক্যোয়ারির মাধ্যমে করা দরকার।
কर्क লিমনোহন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.